福利、签字

This commit is contained in:
Paidax
2024-12-26 08:30:06 +08:00
parent 0f6787c0cd
commit d6c4f48afc
56 changed files with 266 additions and 158 deletions
@@ -16,6 +16,8 @@ import io.v.nutz.base.utils.ViTool;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.commons.lang.ArrayUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
@@ -75,6 +77,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@POST
@RequiresPermissions("data.user.update")
public Object userPartData(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@@ -125,6 +128,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@POST
@RequiresPermissions("data.user.update")
public Object pageData(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@@ -252,6 +256,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@RequiresPermissions("data.user.update")
public Object cleanPart(@Param(value = "id", required = false) String id,
@Param(value = "groupId", required = false) Integer groupId,
@Param(value = "searchKeyword", required = false) String searchKeyword,
@@ -302,6 +307,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@RequiresPermissions("data.user.update")
public Object getPartCount() {
return dao.count(UserPartUp.class);
}
@@ -319,6 +325,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@POST
@RequiresPermissions("data.user.update")
public Object doSetUpUser(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@@ -393,6 +400,7 @@ public class UserPartUpdateController {
*/
@At
@ViReturn
@RequiresPermissions("data.user.update")
public Object getUserPart() {
Sql sql = Sqls.create("""
SELECT
@@ -418,6 +426,7 @@ public class UserPartUpdateController {
@At
@ViReturn
@RequiresPermissions("data.user.update")
public void doExportUser(PageForm pageForm,
@Param(value = "props", required = false) String props,
@Param(value = "unionId", required = false) String unionId,
@@ -478,4 +487,12 @@ public class UserPartUpdateController {
}
}
@At
@ViReturn
@RequiresPermissions("data.user.update")
public Object deleteNotInSourceUser() {
userPartUpService.deleteNotInSourceUser(false);
return null;
}
}
@@ -14,5 +14,5 @@ public interface UserPatUpService extends ViService<UserPartUp> {
void renewUserState();
void deleteNotInSourceUser();
void deleteNotInSourceUser(Boolean isAuto);
}
@@ -118,14 +118,14 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
//人员类型
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<String> personTypes = sysDictService.listMap(personTypeSql).stream().map(v -> v.getString("personType")).collect(Collectors.toList());
List<Sys_dict> personTypeList = sysDictService.getSubListByCode("UserType");
//dict中的personType,在user表中没有,这一部分删除
List<Sys_dict> deletePersonType = personTypeList.stream().filter(v -> !personTypes.contains(v.getName())).collect(Collectors.toList());
List<String> deletePersonTypes = deletePersonType.stream().map(Sys_dict::getId).collect(Collectors.toList());
if (Lang.isNotEmpty(deletePersonTypes)){
if (Lang.isNotEmpty(deletePersonTypes)) {
sysDictService.delete(deletePersonTypes);
}
@@ -152,9 +152,18 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
}
/**
* 删除不在人事库的人员状态
*
* @param isAuto 是否自动更新,true为自动更新,false为手动更新
*/
@Override
@Aop(TransAop.READ_COMMITTED)
public void deleteNotInSourceUser() {
public void deleteNotInSourceUser(Boolean isAuto) {
dao().update(Sys_user.class, Chain.make("preparedBy", "会员"), Cnd.where("member", "=", true));
dao().update(Sys_user.class, Chain.make("preparedBy", "教职工"), Cnd.where("member", "=", false));
Sql maxPullTimeSql = Sqls.create("select pullTime from user_source GROUP BY pullTime ORDER BY pullTime desc LIMIT 1");
maxPullTimeSql.setCallback(Sqls.callback.map());
dao().execute(maxPullTimeSql);
@@ -174,12 +183,22 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
List<String> userIdList = list.stream().map(v -> v.getString("id")).toList();
List<String> userLoginNameList = list.stream().map(v -> v.getString("loginname")).toList();
// 修改不在人事库人员的状态
dao().update(Sys_user.class, Chain.make("userState", "非人事库人员").add("personType", "非人事库人员")
.add("member", 0).add("welfareMember", 0),
Cnd.where("loginname", "in", userLoginNameList));
if (isAuto == null) {
return;
}
if (isAuto) {
// 修改不在人事库人员的状态
dao().update(Sys_user.class, Chain.make("userState", "非人事库人员").add("personType", "非人事库人员")
.add("member", 0).add("welfareMember", 0),
Cnd.where("loginname", "in", userLoginNameList));
// 去除不在人事库的人员角色,只保留公共角色
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", userIdList).and("roleId", "!=", Roles.PUBLIC));
} else {
// 删除不在人事库的人员,并清除角色
dao().clear(Sys_user.class, Cnd.where("loginname", "in", userLoginNameList));
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", userIdList));
}
// 去除不在人事库的人员角色,只保留公共角色
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", userIdList).and("roleId", "!=", Roles.PUBLIC));
}
}
@@ -1,20 +1,14 @@
package io.v.nutz.zhgh.data.constant;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.v.nutz.base.expression.Exp4;
import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.zhgh.data.model.UserSource;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.HashMap;
@@ -46,10 +40,21 @@ public interface SourceData {
}
/**
* 不进系统人员
* 不进系统人员类型
*/
List<String> NOT_ENTERING_USER = List.of("退休人员", "兼职教师", "非全日用工(项目临聘)", "服务外包和其他人员",
List<String> NOT_ENTERING_PERSON_TYPE = List.of("退休人员", "兼职教师", "非全日用工(项目临聘)", "服务外包和其他人员",
"教学编制2", "教学教师(附属医院)", "教学编制", "离休人员", "临时人员", "非全日制工", "博士后(在职)");
/**
* 不进系统在职状态
* 01 退休
* 05 调出
* 06 辞职
* 07 离职
* @see io.v.nutz.zhgh.data.constant.HMCFieldCode#USER_STATE_CODE
*/
List<String> NOT_ENTERING_USER_STATE = List.of("01", "05", "06", "07");
List<String> NOT_ENTERING_USER_LOGIN_NAME = List.of("2020000410", "2008000010");
/**
* 接口中的数据跟SourceUser的对应关系
@@ -114,7 +119,9 @@ public interface SourceData {
// checkSuccess(map);
List<NutMap> data = map.getAsList("data", NutMap.class);
for (NutMap row : data) {
if (NOT_ENTERING_USER.contains(row.getString("RYFLMC"))) {
if (NOT_ENTERING_PERSON_TYPE.contains(row.getString("RYFLMC"))
|| NOT_ENTERING_USER_LOGIN_NAME.contains(row.getString("GH"))
|| NOT_ENTERING_USER_STATE.contains(row.getString("DQZTM"))) {
continue;
}
Map entity = new HashMap(500);
@@ -148,33 +148,30 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
source.setWelfareMember(null);
Sys_user user = userMap.get(source.getLoginname().toLowerCase());
if (StrUtil.isNotBlank(source.getPersonType())
&& MEMBER_PERSON_TYPE.contains(source.getPersonType())
&& "在职".equals(source.getUserState())) {
source.setMember(1);
source.setWelfareMember(1);
// 符合条件的这类人员 人员性质设为会员
source.setPreparedBy("会员");
if (user != null && user.getMember() != 1) {
addMemberUserIds.add(user.getId());
}
if (user == null) {
addMemberUserIds.add(source.getId());
}
} else {
source.setMember(0);
source.setWelfareMember(0);
// 不符合条件的这类人员 人员性质设为教职工
source.setPreparedBy("教职工");
if (user != null && user.getMember() == 1) {
deleteMemberUserIds.add(user.getId());
}
}
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) {
@@ -224,20 +221,22 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
sysUserRoleService.insert(userRoles);
}
// 添加会员角色
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));
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));
}
}
// Collection<String[]> updateColumns = SourceData.USER_FIELD_RELATION.values();
@@ -253,7 +252,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
// 人员状态及在职状态更新
userPatUpService.renewUserState();
// 修改不在人事库的人员,删除角色
userPatUpService.deleteNotInSourceUser();
userPatUpService.deleteNotInSourceUser(true);
//清除缓存
// sysUserService.clearCache();
// sysRoleService.clearCache();
@@ -105,6 +105,7 @@ public enum MemberChangeHandle {
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()) {
@@ -115,6 +116,7 @@ public enum MemberChangeHandle {
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()){