人员管理
This commit is contained in:
@@ -529,7 +529,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
private String electronicCardNumberTime;
|
private String electronicCardNumberTime;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("个人身份")
|
@Comment("个人身份(费用类型)")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
private String personalStatus;
|
private String personalStatus;
|
||||||
|
|
||||||
@@ -657,6 +657,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
private String administrativeLevel;
|
private String administrativeLevel;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("福利享受截止日期")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
private String welfareStopDate;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("专业技术级别")
|
@Comment("专业技术级别")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.task.job.sourcechange;
|
package io.v.nutz.task.job.sourcechange;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import io.v.nutz.base.utils.MsgApi;
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||||
@@ -7,6 +8,7 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.Lang;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.quartz.Job;
|
import org.quartz.Job;
|
||||||
import org.quartz.JobExecutionContext;
|
import org.quartz.JobExecutionContext;
|
||||||
@@ -15,6 +17,7 @@ import org.quartz.JobExecutionException;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@IocBean
|
@IocBean
|
||||||
public class SourceChangeJob implements Job {
|
public class SourceChangeJob implements Job {
|
||||||
@@ -25,52 +28,36 @@ public class SourceChangeJob implements Job {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
// 获取当前日期
|
// 今天的日期,yyyy-MM-dd格式
|
||||||
LocalDate currentDate = LocalDate.now();
|
String today = DateUtil.today();
|
||||||
|
// 查询出今天的变更记录
|
||||||
|
List<SourceChangeMiddleTable> list = dao.query(SourceChangeMiddleTable.class,
|
||||||
|
Cnd.where("DATE_FORMAT(changeTime, '%Y-%m-%d')", "=", today));
|
||||||
|
// 抽出所有的变更类型
|
||||||
|
List<String> changeTypeList = list.stream().map(SourceChangeMiddleTable::getChangeTypes).flatMap(List::stream).toList();
|
||||||
|
// 各类型的对应list,例如 NEW -> List<NEW>
|
||||||
|
Map<String, List<String>> collect = changeTypeList.stream().collect(Collectors.groupingBy(item -> item));
|
||||||
|
|
||||||
// 定义日期格式
|
// 获取变更的枚举
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
Map<String, String> map = Arrays.stream(MemberChangeType.values())
|
||||||
|
.collect(Collectors.toMap(MemberChangeType::getType, MemberChangeType::getChangeTypeName));
|
||||||
|
|
||||||
// 格式化日期
|
// 更新的变更类型的人数
|
||||||
String formattedDate = currentDate.format(formatter);
|
List<NutMap> updateDataList = new ArrayList<>();
|
||||||
|
collect.forEach((key, value) -> {
|
||||||
List<SourceChangeMiddleTable> list = dao.query(SourceChangeMiddleTable.class, Cnd.NEW().and("changeTime", "like", formattedDate));
|
if (map.containsKey(key)) {
|
||||||
|
updateDataList.add(NutMap.NEW().addv("changeType", map.get(key)).addv("count", value.size()));
|
||||||
// 统计各类型人数
|
|
||||||
Map<MemberChangeType, Integer> countMap = new HashMap<>();
|
|
||||||
for (MemberChangeType type : MemberChangeType.values()) {
|
|
||||||
countMap.put(type, 0);
|
|
||||||
}
|
|
||||||
for (SourceChangeMiddleTable item : list) {
|
|
||||||
for (MemberChangeType type : MemberChangeType.values()) {
|
|
||||||
if (item.getChangeTypes().contains(type.getType())) {
|
|
||||||
countMap.put(type, countMap.get(type) + 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
StringBuffer msg = new StringBuffer();
|
if (Lang.isNotEmpty(updateDataList)) {
|
||||||
msg.append("日期:"+formattedDate);
|
// 收集成发送短信内容
|
||||||
appendIfPositive(msg, "新入职", countMap.get(MemberChangeType.NEW));
|
String updateDataStr = updateDataList.stream().map(v -> {
|
||||||
appendIfPositive(msg, "在职", countMap.get(MemberChangeType.WORK));
|
return v.getString("changeType") + ":" + v.getInt("count") + "人";
|
||||||
appendIfPositive(msg, "离校", countMap.get(MemberChangeType.LEAVE_SCHOOL));
|
}).collect(Collectors.joining(","));
|
||||||
appendIfPositive(msg, "退休", countMap.get(MemberChangeType.RETIRE));
|
String content = "智慧工会" + today + "数据更新汇总:" + updateDataStr;
|
||||||
appendIfPositive(msg, "辞职", countMap.get(MemberChangeType.RESIGN));
|
|
||||||
appendIfPositive(msg, "调出", countMap.get(MemberChangeType.OUT));
|
|
||||||
appendIfPositive(msg, "离职", countMap.get(MemberChangeType.LEAVE_OFFICE));
|
|
||||||
appendIfPositive(msg, "其它", countMap.get(MemberChangeType.OTHER));
|
|
||||||
appendIfPositive(msg, "单位异动", countMap.get(MemberChangeType.UNIT_CHANGE));
|
|
||||||
appendIfPositive(msg, "基本信息异动", countMap.get(MemberChangeType.BASIC_CHANGE));
|
|
||||||
|
|
||||||
List<String> channels=new ArrayList<>();
|
// msgApi.sendMsg(List.of("DingTalk"), "2004000022", 1, "数据更新汇总", content, "", "");
|
||||||
channels.add("DingTalk");
|
|
||||||
|
|
||||||
//msgApi.sendMsg(channels, "", 1,"0",msg.toString(),null,null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void appendIfPositive(StringBuffer msg, String label, Integer count) {
|
|
||||||
if (count > 0) {
|
|
||||||
msg.append("," + label + ":" + count + "人");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+86
-43
@@ -85,36 +85,38 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
|
|||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void renewUserState() {
|
public void renewUserState() {
|
||||||
//在职状态
|
//在职状态
|
||||||
// Sql userStateSql = Sqls.create("select userState from `user` where userState is not null and userState !='' group by userState");
|
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<String> userStates = sysDictService.listMap(userStateSql).stream().map(v -> v.getString("userState")).collect(Collectors.toList());
|
||||||
// List<Sys_dict> userStateList = sysDictService.getSubListByCode("UserState");
|
List<Sys_dict> userStateList = sysDictService.getSubListByCode("USER_STATE");
|
||||||
//
|
|
||||||
// //dict中的在职状态,在user表中没有,这一部分删除
|
//dict中的在职状态,在user表中没有,这一部分删除
|
||||||
// List<Sys_dict> deleteUserState = userStateList.stream().filter(v -> !userStates.contains(v.getName())).collect(Collectors.toList());
|
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());
|
List<String> deleteUserStateIds = deleteUserState.stream().map(Sys_dict::getId).collect(Collectors.toList());
|
||||||
//
|
|
||||||
// if (Lang.isNotEmpty(deleteUserStateIds)) {
|
if (Lang.isNotEmpty(deleteUserStateIds)) {
|
||||||
// sysDictService.delete(deleteUserStateIds);
|
sysDictService.delete(deleteUserStateIds);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// //获取删除dict后的在职状态
|
//获取删除dict后的在职状态
|
||||||
// List<Sys_dict> deleteRenewUserStateList = sysDictService.getSubListByCode("UserState");
|
List<Sys_dict> deleteRenewUserStateList = sysDictService.getSubListByCode("USER_STATE");
|
||||||
// Sys_dict userState = deleteRenewUserStateList.stream().findFirst().orElse(null);
|
Sys_dict userState = dao().fetch(Sys_dict.class, Cnd.where("code", "=", "USER_STATE"));
|
||||||
// assert userState != null;
|
|
||||||
// //获取在职状态名
|
if (Lang.isNotEmpty(userState)) {
|
||||||
// List<String> dictNameList = deleteRenewUserStateList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
//获取在职状态名
|
||||||
// //如果user表中有在职状态, 删除userState后的dict表中没有,就需要新增
|
List<String> dictNameList = deleteRenewUserStateList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
||||||
// List<String> insertUserStateList = userStates.stream().filter(v -> !dictNameList.contains(v)).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)) {
|
insertUserStateList = insertUserStateList.stream().distinct().collect(Collectors.toList());
|
||||||
// for (String item : insertUserStateList) {
|
if (Lang.isNotEmpty(insertUserStateList)) {
|
||||||
// Sys_dict dict = new Sys_dict();
|
for (String item : insertUserStateList) {
|
||||||
// dict.setCode(item);
|
Sys_dict dict = new Sys_dict();
|
||||||
// dict.setName(item);
|
dict.setCode(item);
|
||||||
// sysDictService.save(dict, userState.getParentId());
|
dict.setName(item);
|
||||||
// }
|
sysDictService.save(dict, userState.getId());
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//人员类型
|
//人员类型
|
||||||
Sql personTypeSql = Sqls.create("select personType from `user` where personType is not null and personType !='' group by personType");
|
Sql personTypeSql = Sqls.create("select personType from `user` where personType is not null and personType !='' group by personType");
|
||||||
@@ -134,23 +136,64 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
|
|||||||
|
|
||||||
//获取删除dict后的personType
|
//获取删除dict后的personType
|
||||||
List<Sys_dict> deleteRenewPersonTypeList = sysDictService.getSubListByCode("PERSON_TYPE");
|
List<Sys_dict> deleteRenewPersonTypeList = sysDictService.getSubListByCode("PERSON_TYPE");
|
||||||
Sys_dict personType = deleteRenewPersonTypeList.stream().findFirst().orElse(null);
|
Sys_dict personType = dao().fetch(Sys_dict.class, Cnd.where("code", "=", "PERSON_TYPE"));
|
||||||
assert personType != null;
|
|
||||||
//获取personType
|
|
||||||
List<String> dictPersonTypeNameList = deleteRenewPersonTypeList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
|
||||||
//如果user表中有personType, 删除personType后的dict表中没有,就需要新增
|
|
||||||
List<String> insertPersonTypeList = personTypes.stream().filter(v -> !dictPersonTypeNameList.contains(v)).collect(Collectors.toList());
|
|
||||||
|
|
||||||
insertPersonTypeList = insertPersonTypeList.stream().distinct().collect(Collectors.toList());
|
if (Lang.isNotEmpty(personType)) {
|
||||||
if (Lang.isNotEmpty(insertPersonTypeList)) {
|
//获取personType
|
||||||
for (String item : insertPersonTypeList) {
|
List<String> dictPersonTypeNameList = deleteRenewPersonTypeList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
||||||
Sys_dict dict = new Sys_dict();
|
//如果user表中有personType, 删除personType后的dict表中没有,就需要新增
|
||||||
dict.setCode(item);
|
List<String> insertPersonTypeList = personTypes.stream().filter(v -> !dictPersonTypeNameList.contains(v)).collect(Collectors.toList());
|
||||||
dict.setName(item);
|
|
||||||
sysDictService.save(dict, personType.getParentId());
|
insertPersonTypeList = insertPersonTypeList.stream().distinct().collect(Collectors.toList());
|
||||||
|
if (Lang.isNotEmpty(insertPersonTypeList)) {
|
||||||
|
for (String item : insertPersonTypeList) {
|
||||||
|
Sys_dict dict = new Sys_dict();
|
||||||
|
dict.setCode(item);
|
||||||
|
dict.setName(item);
|
||||||
|
sysDictService.save(dict, personType.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 人事编制 preparedBy
|
||||||
|
Sql preparedBySql = Sqls.create("select preparedBy from `user` where preparedBy is not null and preparedBy !='' group by preparedBy");
|
||||||
|
List<String> preparedBys = sysDictService.listMap(preparedBySql).stream().map(v -> v.getString("preparedBy")).collect(Collectors.toList());
|
||||||
|
List<Sys_dict> preparedByList = sysDictService.getSubListByCode("PREPARED_BY");
|
||||||
|
if (Lang.isEmpty(preparedByList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//dict中的preparedBy,在user表中没有,这一部分删除
|
||||||
|
List<Sys_dict> deletePreparedBy = preparedByList.stream().filter(v -> !preparedBys.contains(v.getName())).collect(Collectors.toList());
|
||||||
|
List<String> deletePreparedBys = deletePreparedBy.stream().map(Sys_dict::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (Lang.isNotEmpty(deletePreparedBys)) {
|
||||||
|
sysDictService.delete(deletePreparedBys);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取删除dict后的 preparedBy
|
||||||
|
List<Sys_dict> deleteRenewPreparedByList = sysDictService.getSubListByCode("PREPARED_BY");
|
||||||
|
Sys_dict preparedBy = dao().fetch(Sys_dict.class, Cnd.where("code", "=", "PREPARED_BY"));
|
||||||
|
|
||||||
|
if (Lang.isNotEmpty(preparedBy)) {
|
||||||
|
//获取preparedBy
|
||||||
|
List<String> dictPreparedByNameList = deleteRenewPreparedByList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
||||||
|
//如果user表中有preparedBy, 删除preparedBy后的dict表中没有,就需要新增
|
||||||
|
List<String> insertPreparedByList = preparedBys.stream().filter(v -> !dictPreparedByNameList.contains(v)).collect(Collectors.toList());
|
||||||
|
|
||||||
|
insertPreparedByList = insertPreparedByList.stream().distinct().collect(Collectors.toList());
|
||||||
|
if (Lang.isNotEmpty(insertPreparedByList)) {
|
||||||
|
for (String item : insertPreparedByList) {
|
||||||
|
Sys_dict dict = new Sys_dict();
|
||||||
|
dict.setCode(item);
|
||||||
|
dict.setName(item);
|
||||||
|
sysDictService.save(dict, preparedBy.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sysDictService.clearCache();
|
sysDictService.clearCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package io.v.nutz.zhgh.data.controller;
|
|||||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.utils.ViResource;
|
import io.v.nutz.base.utils.ViResource;
|
||||||
@@ -77,12 +78,14 @@ public class UpdateUserController {
|
|||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
cnd.and(pageForm);
|
cnd.and(pageForm);
|
||||||
|
|
||||||
cnd.andEx("u.unitid", "=", unitId);
|
cnd.andEX("u.unitid", "=", unitId);
|
||||||
cnd.andEx("u.personType", "=", personType);
|
cnd.andEX("u.personType", "=", personType);
|
||||||
cnd.andEx("u.userState", "=", userState);
|
cnd.andEX("u.userState", "=", userState);
|
||||||
|
|
||||||
cnd.andEx("Date(his.changeTime)", "=", changeDate);
|
if (StrUtil.isNotBlank(changeDate)) {
|
||||||
cnd.andEx("his.changeType", "=", changeType);
|
cnd.and("DATE(his.changeTime)", "=", changeDate);
|
||||||
|
}
|
||||||
|
cnd.andEX("his.changeType", "=", changeType);
|
||||||
|
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,12 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
super(dao);
|
super(dao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final List<String> RESIGN_AND_OUT_WORK = List.of(
|
||||||
|
"离职", "不在职"
|
||||||
|
);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private AsyncService asyncService;
|
private AsyncService asyncService;
|
||||||
@@ -113,11 +119,14 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
source.setEducation(o.getString("XL"));
|
source.setEducation(o.getString("XL"));
|
||||||
source.setPullTime(new DateTime());
|
source.setPullTime(new DateTime());
|
||||||
source.setMobile(o.getString("SJH"));
|
source.setMobile(o.getString("SJH"));
|
||||||
source.setUserState(o.getString("DQZT"));
|
|
||||||
source.setPolitical(o.getString("ZZMMM"));
|
source.setPolitical(o.getString("ZZMMM"));
|
||||||
// source.setIdcard(o.getString("SFZJH"));
|
// source.setIdcard(o.getString("SFZJH"));
|
||||||
source.setPreparedBy(o.getString("JZGRYLB"));
|
source.setUserState(o.getString("LXLX"));
|
||||||
source.setPersonType(o.getString("LXLX"));
|
source.setPreparedBy(o.getString("DQZT"));
|
||||||
|
source.setPersonType(o.getString("JZGRYLB"));
|
||||||
|
// source.setUserState(o.getString("DQZT"));
|
||||||
|
// source.setPreparedBy(o.getString("JZGRYLB"));
|
||||||
|
// source.setPersonType(o.getString("LXLX"));
|
||||||
return source;
|
return source;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
asyncService.exe2(users, (user) -> {
|
asyncService.exe2(users, (user) -> {
|
||||||
@@ -245,7 +254,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
if (Lang.isEmpty(history)) {
|
if (Lang.isEmpty(history)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
histories.add(history);
|
if (user != null) {
|
||||||
|
histories.add(history);
|
||||||
|
}
|
||||||
if (history.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
if (history.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
}
|
}
|
||||||
@@ -254,7 +265,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
if (Lang.isEmpty(table)) {
|
if (Lang.isEmpty(table)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
middleTables.add(table);
|
if (user != null && Lang.isNotEmpty(table.getChangeTypes())) {
|
||||||
|
middleTables.add(table);
|
||||||
|
}
|
||||||
if (table.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
if (table.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
}
|
}
|
||||||
@@ -282,11 +295,10 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
addMemberUser(addMemberUserIds, changeConfig.getIsJoinMemberActivityScope());
|
addMemberUser(addMemberUserIds, changeConfig.getIsJoinMemberActivityScope());
|
||||||
// 删除会员
|
// 删除会员
|
||||||
deleteMemberUser(deleteMemberUserIds, changeConfig.getIsDeleteMemberActivityScope());
|
deleteMemberUser(deleteMemberUserIds, changeConfig.getIsDeleteMemberActivityScope());
|
||||||
|
|
||||||
// 加入进行中的福利项目,暂时没写
|
// 加入进行中的福利项目,暂时没写
|
||||||
|
|
||||||
|
|
||||||
// 历史记录表插入数据
|
// 历史记录表插入数据 automatic 自动,artificial 手动
|
||||||
if ("automatic".equals(changeConfig.getSourceChangeType())) {
|
if ("automatic".equals(changeConfig.getSourceChangeType())) {
|
||||||
// 自动更新,修改数据表,存储历史记录
|
// 自动更新,修改数据表,存储历史记录
|
||||||
if ("part".equals(sourceType)) {
|
if ("part".equals(sourceType)) {
|
||||||
@@ -297,20 +309,21 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
|
|
||||||
manyAddOrRenewUtil.asyncExecuteFastInsert(histories, 200);
|
manyAddOrRenewUtil.asyncExecuteFastInsert(histories, 200);
|
||||||
// 人员状态及在职状态更新
|
// 人员状态及在职状态更新
|
||||||
// 在职状态关乎变更类型,建议自己手动更新,不要使用自动更新功能,硬要使用,请点进 renewUserState 打开注释
|
|
||||||
userPatUpService.renewUserState();
|
|
||||||
|
|
||||||
// 修改不在人事库的人员,删除角色
|
|
||||||
// userPatUpService.deleteNotInSourceUser(true);
|
|
||||||
//清除缓存
|
|
||||||
sysUserService.clearCache();
|
|
||||||
sysRoleService.clearCache();
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
List<String> loginNameList = middleTables.stream().map(SourceChangeMiddleTable::getLoginname).toList();
|
List<String> loginNameList = middleTables.stream().map(SourceChangeMiddleTable::getLoginname).toList();
|
||||||
dao().clear(SourceChangeMiddleTable.class, Cnd.where("loginname", "in", loginNameList).and("isOperate", "=", false));
|
dao().clear(SourceChangeMiddleTable.class, Cnd.where("loginname", "in", loginNameList).and("isOperate", "=", false));
|
||||||
manyAddOrRenewUtil.asyncExecuteFastInsert(middleTables, 200);
|
manyAddOrRenewUtil.asyncExecuteFastInsert(middleTables, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在职状态关乎变更类型,建议自己手动更新,不要使用自动更新功能,硬要使用,请点进 renewUserState 打开注释
|
||||||
|
userPatUpService.renewUserState();
|
||||||
|
|
||||||
|
// 修改不在人事库的人员,删除角色
|
||||||
|
// userPatUpService.deleteNotInSourceUser(true);
|
||||||
|
//清除缓存
|
||||||
|
sysUserService.clearCache();
|
||||||
|
sysRoleService.clearCache();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new RuntimeException(e.getMessage());
|
throw new RuntimeException(e.getMessage());
|
||||||
@@ -514,7 +527,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
// 新入职教职工
|
// 新入职教职工
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
changeTypes.add(MemberChangeType.NEW.getType());
|
changeTypes.add(MemberChangeType.NEW.getType());
|
||||||
table.setChangeTypes(changeTypes);
|
table.setChangeTypes(RESIGN_AND_OUT_WORK.contains(source.getUserState()) ? changeTypes : null);
|
||||||
table.setChangeInfosStr("新入职");
|
table.setChangeInfosStr("新入职");
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
@@ -530,6 +543,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
// 变更记录
|
// 变更记录
|
||||||
List<NutMap> changeList = new ArrayList<>();
|
List<NutMap> changeList = new ArrayList<>();
|
||||||
for (String fieldName : allowChangeFieldNames) {
|
for (String fieldName : allowChangeFieldNames) {
|
||||||
|
if (allowChangeFieldNames.contains("retireDate") || allowChangeFieldNames.contains("welfareStopDate")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||||
}
|
}
|
||||||
if (Lang.isEmpty(changeList)) {
|
if (Lang.isEmpty(changeList)) {
|
||||||
@@ -567,7 +583,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name());
|
history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name());
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
changeTypes.add(MemberChangeType.NEW.getType());
|
changeTypes.add(MemberChangeType.NEW.getType());
|
||||||
history.setChangeTypes(changeTypes);
|
history.setChangeTypes(RESIGN_AND_OUT_WORK.contains(source.getUserState()) ? changeTypes : null);
|
||||||
return history;
|
return history;
|
||||||
}
|
}
|
||||||
// 获取变更记录
|
// 获取变更记录
|
||||||
@@ -578,6 +594,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
}
|
}
|
||||||
List<NutMap> changeList = new ArrayList<>();
|
List<NutMap> changeList = new ArrayList<>();
|
||||||
for (String fieldName : allowChangeFieldNames) {
|
for (String fieldName : allowChangeFieldNames) {
|
||||||
|
if (allowChangeFieldNames.contains("retireDate") || allowChangeFieldNames.contains("welfareStopDate")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||||
}
|
}
|
||||||
if (Lang.isEmpty(changeList)) {
|
if (Lang.isEmpty(changeList)) {
|
||||||
|
|||||||
@@ -21,12 +21,15 @@ public enum MemberChangeType {
|
|||||||
RESTORE("RESTORE","入会"),
|
RESTORE("RESTORE","入会"),
|
||||||
WITHDRAWAL("WITHDRAWAL","退会"),
|
WITHDRAWAL("WITHDRAWAL","退会"),
|
||||||
WORK("WORK","在职"),
|
WORK("WORK","在职"),
|
||||||
LEAVE_SCHOOL("LEAVE_SCHOOL","离校"),
|
MATERNITY_LEAVE("MATERNITY_LEAVE","产假"),
|
||||||
|
LONG_SICK_LEAVE("LONG_SICK_LEAVE","长病假"),
|
||||||
RETIRE("RETIRE","退休"),
|
RETIRE("RETIRE","退休"),
|
||||||
RESIGN("RESIGN","辞职"),
|
|
||||||
OUT("OUT","调出"),
|
OUT("OUT","调出"),
|
||||||
|
RESIGN("RESIGN","辞职"),
|
||||||
LEAVE_OFFICE("LEAVE_OFFICE","离职"),
|
LEAVE_OFFICE("LEAVE_OFFICE","离职"),
|
||||||
|
DEATH("DEATH","死亡"),
|
||||||
OTHER("OTHER","其他"),
|
OTHER("OTHER","其他"),
|
||||||
|
END_OF_SECONDMENT("END_OF_SECONDMENT","挂职结束"),
|
||||||
UNIT_CHANGE("UNIT_CHANGE","单位异动"),
|
UNIT_CHANGE("UNIT_CHANGE","单位异动"),
|
||||||
UNION_CHANGE("UNION_CHANGE","工会关系异动"),
|
UNION_CHANGE("UNION_CHANGE","工会关系异动"),
|
||||||
BASIC_CHANGE("BASIC_CHANGE","基本信息异动");
|
BASIC_CHANGE("BASIC_CHANGE","基本信息异动");
|
||||||
|
|||||||
+5
-1
@@ -112,6 +112,7 @@ public class MemberChangeManageController {
|
|||||||
@Param(value = "personType", required = false) String personType,
|
@Param(value = "personType", required = false) String personType,
|
||||||
@Param(value = "userState", required = false) String userState,
|
@Param(value = "userState", required = false) String userState,
|
||||||
@Param(value = "preparedBy", required = false) String preparedBy,
|
@Param(value = "preparedBy", required = false) String preparedBy,
|
||||||
|
@Param(value = "personalStatus", required = false) String personalStatus,
|
||||||
@Param(value = "changeDate", required = false) String changeDate,
|
@Param(value = "changeDate", required = false) String changeDate,
|
||||||
@Param(value = "changeTypes", required = false) String[] changeTypes,
|
@Param(value = "changeTypes", required = false) String[] changeTypes,
|
||||||
@Param(value = "changed", required = false) Integer changed,
|
@Param(value = "changed", required = false) Integer changed,
|
||||||
@@ -166,6 +167,7 @@ public class MemberChangeManageController {
|
|||||||
cnd.andEX("u.personType", "=", personType);
|
cnd.andEX("u.personType", "=", personType);
|
||||||
cnd.andEX("u.userState", "=", userState);
|
cnd.andEX("u.userState", "=", userState);
|
||||||
cnd.andEX("u.preparedBy", "=", preparedBy);
|
cnd.andEX("u.preparedBy", "=", preparedBy);
|
||||||
|
cnd.andEX("u.personalStatus", "=", personalStatus);
|
||||||
|
|
||||||
if (StrUtil.isAllNotBlank(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
if (StrUtil.isAllNotBlank(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
@@ -362,12 +364,14 @@ public class MemberChangeManageController {
|
|||||||
public Object allIsWelfareMember(PageForm pageForm,
|
public Object allIsWelfareMember(PageForm pageForm,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
||||||
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
||||||
@Param(value = "personTypes", required = false) String[] personTypes,
|
@Param(value = "personTypes", required = false) String[] personTypes,
|
||||||
|
@Param(value = "personalStatus", required = false) String[] personalStatus,
|
||||||
@Param(value = "userStates", required = false) String[] userStates,
|
@Param(value = "userStates", required = false) String[] userStates,
|
||||||
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
||||||
@Param(value = "campus", required = false) String campus,
|
@Param(value = "campus", required = false) String campus,
|
||||||
@@ -380,7 +384,7 @@ public class MemberChangeManageController {
|
|||||||
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord,
|
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord,
|
||||||
@Param(value = "isAppendWelfareMember", required = false) Boolean isAppendWelfareMember) {
|
@Param(value = "isAppendWelfareMember", required = false) Boolean isAppendWelfareMember) {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, unionId, unitId, personTypes, userStates, null, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, birthMonth, unionId, unitId, personTypes, personalStatus, userStates, null, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.* from $table
|
SELECT u.* from $table
|
||||||
LEFT JOIN sys_user_role sur ON sur.userid = u.id
|
LEFT JOIN sys_user_role sur ON sur.userid = u.id
|
||||||
|
|||||||
+6
-2
@@ -73,12 +73,14 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "isUnion", required = false) String isUnion,
|
@Param(value = "isUnion", required = false) String isUnion,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
||||||
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
||||||
@Param(value = "personTypes", required = false) String[] personTypes,
|
@Param(value = "personTypes", required = false) String[] personTypes,
|
||||||
|
@Param(value = "personalStatus", required = false) String[] personalStatus,
|
||||||
@Param(value = "userStates", required = false) String[] userStates,
|
@Param(value = "userStates", required = false) String[] userStates,
|
||||||
@Param(value = "preparedBys", required = false) String[] preparedBys,
|
@Param(value = "preparedBys", required = false) String[] preparedBys,
|
||||||
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
||||||
@@ -93,7 +95,7 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord) {
|
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord) {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
|
||||||
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, birthMonth, unionId, unitId, personTypes, personalStatus, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.* from $table
|
SELECT u.* from $table
|
||||||
@@ -442,12 +444,14 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "searchKeyword", required = false) String searchKeyword,
|
@Param(value = "searchKeyword", required = false) String searchKeyword,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
@Param(value = "threeUnitId", required = false) String[] threeUnitId,
|
||||||
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
@Param(value = "unionGroupId", required = false) String[] unionGroupId,
|
||||||
@Param(value = "personTypes", required = false) String[] personTypes,
|
@Param(value = "personTypes", required = false) String[] personTypes,
|
||||||
|
@Param(value = "personalStatus", required = false) String[] personalStatus,
|
||||||
@Param(value = "userStates", required = false) String[] userStates,
|
@Param(value = "userStates", required = false) String[] userStates,
|
||||||
@Param(value = "preparedBys", required = false) String[] preparedBys,
|
@Param(value = "preparedBys", required = false) String[] preparedBys,
|
||||||
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
@Param(value = "memberStatus", required = false) String[] memberStatus,
|
||||||
@@ -464,7 +468,7 @@ public class MemberInquireIntegrateController {
|
|||||||
try {
|
try {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
|
||||||
Cnd cnd = MemberUtils.getCnd(null, startDate, endDate, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(null, startDate, endDate, birthMonth, unionId, unitId, personTypes, personalStatus, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.* from $table
|
SELECT u.* from $table
|
||||||
|
|||||||
+5
-4
@@ -20,6 +20,7 @@ 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.constant.MemberChangeType;
|
||||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
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.MemberCommonService;
|
||||||
|
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||||
import io.v.nutz.zhgh.welfare.model.WelfareList;
|
import io.v.nutz.zhgh.welfare.model.WelfareList;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -280,15 +281,11 @@ public class MemberCommonServiceImpl extends ViServiceImpl<Sys_user> implements
|
|||||||
userRole.setRoleId(Roles.MEMBER);
|
userRole.setRoleId(Roles.MEMBER);
|
||||||
dao().insert(userRole);
|
dao().insert(userRole);
|
||||||
}
|
}
|
||||||
// 杭医特有,其他学校请删除
|
|
||||||
record.setPreparedBy("会员");
|
|
||||||
} else {
|
} else {
|
||||||
if (record.getIsExitActivityMemberScope() != null && record.getIsExitActivityMemberScope()) {
|
if (record.getIsExitActivityMemberScope() != null && record.getIsExitActivityMemberScope()) {
|
||||||
dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
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));
|
dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||||
// 杭医特有,其他学校请删除
|
|
||||||
record.setPreparedBy("教职工");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加入福利会员 是否加入福利项目
|
// 加入福利会员 是否加入福利项目
|
||||||
@@ -356,6 +353,10 @@ public class MemberCommonServiceImpl extends ViServiceImpl<Sys_user> implements
|
|||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
|
|
||||||
|
// 去查询手动更新记录表,删除状态是未操作,变更类型是新入职的
|
||||||
|
dao().clear(SourceChangeMiddleTable.class, Cnd.where("loginname", "=", history.getLoginname())
|
||||||
|
.and("changeInfoStr", "=", "新入职").and("isOperate", "=", 0));
|
||||||
|
|
||||||
sysUserService.deleteCacheAndUpdate(info.getId());
|
sysUserService.deleteCacheAndUpdate(info.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.staffmanage.member.utils;
|
package io.v.nutz.zhgh.staffmanage.member.utils;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
|
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
|
||||||
@@ -22,9 +23,11 @@ public class MemberUtils {
|
|||||||
public static Cnd getCnd(PageForm pageForm,
|
public static Cnd getCnd(PageForm pageForm,
|
||||||
String startDate,
|
String startDate,
|
||||||
String endDate,
|
String endDate,
|
||||||
|
String birthMonth,
|
||||||
String[] unionId,
|
String[] unionId,
|
||||||
String[] unitId,
|
String[] unitId,
|
||||||
String[] personTypes,
|
String[] personTypes,
|
||||||
|
String[] personalStatus,
|
||||||
String[] userStates,
|
String[] userStates,
|
||||||
String[] preparedBys,
|
String[] preparedBys,
|
||||||
String[] memberTypes,
|
String[] memberTypes,
|
||||||
@@ -117,12 +120,16 @@ public class MemberUtils {
|
|||||||
cnd.and(group);*/
|
cnd.and(group);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(birthMonth)) {
|
||||||
|
cnd.and("MONTH(birthday)", EQ_OR_NEQ_OP, NumberUtil.parseInt(birthMonth));
|
||||||
|
}
|
||||||
cnd.andEX("u.unionid", IN_OR_NIN_OP, unionId);
|
cnd.andEX("u.unionid", IN_OR_NIN_OP, unionId);
|
||||||
cnd.andEX("u.unitid", IN_OR_NIN_OP, unitId);
|
cnd.andEX("u.unitid", IN_OR_NIN_OP, unitId);
|
||||||
cnd.andEX("u.threeUnitId", IN_OR_NIN_OP, threeUnitId);
|
cnd.andEX("u.threeUnitId", IN_OR_NIN_OP, threeUnitId);
|
||||||
cnd.andEX("u.unionGroupId", IN_OR_NIN_OP, unionGroupId);
|
cnd.andEX("u.unionGroupId", IN_OR_NIN_OP, unionGroupId);
|
||||||
cnd.andEX("u.campus", EQ_OR_NEQ_OP, campus);
|
cnd.andEX("u.campus", EQ_OR_NEQ_OP, campus);
|
||||||
cnd.andEX("u.personType", IN_OR_NIN_OP, personTypes);
|
cnd.andEX("u.personType", IN_OR_NIN_OP, personTypes);
|
||||||
|
cnd.andEX("u.personalStatus", IN_OR_NIN_OP, personalStatus);
|
||||||
cnd.andEX("u.userState", IN_OR_NIN_OP, userStates);
|
cnd.andEX("u.userState", IN_OR_NIN_OP, userStates);
|
||||||
cnd.andEX("u.preparedBy", IN_OR_NIN_OP, preparedBys);
|
cnd.andEX("u.preparedBy", IN_OR_NIN_OP, preparedBys);
|
||||||
cnd.andEX("u.sex", IN_OR_NIN_OP, sexTypes);
|
cnd.andEX("u.sex", IN_OR_NIN_OP, sexTypes);
|
||||||
|
|||||||
+7
-7
@@ -106,13 +106,13 @@ public class SourceChangeManageController {
|
|||||||
cnd.and(seg);
|
cnd.and(seg);
|
||||||
}
|
}
|
||||||
|
|
||||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
cnd.andEX("u.unitId", "=", pageForm.getUnitId());
|
||||||
cnd.andEX("sex", "=", pageForm.getSex());
|
cnd.andEX("u.sex", "=", pageForm.getSex());
|
||||||
cnd.andEX("personType", "=", pageForm.getPersonType());
|
cnd.andEX("scmt.personType", "=", pageForm.getPersonType());
|
||||||
cnd.andEX("preparedBy", "=", pageForm.getPreparedBy());
|
cnd.andEX("scmt.preparedBy", "=", pageForm.getPreparedBy());
|
||||||
cnd.andEX("userState", "=", pageForm.getUserState());
|
cnd.andEX("scmt.userState", "=", pageForm.getUserState());
|
||||||
cnd.andEX("isOperate", "=", pageForm.getIsOperate());
|
cnd.andEX("scmt.isOperate", "=", pageForm.getIsOperate());
|
||||||
if (StrUtil.isAllNotBlank(pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())) {
|
if (StrUtil.isAllNotBlank(pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())) {
|
||||||
cnd.and(new Static(String.format("Date(changeTime) >= '%s' and Date(changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
cnd.and(new Static(String.format("Date(changeTime) >= '%s' and Date(changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+16
-7
@@ -69,6 +69,19 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
|
|||||||
@Override
|
@Override
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void doSourceChange(SourceChangeMiddleTable middleTable) {
|
public void doSourceChange(SourceChangeMiddleTable middleTable) {
|
||||||
|
// 是不是退休,退休就去设置成非会员
|
||||||
|
if ("退休".equals(middleTable.getUserState())) {
|
||||||
|
middleTable.setMember(0);
|
||||||
|
middleTable.setIsExitActivityMemberScope(true);
|
||||||
|
|
||||||
|
if (DateUtil.parseDate(middleTable.getWelfareStopDate()).isAfter(DateUtil.date())) {
|
||||||
|
middleTable.setWelfareMember(1);
|
||||||
|
} else {
|
||||||
|
middleTable.setWelfareMember(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 记录当前操作的时间,用于后续区分短信通知
|
// 记录当前操作的时间,用于后续区分短信通知
|
||||||
Date date = DateUtil.date();
|
Date date = DateUtil.date();
|
||||||
// 是否新入职
|
// 是否新入职
|
||||||
@@ -145,15 +158,11 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
|
|||||||
userRole.setRoleId(Roles.MEMBER);
|
userRole.setRoleId(Roles.MEMBER);
|
||||||
dao().insert(userRole);
|
dao().insert(userRole);
|
||||||
}
|
}
|
||||||
// 杭医特有,其他学校请删除
|
|
||||||
middleTable.setPreparedBy("会员");
|
|
||||||
} else {
|
} else {
|
||||||
if (middleTable.getIsExitActivityMemberScope() != null && middleTable.getIsExitActivityMemberScope()) {
|
if (middleTable.getIsExitActivityMemberScope() != null && middleTable.getIsExitActivityMemberScope()) {
|
||||||
dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
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));
|
dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||||
// 杭医特有,其他学校请删除
|
|
||||||
middleTable.setPreparedBy("教职工");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加入福利会员 是否加入福利项目
|
// 加入福利会员 是否加入福利项目
|
||||||
@@ -253,9 +262,9 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable) {
|
public void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable) {
|
||||||
String context = "尊敬的%s老师,欢迎您加入杭州医学院大家庭,请您点击此条信息或登录“智慧工会”平台申请成为杭医工会会员!"
|
// String context = "尊敬的%s老师,欢迎您加入杭州医学院大家庭,请您点击此条信息或登录“智慧工会”平台申请成为杭医工会会员!"
|
||||||
.formatted(middleTable.getUsername());
|
// .formatted(middleTable.getUsername());
|
||||||
String link = Globals.AppDomain + "/platform/member/apply/submit/h5";
|
// String link = Globals.AppDomain + "/platform/member/apply/submit/h5";
|
||||||
// msgApi.sendMsg(List.of("DingTalk"), middleTable.getLoginname(), 2, "入会邀请", context, "", link);
|
// msgApi.sendMsg(List.of("DingTalk"), middleTable.getLoginname(), 2, "入会邀请", context, "", link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ layout("/layouts/platform.html"){
|
|||||||
const resp = await $.post(loc() + '/pull')
|
const resp = await $.post(loc() + '/pull')
|
||||||
this.pullLoading = false
|
this.pullLoading = false
|
||||||
if(resp.code===0){
|
if(resp.code===0){
|
||||||
|
await this.getLatelyUpdateTimes()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
}else{
|
}else{
|
||||||
this.notifyWarning(resp.msg)
|
this.notifyWarning(resp.msg)
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ layout("/layouts/platform.html"){
|
|||||||
style="width: 200px"
|
style="width: 200px"
|
||||||
v-model="pageForm.changeDate"
|
v-model="pageForm.changeDate"
|
||||||
type="date"
|
type="date"
|
||||||
|
@change="doSearch"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
placeholder="更新日期">
|
placeholder="更新日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
|
|||||||
@@ -134,25 +134,42 @@ const MEMBER_CHANGE = {
|
|||||||
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<template v-if="formData.userState == '退休'">
|
|
||||||
<el-descriptions-item label="退休日期">
|
|
||||||
<el-form-item prop="retireDate">
|
|
||||||
<el-date-picker v-model="formData.retireDate"
|
|
||||||
type="date"
|
|
||||||
placeholder="请选择出生日期"
|
|
||||||
format="yyyy-MM-dd"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
style="width: 100%"></el-date-picker>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
<el-descriptions-item label="人员类型">
|
<el-descriptions-item label="人员类型">
|
||||||
<el-form-item prop="personType">
|
<el-form-item prop="personType">
|
||||||
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
||||||
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item v-if="formData.userState == null || formData.userState != '退休'"></el-descriptions-item>
|
<el-descriptions-item label="费用类型">
|
||||||
|
<el-form-item prop="personType">
|
||||||
|
<dict-select v-model="formData.personalStatus" code="USER_PERSONAL_STATUS"
|
||||||
|
:disabled="allowFields('personalStatus')" style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<template v-if="formData.userState == '退休' && $auth.hasRoleOr('sysadmin, SchoolUnionMemberAdmin, SchoolUnionAdmin')">
|
||||||
|
<el-descriptions-item label="退休日期">
|
||||||
|
<el-form-item prop="retireDate">
|
||||||
|
<el-date-picker v-model="formData.retireDate"
|
||||||
|
type="date"
|
||||||
|
placeholder="请选择退休日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="福利享受截止日期">
|
||||||
|
<el-form-item prop="welfareStopDate">
|
||||||
|
<el-date-picker v-model="formData.welfareStopDate"
|
||||||
|
type="date"
|
||||||
|
placeholder="请选择福利享受截止日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-descriptions-item label="会员状态">
|
<el-descriptions-item label="会员状态">
|
||||||
<el-form-item prop="member">
|
<el-form-item prop="member">
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">人员类型:</div>
|
<div class="search-item-label">人员性质:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<dict-select v-model="pageForm.preparedBy"
|
<dict-select v-model="pageForm.preparedBy"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -98,13 +98,23 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="search-item">
|
||||||
|
<div class="search-item-label">费用类型:</div>
|
||||||
|
<div class="search-item-option">
|
||||||
|
<dict-select v-model="pageForm.personalStatus"
|
||||||
|
style="width: 100%"
|
||||||
|
clearable
|
||||||
|
placeholder="费用类型"
|
||||||
|
code="USER_PERSONAL_STATUS"></dict-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">变更类型:</div>
|
<div class="search-item-label">变更类型:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<enum-select v-model="pageForm.changeTypes"
|
<enum-select v-model="pageForm.changeTypes"
|
||||||
enum="MemberChangeType"
|
enum="MemberChangeType"
|
||||||
label="changeTypeName"
|
label="changeTypeName"
|
||||||
multiple
|
|
||||||
value="type"
|
value="type"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
clearable
|
clearable
|
||||||
|
|||||||
@@ -53,6 +53,13 @@ layout("/layouts/platform.html"){
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.monthStyle{
|
||||||
|
.el-date-picker__header--bordered {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
@@ -181,30 +188,30 @@ layout("/layouts/platform.html"){
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<!-- <el-row type="flex" align="middle" class="query-row">-->
|
||||||
<el-col class="query-row-title">会员状态:</el-col>
|
<!-- <el-col class="query-row-title">会员状态:</el-col>-->
|
||||||
<el-col class="query-row-content">
|
<!-- <el-col class="query-row-content">-->
|
||||||
<el-tag
|
<!-- <el-tag-->
|
||||||
style="margin-right: 10px;cursor: pointer"
|
<!-- style="margin-right: 10px;cursor: pointer"-->
|
||||||
v-for="item in memberStatusOptions"
|
<!-- v-for="item in memberStatusOptions"-->
|
||||||
:key="item.code"
|
<!-- :key="item.code"-->
|
||||||
:type="item.name"
|
<!-- :type="item.name"-->
|
||||||
:effect="pageForm.memberStatus.includes(item.code)?'dark':'plain'"
|
<!-- :effect="pageForm.memberStatus.includes(item.code)?'dark':'plain'"-->
|
||||||
@click="checkMemberStatusType(item.code)">
|
<!-- @click="checkMemberStatusType(item.code)">-->
|
||||||
{{ item.name }}
|
<!-- {{ item.name }}-->
|
||||||
</el-tag>
|
<!-- </el-tag>-->
|
||||||
|
|
||||||
<el-link type="danger"
|
<!-- <el-link type="danger"-->
|
||||||
v-if="memberStatusOptions.length&&pageForm.memberStatus.length"
|
<!-- v-if="memberStatusOptions.length&&pageForm.memberStatus.length"-->
|
||||||
:underline="false"
|
<!-- :underline="false"-->
|
||||||
@click="pageForm.memberStatus=[];doSearch()">清空
|
<!-- @click="pageForm.memberStatus=[];doSearch()">清空-->
|
||||||
</el-link>
|
<!-- </el-link>-->
|
||||||
<el-link :underline="false"
|
<!-- <el-link :underline="false"-->
|
||||||
@click="pageForm.memberStatus=memberStatusOptions.map(p=>p.code);doSearch()"
|
<!-- @click="pageForm.memberStatus=memberStatusOptions.map(p=>p.code);doSearch()"-->
|
||||||
type="success">全部
|
<!-- type="success">全部-->
|
||||||
</el-link>
|
<!-- </el-link>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
</el-row>
|
<!-- </el-row>-->
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<el-row type="flex" align="middle" class="query-row">
|
||||||
<el-col class="query-row-title">人员类型:</el-col>
|
<el-col class="query-row-title">人员类型:</el-col>
|
||||||
<el-col class="query-row-content">
|
<el-col class="query-row-content">
|
||||||
@@ -281,6 +288,32 @@ layout("/layouts/platform.html"){
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
<el-row type="flex" align="middle" class="query-row">
|
||||||
|
<el-col class="query-row-title">费用类型:</el-col>
|
||||||
|
<el-col class="query-row-content">
|
||||||
|
<el-tag
|
||||||
|
style="margin-right: 10px;cursor: pointer"
|
||||||
|
v-for="item in personalStatusOptions"
|
||||||
|
:key="item.code"
|
||||||
|
:type="item.name"
|
||||||
|
:effect="pageForm.personalStatus.includes(item.name)?'dark':'plain'"
|
||||||
|
@click="tagClick('personalStatus',item.name)">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-tag>
|
||||||
|
|
||||||
|
<el-link type="danger"
|
||||||
|
v-if="personalStatusOptions.length&&pageForm.personalStatus.length"
|
||||||
|
:underline="false"
|
||||||
|
@click="pageForm.personalStatus=[];doSearch()">清空
|
||||||
|
</el-link>
|
||||||
|
<el-link :underline="false"
|
||||||
|
@click="pageForm.personalStatus=personalStatusOptions.map(p=>p.code);doSearch()"
|
||||||
|
type="success">全部
|
||||||
|
</el-link>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<el-row type="flex" align="middle" class="query-row">
|
||||||
<el-col class="query-row-title">系统角色:</el-col>
|
<el-col class="query-row-title">系统角色:</el-col>
|
||||||
<el-col class="query-row-content">
|
<el-col class="query-row-content">
|
||||||
@@ -334,14 +367,23 @@ layout("/layouts/platform.html"){
|
|||||||
v-model="pageForm.startDate"
|
v-model="pageForm.startDate"
|
||||||
type="date"
|
type="date"
|
||||||
@change="determineStartDate"
|
@change="determineStartDate"
|
||||||
placeholder="选择开始日期">
|
placeholder="选择出生开始日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="pageForm.endDate"
|
v-model="pageForm.endDate"
|
||||||
type="date"
|
type="date"
|
||||||
@change="determineEndDate"
|
@change="determineEndDate"
|
||||||
placeholder="选择结束日期">
|
placeholder="选择出生结束日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="pageForm.birthMonth"
|
||||||
|
popper-class="monthStyle"
|
||||||
|
value-format="MM"
|
||||||
|
format="MM"
|
||||||
|
@change="doSearch"
|
||||||
|
type="month"
|
||||||
|
placeholder="请选择月度">
|
||||||
|
</el-date-picker>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@@ -560,6 +602,7 @@ layout("/layouts/platform.html"){
|
|||||||
personTypes: [],
|
personTypes: [],
|
||||||
userStates: [],
|
userStates: [],
|
||||||
preparedBys: [],
|
preparedBys: [],
|
||||||
|
personalStatus: [],
|
||||||
memberStatus: [],
|
memberStatus: [],
|
||||||
year: moment().format('YYYY'),
|
year: moment().format('YYYY'),
|
||||||
roleIds: [],
|
roleIds: [],
|
||||||
@@ -573,9 +616,11 @@ layout("/layouts/platform.html"){
|
|||||||
startDate: '',
|
startDate: '',
|
||||||
endDate: '',
|
endDate: '',
|
||||||
memberType:2,
|
memberType:2,
|
||||||
|
birthMonth: '',
|
||||||
},
|
},
|
||||||
|
|
||||||
personTypeOptions: [],
|
personTypeOptions: [],
|
||||||
|
personalStatusOptions: [],
|
||||||
userStateOptions: [],
|
userStateOptions: [],
|
||||||
preparedByOptions: [],
|
preparedByOptions: [],
|
||||||
memberStatusOptions: [],
|
memberStatusOptions: [],
|
||||||
@@ -645,6 +690,7 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||||
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
||||||
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
|
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
|
||||||
|
pageForm.personalStatus = JSON.stringify(pageForm.personalStatus)
|
||||||
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
||||||
|
|
||||||
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
||||||
@@ -667,18 +713,22 @@ layout("/layouts/platform.html"){
|
|||||||
const personTypes = JSON.stringify(this.pageForm.personTypes)
|
const personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||||
const userStates = JSON.stringify(this.pageForm.userStates)
|
const userStates = JSON.stringify(this.pageForm.userStates)
|
||||||
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||||
|
const personalStatus = JSON.stringify(this.pageForm.personalStatus)
|
||||||
window.location.href = loc() + "/doExport?unionId=" + this.pageForm.unionId + "&unitId=" + this.pageForm.unitId
|
window.location.href = loc() + "/doExport?unionId=" + this.pageForm.unionId + "&unitId=" + this.pageForm.unitId
|
||||||
+ "&year=" + this.pageForm.year
|
+ "&year=" + this.pageForm.year
|
||||||
|
+ "&birthMonth=" + this.pageForm.birthMonth
|
||||||
+ "&memberStatus=" + memberStatus
|
+ "&memberStatus=" + memberStatus
|
||||||
+ "&personTypes=" + personTypes
|
+ "&personTypes=" + personTypes
|
||||||
+ "&userStates=" + userStates
|
+ "&userStates=" + userStates
|
||||||
+ "&preparedBys=" + preparedBys
|
+ "&preparedBys=" + preparedBys
|
||||||
|
+ "&personalStatus=" + personalStatus
|
||||||
},
|
},
|
||||||
doExportByUnion() {
|
doExportByUnion() {
|
||||||
const memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
const memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
||||||
const personTypes = JSON.stringify(this.pageForm.personTypes)
|
const personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||||
const userStates = JSON.stringify(this.pageForm.userStates)
|
const userStates = JSON.stringify(this.pageForm.userStates)
|
||||||
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||||
|
const personalStatus = JSON.stringify(this.pageForm.personalStatus)
|
||||||
const unionId = JSON.stringify(this.pageForm.unionId)
|
const unionId = JSON.stringify(this.pageForm.unionId)
|
||||||
const unitId = JSON.stringify(this.pageForm.unitId)
|
const unitId = JSON.stringify(this.pageForm.unitId)
|
||||||
const unionGroupId = JSON.stringify(this.pageForm.unionGroupId)
|
const unionGroupId = JSON.stringify(this.pageForm.unionGroupId)
|
||||||
@@ -695,6 +745,7 @@ layout("/layouts/platform.html"){
|
|||||||
const {
|
const {
|
||||||
startDate,
|
startDate,
|
||||||
endDate,
|
endDate,
|
||||||
|
birthMonth,
|
||||||
campus,
|
campus,
|
||||||
memberType,
|
memberType,
|
||||||
reverseSelection,
|
reverseSelection,
|
||||||
@@ -705,11 +756,11 @@ layout("/layouts/platform.html"){
|
|||||||
window.location.href = loc() + "/doExportByUnion?=searchName=" + this.pageForm.searchName
|
window.location.href = loc() + "/doExportByUnion?=searchName=" + this.pageForm.searchName
|
||||||
+ "&searchKeyword=" + this.pageForm.searchKeyword + "&unitId=" + unitId + "&unionId=" + unionId
|
+ "&searchKeyword=" + this.pageForm.searchKeyword + "&unitId=" + unitId + "&unionId=" + unionId
|
||||||
+ "&unionGroupId=" + unionGroupId + "&threeUnitId=" + threeUnitId + "&sexTypes=" + sexTypes + "&memberType=" + memberType
|
+ "&unionGroupId=" + unionGroupId + "&threeUnitId=" + threeUnitId + "&sexTypes=" + sexTypes + "&memberType=" + memberType
|
||||||
+ "&roleIds=" + roleIds + "&age=" + age + "&year=" + this.pageForm.year + "&memberStatus=" + memberStatus
|
+ "&roleIds=" + roleIds + "&age=" + age + "&year=" + this.pageForm.year + "&memberStatus=" + memberStatus + "&birthMonth=" + birthMonth
|
||||||
+ "&startDate=" + (startDate ? this.getDate(startDate) : '') + "&endDate=" + (endDate ? this.getDate(endDate) : '') + "&campus=" + (campus ? campus : '')
|
+ "&startDate=" + (startDate ? this.getDate(startDate) : '') + "&endDate=" + (endDate ? this.getDate(endDate) : '') + "&campus=" + (campus ? campus : '')
|
||||||
+ "&reverseSelection=" + (reverseSelection ? reverseSelection : '') + "&memberSearchName=" + (memberSearchName ? memberSearchName : '')
|
+ "&reverseSelection=" + (reverseSelection ? reverseSelection : '') + "&memberSearchName=" + (memberSearchName ? memberSearchName : '')
|
||||||
+ "&memberSearchKeyWord=" + (memberSearchKeyWord ? memberSearchKeyWord : '') + "&personTypes=" + personTypes
|
+ "&memberSearchKeyWord=" + (memberSearchKeyWord ? memberSearchKeyWord : '') + "&personTypes=" + personTypes
|
||||||
+ "&userStates=" + userStates + "&preparedBys=" + preparedBys + "&props=" + JSON.stringify(props)
|
+ "&userStates=" + userStates + "&preparedBys=" + preparedBys + "&personalStatus=" + personalStatus + "&props=" + JSON.stringify(props)
|
||||||
},
|
},
|
||||||
getDate(date) {
|
getDate(date) {
|
||||||
let year = date.getFullYear();
|
let year = date.getFullYear();
|
||||||
@@ -796,6 +847,7 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||||
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
||||||
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
|
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
|
||||||
|
pageForm.personalStatus = JSON.stringify(pageForm.personalStatus)
|
||||||
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
||||||
|
|
||||||
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
||||||
@@ -844,6 +896,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.pageForm.personTypes = []
|
this.pageForm.personTypes = []
|
||||||
this.pageForm.userStates = []
|
this.pageForm.userStates = []
|
||||||
this.pageForm.preparedBys = []
|
this.pageForm.preparedBys = []
|
||||||
|
this.pageForm.personalStatus = []
|
||||||
this.pageForm.unionId = []
|
this.pageForm.unionId = []
|
||||||
this.pageForm.unitId = []
|
this.pageForm.unitId = []
|
||||||
this.pageForm.activityGroupId = []
|
this.pageForm.activityGroupId = []
|
||||||
@@ -858,6 +911,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.pageForm.reverseSelection = false
|
this.pageForm.reverseSelection = false
|
||||||
this.pageForm.startDate = ''
|
this.pageForm.startDate = ''
|
||||||
this.pageForm.endDate = ''
|
this.pageForm.endDate = ''
|
||||||
|
this.pageForm.birthMonth = ''
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
},
|
},
|
||||||
tagClick(key, val) {
|
tagClick(key, val) {
|
||||||
@@ -897,6 +951,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.flushUnits()
|
this.flushUnits()
|
||||||
}
|
}
|
||||||
this.personTypeOptions = await getDictOptions("PERSON_TYPE")
|
this.personTypeOptions = await getDictOptions("PERSON_TYPE")
|
||||||
|
this.personalStatusOptions = await getDictOptions("USER_PERSONAL_STATUS")
|
||||||
this.userStateOptions = await getDictOptions("USER_STATE")
|
this.userStateOptions = await getDictOptions("USER_STATE")
|
||||||
this.preparedByOptions = await getDictOptions("PREPARED_BY")
|
this.preparedByOptions = await getDictOptions("PREPARED_BY")
|
||||||
this.memberStatusOptions = await getDictOptions("memberStatusText")
|
this.memberStatusOptions = await getDictOptions("memberStatusText")
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ const COMMON_QUERY = {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">人员类型</div>
|
<div class="search-item-label">人员性质</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<dict-select v-model="pageForm.personType" style="width: 100%" placeholder="人员类型" @change="doSearch"
|
<dict-select v-model="pageForm.preparedBy" style="width: 100%" placeholder="人员性质" @change="doSearch"
|
||||||
code="PERSON_TYPE"></dict-select>
|
code="PREPARED_BY"></dict-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
|
|||||||
@@ -153,25 +153,26 @@ layout("/layouts/platform.html"){
|
|||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const url = "/platform/sourcechange/manage/doBatchChange"
|
const url = "/platform/sourcechange/manage/doBatchChange"
|
||||||
let isSendMsg = false
|
await this.doOperate(url, ids, false)
|
||||||
const isHasNewTeacher = this.checkUsers.some(v=> v.changeInfosStr === '新入职')
|
// let isSendMsg = false
|
||||||
|
// const isHasNewTeacher = this.checkUsers.some(v=> v.changeInfosStr === '新入职')
|
||||||
const ids = this.checkUsers.map(item => item.id)
|
//
|
||||||
if (isHasNewTeacher) {
|
// const ids = this.checkUsers.map(item => item.id)
|
||||||
this.$confirm('勾选用户中有新入职教工,是否对新入职教职工发送入会邀请?', '提示', {
|
// if (isHasNewTeacher) {
|
||||||
confirmButtonText: '确定',
|
// this.$confirm('勾选用户中有新入职教工,是否对新入职教职工发送入会邀请?', '提示', {
|
||||||
cancelButtonText: '取消',
|
// confirmButtonText: '确定',
|
||||||
type: 'warning'
|
// cancelButtonText: '取消',
|
||||||
}).then(() => {
|
// type: 'warning'
|
||||||
isSendMsg = true
|
// }).then(() => {
|
||||||
this.doOperate(url, ids, isSendMsg)
|
// isSendMsg = true
|
||||||
}).catch(() => {
|
// this.doOperate(url, ids, isSendMsg)
|
||||||
isSendMsg = false
|
// }).catch(() => {
|
||||||
this.doOperate(url, ids, isSendMsg)
|
// isSendMsg = false
|
||||||
})
|
// this.doOperate(url, ids, isSendMsg)
|
||||||
} else {
|
// })
|
||||||
await this.doOperate(url, ids, isSendMsg)
|
// } else {
|
||||||
}
|
// await this.doOperate(url, ids, isSendMsg)
|
||||||
|
// }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
tableHandleSelectionChange(val){
|
tableHandleSelectionChange(val){
|
||||||
@@ -179,22 +180,23 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
async doSubmit(formData){
|
async doSubmit(formData){
|
||||||
const url = "/platform/sourcechange/manage/doSubmit"
|
const url = "/platform/sourcechange/manage/doSubmit"
|
||||||
let isSendMsg = false;
|
await this.doOperate(url, formData, false)
|
||||||
if (formData.changeInfosStr === '新入职') {
|
// let isSendMsg = false;
|
||||||
this.$confirm('该职工是新入职职工,是否发送入会邀请?', '提示', {
|
// if (formData.changeInfosStr === '新入职') {
|
||||||
confirmButtonText: '确定',
|
// this.$confirm('该职工是新入职职工,是否发送入会邀请?', '提示', {
|
||||||
cancelButtonText: '取消',
|
// confirmButtonText: '确定',
|
||||||
type: 'warning'
|
// cancelButtonText: '取消',
|
||||||
}).then(async () => {
|
// type: 'warning'
|
||||||
isSendMsg = true
|
// }).then(async () => {
|
||||||
await this.doOperate(url, formData, isSendMsg)
|
// isSendMsg = true
|
||||||
}).catch(async () => {
|
// await this.doOperate(url, formData, isSendMsg)
|
||||||
isSendMsg = false
|
// }).catch(async () => {
|
||||||
await this.doOperate(url, formData, isSendMsg)
|
// isSendMsg = false
|
||||||
})
|
// await this.doOperate(url, formData, isSendMsg)
|
||||||
} else {
|
// })
|
||||||
await this.doOperate(url, formData, isSendMsg)
|
// } else {
|
||||||
}
|
// await this.doOperate(url, formData, isSendMsg)
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
async doOperate(url, data, isSendMsg) {
|
async doOperate(url, data, isSendMsg) {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
|
|||||||
@@ -26,7 +26,13 @@ const USER_CHANGE_INFO = {
|
|||||||
|
|
||||||
<el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item>
|
<el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="人员类型">{{ viewData.personType }}</el-descriptions-item>
|
<el-descriptions-item label="人员类型">{{ viewData.personType }}</el-descriptions-item>
|
||||||
<el-descriptions-item></el-descriptions-item>
|
<el-descriptions-item label="进校时间">{{ viewData.schoolTime }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<template v-if="viewData.userState == '退休'">
|
||||||
|
<el-descriptions-item label="退休日期">{{ viewData.retireDate ? moment(viewData.retireDate).format("YYYY-MM-DD") : '暂无' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="福利享受截止日期">{{ moment(viewData.welfareStopDate).format("YYYY-MM-DD") }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
|
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
|
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
|
||||||
@@ -189,26 +195,18 @@ const USER_CHANGE_INFO = {
|
|||||||
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<template v-if="formData.userState == '退休'">
|
|
||||||
<el-descriptions-item label="退休日期">
|
|
||||||
<el-form-item prop="retireDate">
|
|
||||||
<el-date-picker v-model="formData.retireDate"
|
|
||||||
type="date"
|
|
||||||
:disabled="isView"
|
|
||||||
placeholder="请选择出生日期"
|
|
||||||
format="yyyy-MM-dd"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
style="width: 100%"></el-date-picker>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
<el-descriptions-item label="人员类型">
|
<el-descriptions-item label="人员类型">
|
||||||
<el-form-item prop="personType">
|
<el-form-item prop="personType">
|
||||||
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
||||||
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item v-if="formData.userState == null || formData.userState != '退休'"></el-descriptions-item>
|
<el-descriptions-item label="费用类型">
|
||||||
|
<el-form-item prop="personalStatus">
|
||||||
|
<dict-select v-model="formData.personalStatus" code="USER_PERSONAL_STATUS"
|
||||||
|
:disabled="allowFields('personalStatus')" style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="会员状态">
|
<el-descriptions-item label="会员状态">
|
||||||
<el-form-item prop="member">
|
<el-form-item prop="member">
|
||||||
@@ -230,6 +228,32 @@ const USER_CHANGE_INFO = {
|
|||||||
|
|
||||||
<el-descriptions-item></el-descriptions-item>
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
|
||||||
|
<template v-if="formData.userState == '退休'">
|
||||||
|
<el-descriptions-item label="退休日期">
|
||||||
|
<el-form-item prop="retireDate">
|
||||||
|
<el-date-picker v-model="formData.retireDate"
|
||||||
|
type="date"
|
||||||
|
:disabled="isView"
|
||||||
|
placeholder="请选择退休日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="福利享受截止日期">
|
||||||
|
<el-form-item prop="welfareStopDate">
|
||||||
|
<el-date-picker v-model="formData.welfareStopDate"
|
||||||
|
type="date"
|
||||||
|
:disabled="isView"
|
||||||
|
placeholder="请选择福利享受截止日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template v-if="formData.member == 1 && !isView">
|
<template v-if="formData.member == 1 && !isView">
|
||||||
<el-descriptions-item label="是否加入会员组别">
|
<el-descriptions-item label="是否加入会员组别">
|
||||||
|
|||||||
Reference in New Issue
Block a user