diff --git a/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java b/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java index eae11f5..daafba5 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java @@ -45,8 +45,8 @@ public class SysDataUserPullController { cnd.and(Cnd.likeEX(Sys_user_source::getLoginname, pageForm.getLoginName())); cnd.andEX(Sys_user_source::getUnitName, "=", pageForm.getUnitName()); cnd.andEX(Sys_user_source::getUserState, "=", pageForm.getUserState()); - cnd.andEX(Sys_user_source::getEmploymentType, "=", pageForm.getEmploymentType()); - cnd.andEX(Sys_user_source::getStaffType, "=", pageForm.getStaffType()); + cnd.andEX(Sys_user_source::getPreparedBy, "=", pageForm.getPreparedBy()); + cnd.andEX(Sys_user_source::getPersonType, "=", pageForm.getPersonType()); if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user.java b/src/main/java/com/budwk/app/sys/models/Sys_user.java index 6dde378..c0b1b51 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user.java @@ -139,23 +139,8 @@ public class Sys_user extends BaseModel implements Serializable { @Column @Comment("来校时间") - @ColDefine(type = ColType.DATE) - private Date arrivalAtSchoolDate; - - @Column - @Comment("教职工类别") - @ColDefine(type = ColType.VARCHAR, width = 30) - private String staffCategory; - - @Column - @Comment("教职工类别") - @ColDefine(type = ColType.VARCHAR, width = 30) - private String staffType; - - @Column - @Comment("聘用方式") - @ColDefine(type = ColType.VARCHAR, width = 30) - private String employmentType; + @ColDefine(type = ColType.VARCHAR, width = 10) + private String arrivalAtSchoolDate; @Column @Comment("身份类型") @@ -167,6 +152,16 @@ public class Sys_user extends BaseModel implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 30) private String userState; + @Column + @Comment("人员类别") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String personType; + + @Column + @Comment("聘用方式") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String preparedBy; + @Column @Comment("退休时间") @ColDefine(type = ColType.DATE) diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user_history.java b/src/main/java/com/budwk/app/sys/models/Sys_user_history.java index 66c1c4b..d232738 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user_history.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user_history.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.nutz.dao.entity.annotation.*; import org.nutz.dao.interceptor.annotation.PrevInsert; +import org.nutz.lang.util.NutMap; import java.io.Serializable; import java.util.Date; @@ -185,6 +186,16 @@ public class Sys_user_history extends BaseModel implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 20) private String changeOrigin; + @Column + @Comment("详细变更记录,用于查询、列表展示") + @ColDefine(type = ColType.MYSQL_JSON) + private List changeInfos; + + @Column + @Comment("详细变更记录,文本类型,可用于导出") + @ColDefine(type = ColType.TEXT) + private String changeInfosStr; + @Column @Comment("变更原因") @ColDefine(type = ColType.VARCHAR, width = 100) diff --git a/src/main/java/com/budwk/app/sys/param/SysDataUserPullPageForm.java b/src/main/java/com/budwk/app/sys/param/SysDataUserPullPageForm.java index d9a2bdc..c35614f 100644 --- a/src/main/java/com/budwk/app/sys/param/SysDataUserPullPageForm.java +++ b/src/main/java/com/budwk/app/sys/param/SysDataUserPullPageForm.java @@ -28,9 +28,9 @@ public class SysDataUserPullPageForm extends PageForm { private String userState; @ApiModelProperty("教职工类别") - private String staffType; + private String personType; @ApiModelProperty("用人方式") - private String employmentType; + private String preparedBy; } diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java index d786a79..6597510 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java @@ -2,6 +2,8 @@ package com.budwk.app.sys.services.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; +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; @@ -13,73 +15,65 @@ import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.sys.models.*; import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.services.SysDataUserUpdateService; +import com.budwk.app.sys.services.SysDictService; +import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.sys.services.SysUserService; import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin; import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType; import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService; import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff; +import lombok.extern.slf4j.Slf4j; +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.Lang; import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; import org.nutz.mvc.Mvcs; +import org.springframework.beans.BeanUtils; import java.util.*; +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.stream.Collectors; /** * 全量更新系统用户数据 */ +@Slf4j @IocBean public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService { @Inject private Dao dao; - + @Inject + private SysDictService sysDictService; + @Inject + private SysRoleService sysRoleService; + @Inject + private SysUserService sysUserService; + @Inject + private ManyAddOrRenewUtil manyAddOrRenewUtil; @Inject private MemberManageService memberManageService; - @Inject - private ManyAddOrRenewUtil manyAddOrRenewUtil; - private static final String[] INFO_CENTER_PUSH_FIELDS = { - "username", - "userState", - "preparedBy", - "personType", - "comeSchoolDate", - "birthday", - "governmentPosition", - "technicalTitle", - "nation", - "sex", - "nationality", - "idCard", - "education", - "academicDegree" - }; - - private static final Map DICT_MAP = new HashMap<>() {{ - put("username", "姓名"); - put("userState", "在职状态"); - put("preparedBy", "人事编制"); - put("personType", "人员类型"); - put("comeSchoolDate", "来校年月"); - put("birthday", "出生日期"); - put("governmentPosition", "党政职务"); - put("technicalTitle", "技术职称"); - put("nation", "民族"); - put("sex", "性别"); - put("nationality", "国籍"); - put("idCard", "身份证号"); - put("education", "学历"); - put("academicDegree", "学位"); - }}; + /** + * 是会员的在职状态 + */ + private final List MEMBER_USER_STATE = List.of("在岗"); + /** + * 是会员的编制类型,博士后满两年退出会员 + */ + private final List MEMBER_PREPARED_BY = List.of("新人事代理", "校聘合同制", "事业编制", "博士后"); /** @@ -89,193 +83,310 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService * @return */ @Override + @Aop(TransAop.READ_COMMITTED) public String update(SysDataUserUpdateParam updateParam) { - Date nowDate = new Date(); + // 获取角色信息 + Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC); + Sys_role memberRole = sysRoleService.getByCode(RoleConstant.MEMBER); + //查询数据源 - List sysUserSources = dao.query(Sys_user_source.class, Cnd.where(Sys_user_source::getPullTime, "=", updateParam.getPullTime()).groupBy("loginname")); + List sources = dao.query(Sys_user_source.class, Cnd.where(Sys_user_source::getPullTime, "=", updateParam.getPullTime()).groupBy("loginname")); //查询系统用户 List sysUsers = dao.query(Sys_user.class, Cnd.NEW().groupBy("loginname")); - Map sysUserMap = sysUsers.stream().collect(Collectors.toMap(Sys_user::getLoginname, sysUser -> sysUser)); - // 查询特别人员中的多单位人员 -// List specialStaffList = dao.query(SpecialStaff.class, Cnd.where("isManyUnit", "=", true)); -// Set manyUnitUserIds = specialStaffList.stream().map(SpecialStaff::getUserId).collect(Collectors.toSet()); - //新入职的用户 - List newUsers = new ArrayList<>(); - //基本信息异动的用户变更后的数据 - List basicAfterChangeUsers = new ArrayList<>(); - //基本信息异动的用户变更前的数据 - List basicBeforeChangeUsers = new ArrayList<>(); - //基本信息异动用户的类型 loginName对应changeTypes - Map> basicChangeUserMap = new HashMap<>(); - // 存储基本信息、单位异动的user,去和sys_user_history对比出变更记录 - Map userMap = new HashMap<>(); - // 存储单位异动的人员,发送订阅,修改业务数据的信息 - List userIdList = new ArrayList<>(); + Map userMap = sysUsers.stream().collect(Collectors.toMap(Sys_user::getLoginname, sysUser -> sysUser)); - //判断是否有新入职用户 单位异动的用户 基本信息异动用户 - for (Sys_user_source sysUserSource : sysUserSources) { - // 如果是多单位人员,那就不做更新单位的操作 -// if (manyUnitUserIds.contains(sysUserSource.getId())) { -// sysUserSource.setUnitId(null); -// } - sysUserSource.setMember(null); - sysUserSource.setWelfareMember(null); - if (sysUserMap.containsKey(sysUserSource.getLoginname())) { - // 系统用户 - Sys_user sysUser = sysUserMap.get(sysUserSource.getLoginname()); - // 异动类型 - Set changeTypes = new HashSet<>(); - // 判断是否单位异动 - String sysUserSourceUnitId = sysUserSource.getUnitId(); - String sysUserUnitId = sysUser.getUnitId(); - if (StrUtil.isNotBlank(sysUserSourceUnitId) && !sysUserSourceUnitId.equals(sysUserUnitId)) { - changeTypes.add(MemberChangeType.UNIT_CHANGE.name()); - sysUserSource.setId(sysUser.getId()); - Sys_user user = BeanUtil.copyProperties(sysUserSource, Sys_user.class); - basicAfterChangeUsers.add(user); - basicBeforeChangeUsers.add(sysUser); - userMap.put(sysUser.getLoginname(), user); - userIdList.add(user.getId()); + // 要修改的用户表 + List needDoUpdateList = new CopyOnWriteArrayList<>(); + // 要新增的用户 + List needInitUserList = new CopyOnWriteArrayList<>(); + // 存储人员变更记录的表 + List histories = new CopyOnWriteArrayList<>(); + + // 添加会员角色 + List addMemberUserIds = new CopyOnWriteArrayList<>(); + // 移除会员角色 + List removeMemberUserIds = new CopyOnWriteArrayList<>(); + + // 获取允许变更的字段,同时再加上单位字段 + List dictList = sysDictService.getSubListByCode("MEMBER_ALLOW_CHANGES_FIELD"); + Set allowChangeFieldNames = dictList.stream().map(Sys_dict::getCode).collect(Collectors.toSet()); + allowChangeFieldNames.add("member"); + Map dictMap = dictList.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName)); + dictMap.put("member", "会员状态"); + + // 创建线程开始更新 + int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2; + List> futures = new CopyOnWriteArrayList<>(); + // 每批处理的数据量,可以根据实际情况调整 + int batchSize = 200; + for (int i = 0; i < sources.size(); i += batchSize) { + final int end = Math.min(i + batchSize, sources.size()); + List batch = sources.subList(i, end); + + CompletableFuture future = CompletableFuture.runAsync(() -> { + for (Sys_user_source source : batch) { + // 获取系统用户 + Sys_user user = userMap.get(source.getLoginname()); + + // 进入系统的人 + boolean isEnterUser = StrUtil.isNotBlank(source.getPreparedBy()) && MEMBER_PREPARED_BY.contains(source.getPreparedBy()) + && StrUtil.isNotBlank(source.getUserState()) && MEMBER_USER_STATE.contains(source.getUserState()); + + // 去校验是不是会员 + judgeMember(source, user, addMemberUserIds, removeMemberUserIds, isEnterUser); + + // 中间对象u + Sys_user u = new Sys_user(); + BeanUtils.copyProperties(source, u); + if (user == null && isEnterUser) { + // 新增教工,去初始化数据 + String salt = R.UU32(); + u.setSalt(salt); + u.setPassword(PwdUtil.getPassword(R.UU32(), salt)); + u.setLoginCount(0); + } else if (user != null){ + // 修改数据 + u.setId(user.getId()); + needDoUpdateList.add(u); + } + + Sys_user_history history = createHistory(source, user, dictMap, allowChangeFieldNames); + if (Lang.isEmpty(history)) { + continue; + } + // 在系统里的人,创建人员变更记录 + if (user != null) { + histories.add(history); + } else { + // 要进系统的,是新入职的也要创建变更记录 + if (isEnterUser && Lang.isNotEmpty(history.getChangeTypes()) && history.getChangeTypes().contains(MemberChangeType.NEW.name())) { + histories.add(history); + needInitUserList.add(u); + } + } } + }, Executors.newFixedThreadPool(numberOfThreads)); + futures.add(future); + } + // 确保线程完全走完 + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); - // 判断是否基本信息异动 - for (String field : INFO_CENTER_PUSH_FIELDS) { - // 反射获取字段值 - Object sysUserSourceValue = Convert.toStr(BeanUtil.getProperty(sysUserSource, field), ""); - Object sysUserValue = Convert.toStr(BeanUtil.getProperty(sysUser, field), ""); - if (!Objects.equals(sysUserSourceValue, sysUserValue)) { - changeTypes.add(MemberChangeType.BASIC_CHANGE.name()); - sysUserSource.setId(sysUser.getId()); - Sys_user user = BeanUtil.copyProperties(sysUserSource, Sys_user.class); - basicAfterChangeUsers.add(user); - basicBeforeChangeUsers.add(sysUser); - basicChangeUserMap.putIfAbsent(sysUserSource.getLoginname(), changeTypes); - userMap.put(sysUser.getLoginname(), user); - break; + + //如果有新用户,增加到用户表同时增加角色 + if (Lang.isNotEmpty(needInitUserList)) { + sysUserService.fastInsert(needInitUserList); + List roleList = needInitUserList.stream().map(item -> { + Sys_user_role userRole = new Sys_user_role(); + userRole.setRoleId(publicRole.getId()); + userRole.setUserId(item.getId()); + return userRole; + }).toList(); + manyAddOrRenewUtil.asyncExecuteFastInsert(roleList, 200); + } + + // 更新需要变更的用户 + manyAddOrRenewUtil.asyncExecuteUpdateIgnoreNull(needDoUpdateList, 200); + // 添加历史记录 + manyAddOrRenewUtil.asyncExecuteFastInsert(histories, 200); + + // 设置和移除会员角色 + if (Lang.isNotEmpty(addMemberUserIds)) { + List roleList = addMemberUserIds.stream().map(v -> { + Sys_user_role role = new Sys_user_role(); + role.setRoleId(memberRole.getId()); + role.setUserId(v); + return role; + }).toList(); + manyAddOrRenewUtil.asyncExecuteInsert(roleList, 200); +// dao.update(Sys_user.class, Chain.make("member", true), Cnd.where("id", "in", addMemberUserIds)); + } + + if (Lang.isNotEmpty(removeMemberUserIds)) { + dao.update(Sys_user.class, Chain.make("member", false), Cnd.where("id", "in", removeMemberUserIds)); + dao.clear(Sys_user_role.class, Cnd.where("userId", "in", removeMemberUserIds).and("roleId", "=", memberRole.getId())); + } + + return ""; + } + + + /** + * 构建变更的历史数据 + * @param source + * @param user + * @param dictMap + * @param allowChangeFieldNames + * @return + */ + private Sys_user_history createHistory(Sys_user_source source, Sys_user user, Map dictMap, Set allowChangeFieldNames) { + List changeTypes = new ArrayList<>(); + Sys_user_history history = new Sys_user_history(); + BeanUtil.copyProperties(user, history); + history.setId(R.UU32()); + history.setChangeTime(DateUtil.date()); + history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name()); + if (user == null) { + changeTypes.add(MemberChangeType.NEW.name()); + history.setChangeTypes(changeTypes); + return history; + } + + // 获取变更记录 + NutMap newMap = Lang.obj2nutmap(source); + NutMap sourceMap = Lang.obj2nutmap(user); + List changeList = new ArrayList<>(); + for (String fieldName : allowChangeFieldNames) { + if (List.of("retireDate", "welfareStopDate").contains(fieldName)) { + continue; + } + memberManageService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); + } + if (Lang.isEmpty(changeList)) { + return null; + } + String changeInfos = changeList.stream().map(v -> { + return v.getString("name") + ":" + HtmlUtil.cleanHtmlTag(v.getString("value")) + "—>" + 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(Sys_user_source source, Sys_user user, List changeTypes){ + changeTypes.add(MemberChangeType.BASIC_CHANGE.name()); + +// if (!ObjectUtil.equals(user.getUserState(), source.getUserState())) { +// List 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()) { + changeTypes.add(MemberChangeType.RESTORE.name()); + } else { + changeTypes.add(MemberChangeType.WITHDRAWAL.name()); + } + } + + if (!ObjectUtil.equals(user.getUnitId(), source.getUnitId())) { + changeTypes.add(MemberChangeType.UNIT_CHANGE.name()); + } + } + + + /** + * 判断是否是会员 + * @param source + * @param user + */ + private void judgeMember(Sys_user_source source, Sys_user user, List addMemberUserIds, List removeMemberUserIds, boolean isEligibleForMember){ + // 根据上面定义final常量 在职状态、编制类型去判断是不是会员 + if (user == null && isEligibleForMember) { + addMemberUserIds.add(source.getId()); + } else { + if (user == null) { + return; + } + boolean isUserMember = user.getMember(); + + // 判断博士后 + if ("博士后".equals(source.getPreparedBy())) { + if (isUserMember) { + String arrivalDateStr = source.getArrivalAtSchoolDate(); + // 将字符串转换为 DateTime 对象 + DateTime arrivalDate = DateUtil.parse(arrivalDateStr, "yyyy-MM"); + // 获取当前日期 + DateTime currentDate = DateUtil.date(); + // 计算两个日期之间的差异(单位:年) + long yearsDifference = DateUtil.betweenYear(arrivalDate, currentDate, false); + // 判断是否已经过去了两年 + if (yearsDifference >= 2) { + removeMemberUserIds.add(user.getId()); + source.setMember(false); + } + } else { + if (isEligibleForMember) { + addMemberUserIds.add(user.getId()); + source.setMember(true); } } } else { - // 新增用户 - Sys_user user = BeanUtil.copyProperties(sysUserSource, Sys_user.class); - //重新设置 - user.setId(R.UU32()); - //密码设置 都走单点登录 - user.setPassword(R.UU32()); - String salt = R.UU32(); - user.setSalt(salt); - user.setPassword(PwdUtil.getPassword(user.getPassword(), salt)); - user.setLoginCount(0); - newUsers.add(user); - } - } - - - //添加新入职用户 - if (ObjectUtil.isNotEmpty(newUsers)) { - SysRoleServiceImpl sysRoleService = Mvcs.getIoc().get(SysRoleServiceImpl.class); - Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC); - dao.fastInsert(newUsers); - //新增用户添加公共角色 - List sysUserRoles = newUsers.stream().map(user -> { - Sys_user_role sysUserRole = new Sys_user_role(); - sysUserRole.setUserId(user.getId()); - sysUserRole.setRoleId(publicRole.getId()); - return sysUserRole; - }).toList(); - dao.insert(sysUserRoles); - sysRoleService.clearCache(); - //新增用户加入到变更记录表 - List sysUserHistories = newUsers.stream().map(user -> { - Sys_user_history history = BeanUtil.copyProperties(user, Sys_user_history.class); - history.setChangeTypes(List.of(MemberChangeType.NEW.name())); - history.setChangeTime(nowDate); - history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name()); - return history; - }).collect(Collectors.toList()); - dao.fastInsert(sysUserHistories); - } - - - //修改基本信息异动的用户 单位异动的用户 - if (ObjectUtil.isNotEmpty(basicAfterChangeUsers)) { - Set allowChangeFieldNames = new HashSet<>(Arrays.asList(INFO_CENTER_PUSH_FIELDS)); - //更新信息 - manyAddOrRenewUtil.asyncExecuteUpdateIgnoreNull(basicAfterChangeUsers, 200); - -// dao.updateIgnoreNull(basicAfterChangeUsers); - List removeMemberRoleUserIds = new ArrayList<>(); - //变更记录 - List sysUserHistories = basicBeforeChangeUsers.stream().map(user -> { - if (List.of("辞职", "离职", "退休", "调出", "死亡", "退休死亡", "解聘", "长病假").contains(user.getUserState())) { - removeMemberRoleUserIds.add(user.getId()); + if (isUserMember && !isEligibleForMember) { + removeMemberUserIds.add(user.getId()); + source.setMember(false); + } else if (!isUserMember && isEligibleForMember) { + addMemberUserIds.add(user.getId()); + source.setMember(true); } - Sys_user_history history = BeanUtil.copyProperties(user, Sys_user_history.class); - history.setId(R.UU32()); - history.setChangeTypes(basicChangeUserMap.get(user.getLoginname()).stream().toList()); + } + } + } - history.setChangeTime(nowDate); - history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name()); - return history; - }).collect(Collectors.toList()); -// manyAddOrRenewUtil.asyncExecuteFastInsert(sysUserHistories, 200); - dao.fastInsert(sysUserHistories); - // 存储在职状态变为退休 的人员id - Set retireUserIds = new HashSet<>(); - // 将变更详情记录,新增用户由于没有任何变更,直接摒弃 - List userChangeInfoList = sysUserHistories.stream().map(previous -> { - // 当前的数据,上面已经更改了sys_user,那么最新的数据就是从source中获取 - Sys_user sysUser = userMap.get(previous.getLoginname()); - Sys_user_history current = BeanUtil.copyProperties(sysUser, Sys_user_history.class); - // 比较出变更了的字段,记录变更数据 - List changeInfos = memberManageService.compareChange(current, previous, allowChangeFieldNames, DICT_MAP); - // str 类型的 变更记录,可便于导出和直接展示 - String changeInfoStr = changeInfos.stream().map(v -> { - // 记录在职状态 变成退休的人的id - if ("userState".equals(v.getString("fieldName")) && "退休".equals(v.getString("newValue"))) { - retireUserIds.add(sysUser.getId()); + /** + * 数据大批量更新 + * @param needDoUpdateList 需要更新的数据 + */ + private void massUpdatesAsync(List needDoUpdateList) { + // 线程去更新 + int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2; + ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads); + ExecutorCompletionService ecs = new ExecutorCompletionService<>(executorService); + + int batchSize = 200; + // 共享锁 + Lock lock = new ReentrantLock(); + try { + for (int i = 0; i < needDoUpdateList.size(); i += batchSize) { + final int end = Math.min(i + batchSize, needDoUpdateList.size()); + List batch = needDoUpdateList.subList(i, end); + + ecs.submit(() -> { + lock.lock(); + try { + dao.updateIgnoreNull(batch); + } finally { + lock.unlock(); } - return "(变更字段:" + v.getString("name") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("value")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")"; - }).collect(Collectors.joining(";")); - // 上面变更的字段和数据,就直接记录在这张表里 - Sys_user_change_info info = new Sys_user_change_info(); - info.setUserId(sysUser.getId()); - info.setLoginname(current.getLoginname()); - info.setUsername(current.getUsername()); - info.setUserHistoryId(previous.getId()); - info.setChangeTime(nowDate); - info.setChangeOrigin(previous.getChangeOrigin()); - info.setChangeInfos(changeInfos); - info.setChangeInfosStr(changeInfoStr); - return info; - }).toList(); - manyAddOrRenewUtil.asyncExecuteFastInsert(userChangeInfoList, 200); + return null; + }); + } - - if (Lang.isNotEmpty(retireUserIds)) { - // 是否有退休用户,有:存储当前的退休时间,删除会员角色 - Sql sql = Sqls.create("update sys_user set retireDate = now() where id in (@userId)").setParam("userId", retireUserIds); - dao.execute(sql); - - removeMemberRoleUserIds.addAll(retireUserIds); - // 删除会员角色 - Sys_role role = dao.fetch(Sys_role.class, Cnd.where("`code`", "=", RoleConstant.MEMBER.name())); - dao.clear(Sys_user_role.class, Cnd.where("userId", "in", removeMemberRoleUserIds).and("roleId", "=", role.getId())); - dao.update(Sys_user.class, Chain.make("member", false), Cnd.where("id", "in", removeMemberRoleUserIds)); + for (int i = 0; i < needDoUpdateList.size(); i += batchSize) { + try { + Future future = ecs.take(); + future.get(); + } catch (InterruptedException | ExecutionException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("Error during batch update", e); + } + } + } catch (Exception e) { + log.error("Error in massUpdatesAsync", e); + throw new RuntimeException("Error in massUpdatesAsync", e); + } finally { + executorService.shutdown(); + try { + if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) { + executorService.shutdownNow(); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } } - - if (Lang.isNotEmpty(userIdList)) { - // 删除有关单位的角色 - dao.clear(Sys_user_role.class, Cnd.where("userId", "in", userIdList) - .and(Cnd.exps("unitId", "is not", null).or("unionId", "is not", null))); - - // 单位异动人员发送订阅 - MemberChangeType unitChange = MemberChangeType.UNIT_CHANGE; - for (String userId : userIdList) { - SysUserPublisher.notify(SysUserEvent.builder().memberChangeType(unitChange).userId(userId).build()); - } - } - return ""; } } diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserPullServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserPullServiceImpl.java index 92a7b70..4e4bc32 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserPullServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserPullServiceImpl.java @@ -88,7 +88,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl Sys_user_source sysUser = new Sys_user_source(); sysUser.setLoginname(jsonObject.getStr("zgh")); sysUser.setUsername(jsonObject.getStr("xm")); - sysUser.setSex(jsonObject.getStr("xbmc")); + sysUser.setSex(StrUtil.equals("男性", jsonObject.getStr("xbmc")) ? "男" : StrUtil.equals("女性", jsonObject.getStr("xbmc")) ? "女" : null); sysUser.setBirthday(jsonObject.getDate("csrq")); sysUser.setNativePlace(jsonObject.getStr("jgmc")); sysUser.setNationality(jsonObject.getStr("gjdqmc")); @@ -99,19 +99,18 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl sysUser.setUnitName(jsonObject.getStr("dwmc")); sysUser.setUnitId(jsonObject.getStr("dwdm")); sysUser.setUserState(jsonObject.getStr("jzgdqztmc")); - sysUser.setEmploymentType(jsonObject.getStr("yrfsmc")); + sysUser.setPreparedBy(jsonObject.getStr("yrfsmc")); + sysUser.setPersonType(jsonObject.getStr("jzglbmc")); sysUser.setEducation(jsonObject.getStr("zgxlmc")); sysUser.setAcademicDegree(jsonObject.getStr("zgxwmc")); sysUser.setMobile(jsonObject.getStr("sjh")); - sysUser.setStaffCategory(jsonObject.getStr("jzglbmc")); - sysUser.setStaffType(jsonObject.getStr("jzglbmc")); sysUser.setJoinPartyDate(jsonObject.getDate("rdsj")); sysUser.setTechnicalTitle(jsonObject.getStr("zyjszwmc")); sysUser.setTechnicalTitleLevel(jsonObject.getStr("zyjszwjbmc")); sysUser.setPosition(jsonObject.getStr("gbzw")); sysUser.setPositionLevel(jsonObject.getStr("gbzwjbmc")); sysUser.setEmployeeLevel(jsonObject.getStr("zydjmc")); - sysUser.setArrivalAtSchoolDate(jsonObject.getDate("lxny")); + sysUser.setArrivalAtSchoolDate(jsonObject.getStr("lxny")); sysUser.setRetireDate(jsonObject.getDate("yjtxrq")); sysUser.setIdentityType(jsonObject.getStr("grsfmc")); sysUser.setPullTime(nowDate); @@ -161,7 +160,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl //判断是否要更新学位字典 List sourceAcademicDegrees = userSources.stream().map(Sys_user::getAcademicDegree).filter(StrUtil::isNotBlank).distinct().toList(); //判断是否要更新教职工类别字典 - List sourceStaffTypes = userSources.stream().map(Sys_user::getStaffType).filter(StrUtil::isNotBlank).distinct().toList(); + List personTypes = userSources.stream().map(Sys_user::getPersonType).filter(StrUtil::isNotBlank).distinct().toList(); //判断是否要更新身份类型字典 List sourceIdentityTypes = userSources.stream().map(Sys_user::getIdentityType).filter(StrUtil::isNotBlank).distinct().toList(); @@ -270,27 +269,27 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl SELECT unitName, userState, - employmentType, - staffType + preparedBy, + personType FROM sys_user_source GROUP BY unitName, userState, - employmentType, - staffType + preparedBy, + personType """); List list = listMap(sql); List unitNames = list.stream().map(user -> user.getString("unitName")).distinct().toList(); List userStates = list.stream().map(user -> user.getString("userState")).distinct().toList(); - List preparedBys = list.stream().map(user -> user.getString("employmentType")).distinct().toList(); - List personTypes = list.stream().map(user -> user.getString("staffType")).distinct().toList(); + List preparedBys = list.stream().map(user -> user.getString("preparedBy")).distinct().toList(); + List personTypes = list.stream().map(user -> user.getString("personType")).distinct().toList(); return NutMap.NEW() .addv("unitNames", unitNames) .addv("userStates", userStates) - .addv("employmentTypes", preparedBys) - .addv("staffTypes", personTypes); + .addv("preparedBys", preparedBys) + .addv("personTypes", personTypes); } @Override diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index b31e34f..78fa009 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -90,10 +90,10 @@ public class View_user { private Date arrivalAtSchoolDate; @Column - private String staffType; + private String personType; @Column - private String employmentType; + private String preparedBy; @Column private String identityType; diff --git a/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitProjectServiceImpl.java b/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitProjectServiceImpl.java index 1004b55..ea045bd 100644 --- a/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitProjectServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitProjectServiceImpl.java @@ -173,7 +173,7 @@ public class BenefitProjectServiceImpl extends BaseServiceImpl i benefitUser.setLoginName(v.getLoginname()); benefitUser.setUnionId(v.getUnionId()); benefitUser.setUnitId(v.getUnitId()); - benefitUser.setPersonType(v.getStaffType()); + benefitUser.setPersonType(v.getPersonType()); benefitUser.setUserState(v.getUserState()); if (project.getProvideMode().equals("BENEFIT_PROVIDE_MODE_ONE") && !project.getSignMode().equals("BENEFIT_SIGN_MODE_TWO")) { //如果发放模式为统一发放并且不需要签字的话,默认设置为已签收 diff --git a/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitUserServiceImpl.java b/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitUserServiceImpl.java index f0dab84..34a3a85 100644 --- a/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitUserServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/benefit/service/impl/BenefitUserServiceImpl.java @@ -115,7 +115,7 @@ public class BenefitUserServiceImpl extends BaseServiceImpl impleme benefitUser.setLoginName(v.getLoginname()); benefitUser.setUnionId(v.getUnionId()); benefitUser.setUnitId(v.getUnitId()); - benefitUser.setPersonType(v.getStaffType()); + benefitUser.setPersonType(v.getPersonType()); benefitUser.setUserState(v.getUserState()); return benefitUser; }).collect(Collectors.toList()); @@ -153,7 +153,7 @@ public class BenefitUserServiceImpl extends BaseServiceImpl impleme benefitUser.setBenefitId(businessId); benefitUser.setUnionId(user.getUnionId()); benefitUser.setUnitId(user.getUnitId()); - benefitUser.setPersonType(user.getStaffType()); + benefitUser.setPersonType(user.getPersonType()); benefitUser.setUserState(user.getUserState()); benefitUser.setLoginName(user.getLoginname()); benefitUser.setUserName(user.getUsername()); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/verification/MemberBranchVerificationCheckController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/verification/MemberBranchVerificationCheckController.java index 979ac67..68392dc 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/verification/MemberBranchVerificationCheckController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/verification/MemberBranchVerificationCheckController.java @@ -133,7 +133,6 @@ public class MemberBranchVerificationCheckController { Sys_user user = BeanUtil.copyProperties(history, Sys_user.class); user.setId(record.getUserId()); dao.update(user); - dao.clear(Sys_user_change_info.class, Cnd.where("userHistoryId", "=", history.getId())); } } dao.insertOrUpdate(record); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java index 665c6eb..860d8b4 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java @@ -35,9 +35,9 @@ public class MemberStatisticsPageForm extends PageForm { private List unionGroupId; - private List staffTypes; + private List personTypes; - private List employmentTypes; + private List preparedBys; private List userStates; diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberManageService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberManageService.java index 01c740f..e11a209 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberManageService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberManageService.java @@ -81,6 +81,16 @@ public interface MemberManageService extends BaseService { void compareMemberChangeInfoAndUpdateUser(MemberApplyRecord record); + /** + * 比较两个对象,并记录变更的字段工具 + * + * @param newMap 新数据 + * @param sourceMap 原数据 + * @param fieldsMap 变更字段 + * @param changeList 变更集合 + */ + void extractChange(NutMap newMap, NutMap sourceMap, String fieldName, Map fieldsMap, List changeList); + /** * 获取会员变更信息,memberApplyRecord表中名单核对事项人员与sys_user表中人员对比 * @param userId diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index 80e574e..f3042c1 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -295,11 +295,11 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement */ @Override public List compareMemberChangeInfo(Sys_user_history history) { - Sys_user_change_info info = dao().fetch(Sys_user_change_info.class, Cnd.where("userHistoryId", "=", history.getId())); - if (ObjectUtil.isEmpty(info)) { + List infos = history.getChangeInfos(); + if (ObjectUtil.isEmpty(infos)) { throw new BaseException("获取变更记录失败"); } - return info.getChangeInfos(); + return infos; } /** @@ -414,7 +414,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement chain.add("member", record.getMember()); chain.add("welfareMember", record.getWelfareMember()); - dao().insert(history); + Sys_role memberRole = dao().fetch(Sys_role.class, Cnd.where("`code`", "=", "MEMBER")); dao().clear(Sys_user_role.class, Cnd.where("userId", "=", user.getId()).and("roleId","=", memberRole.getId())); @@ -434,18 +434,10 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement return "(变更字段:" + v.getString("name") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("value")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")"; }).collect(Collectors.joining(";")); record.setChangeInfos(changeInfos); -// dao().updateIgnoreNull(record); - Sys_user_change_info userChangeInfo = new Sys_user_change_info(); - userChangeInfo.setUserId(record.getUserId()); - userChangeInfo.setLoginname(record.getLoginname()); - userChangeInfo.setUsername(record.getUsername()); - userChangeInfo.setUserHistoryId(history.getId()); - userChangeInfo.setChangeTime(nowDate); - userChangeInfo.setChangeOrigin(history.getChangeOrigin()); - userChangeInfo.setChangeInfos(changeList); - userChangeInfo.setChangeInfosStr(changeInfos); - dao().insert(userChangeInfo); + history.setChangeInfos(changeList); + history.setChangeInfosStr(changeInfos); + dao().insert(history); dao().update(Sys_user.class, chain, Cnd.where("loginname", "=", record.getLoginname())); } else { @@ -489,7 +481,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement * @param dictMap 字典数据 * @param changeList 变更集合 */ - private void extractChange(NutMap current, NutMap previous, String fieldName, Map dictMap, List changeList) { + @Override + public void extractChange(NutMap current, NutMap previous, String fieldName, Map dictMap, List changeList) { try { Object currentValue = this.booleanVerification(current.get(fieldName)); Object previousValue = this.booleanVerification(previous.get(fieldName)); @@ -527,10 +520,13 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement return ((Boolean) value) ? "是" : "否"; } // 处理数值类型 - if (value instanceof Number && List.of(0,1).contains((Integer) 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(); } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java index b5aa11f..175532e 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java @@ -87,8 +87,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple try { handleField("unionId", pageForm.getUnionId(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("unitId", pageForm.getUnitId(), reverseSelection, IN_OR_NIN_OP, cnd); - handleField("staffType", pageForm.getStaffTypes(), reverseSelection, IN_OR_NIN_OP, cnd); - handleField("employmentType", pageForm.getEmploymentTypes(), reverseSelection, IN_OR_NIN_OP, cnd); + handleField("personType", pageForm.getPersonTypes(), reverseSelection, IN_OR_NIN_OP, cnd); + handleField("preparedBy", pageForm.getPreparedBys(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("userState", pageForm.getUserStates(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("sex", pageForm.getSexTypes(), reverseSelection, IN_OR_NIN_OP, cnd); cnd.andEX("sur.roleId", IN_OR_NIN_OP, pageForm.getRoleIds()); @@ -137,11 +137,10 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple u.positionLevel, u.employeeLevel, u.arrivalAtSchoolDate, - u.staffCategory, - u.employmentType, + u.personType, + u.preparedBy, u.identityType, u.userState, - u.staffType, u.unionName, u.unitName, u.member diff --git a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareListController.java b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareListController.java index 8fdab79..aadf7a8 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareListController.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareListController.java @@ -275,7 +275,7 @@ public class WelfareListController { list.setWelfareUnitId(user.getUnionId()); list.setProjectId(businessId); list.setWelfareSecondLevelUnitId(user.getUnitId()); - list.setPersonType(user.getStaffType()); + list.setPersonType(user.getPersonType()); list.setUserState(user.getUserState()); welfareLists.add(list); } else { diff --git a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareListServiceImpl.java b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareListServiceImpl.java index 2099654..10a16b2 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareListServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareListServiceImpl.java @@ -367,7 +367,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl impleme welfareList.setUserId(v.getId()); welfareList.setWelfareUnitId(v.getUnionId()); welfareList.setWelfareSecondLevelUnitId(v.getUnitId()); - welfareList.setPersonType(v.getStaffType()); + welfareList.setPersonType(v.getPersonType()); welfareList.setUserState(v.getUserState()); return welfareList; }).collect(Collectors.toList()); diff --git a/src/main/resources/static/components/module/userInfo/index.vue b/src/main/resources/static/components/module/userInfo/index.vue index 8a3bb1d..8f6d5a5 100644 --- a/src/main/resources/static/components/module/userInfo/index.vue +++ b/src/main/resources/static/components/module/userInfo/index.vue @@ -15,7 +15,6 @@ {{ viewData.email }} {{ viewData.member ? "是" : "否" }} {{ viewData.welfareMember ? "是" : "否" }} - {{ viewData.wantJoinLoveMutualAidAssociation ? "是" : "否" }}
diff --git a/src/main/resources/views/platform/sys/data/user/pull.html b/src/main/resources/views/platform/sys/data/user/pull.html index 9cd4711..bd173b9 100644 --- a/src/main/resources/views/platform/sys/data/user/pull.html +++ b/src/main/resources/views/platform/sys/data/user/pull.html @@ -38,13 +38,13 @@ layout("/layouts/platform.html"){ - - + + - - + + @@ -64,8 +64,8 @@ layout("/layouts/platform.html"){ - - + + @@ -103,8 +103,8 @@ layout("/layouts/platform.html"){ return { unitNameOptions: [], userStateOptions: [], - employmentTypeOptions:[], - staffTypeOptions: [], + preparedByOptions:[], + personTypeOptions: [], pullTimeOptions: false, sourceTime: null, pullTimeDialogVisible: false @@ -133,8 +133,8 @@ layout("/layouts/platform.html"){ if (resp.code === 0) { this.unitNameOptions = resp.data.unitNames this.userStateOptions = resp.data.userStates - this.staffTypeOptions = resp.data.staffTypes - this.employmentTypeOptions = resp.data.employmentTypes + this.personTypeOptions = resp.data.personTypes + this.preparedByOptions = resp.data.preparedBys } }) }, diff --git a/src/main/resources/views/platform/sys/data/user/update.html b/src/main/resources/views/platform/sys/data/user/update.html index b13be65..5fc6770 100644 --- a/src/main/resources/views/platform/sys/data/user/update.html +++ b/src/main/resources/views/platform/sys/data/user/update.html @@ -62,7 +62,7 @@ layout("/layouts/platform.html"){ - + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js index 224cd50..fbfd882 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js @@ -28,9 +28,6 @@ const MEMBER_AUDIT_CHANGE_INFO = { {{ viewData.member ? '是' : '否' }} {{ viewData.welfareMember ? '是' : '否' }} - {{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否' - }} - diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/change/memberChangeInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/change/memberChangeInfo.js index 4880b2c..623b198 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/change/memberChangeInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/change/memberChangeInfo.js @@ -22,7 +22,6 @@ const MEMBER_CHANGE_INFO = { {{ viewData.email }} {{ viewData.member ? '是' : '否' }} {{ viewData.welfareMember ? '是' : '否' }} - {{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否' }} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js index 6faa569..69f9b19 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js @@ -17,8 +17,8 @@ {{ viewData.joinPartyDate ? $moment(viewData.joinPartyDate).format('YYYY-MM-DD') : null }} {{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null}} {{ viewData.identityType }} - {{ viewData.employmentType }} - {{ viewData.staffType }} + {{ viewData.preparedBy }} + {{ viewData.personType }} {{ viewData.userState }} {{ viewData.retireDate ? $moment(viewData.retireDate).format('YYYY-MM-DD') : null }} @@ -28,9 +28,6 @@ {{ viewData.member ? '是' : '否' }} {{ viewData.welfareMember ? '是' : '否' }} - {{ viewData.wantJoinLoveMutualAidAssociation ? '是' : - '否' }} -
学历信息
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/verification/memberVerificationChange.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/verification/memberVerificationChange.js index 4655144..6257816 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/verification/memberVerificationChange.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/verification/memberVerificationChange.js @@ -19,7 +19,6 @@ const MEMBER_VERIFICATION_CHANGE = { {{ viewData.email }} {{ viewData.member ? '是' : '否' }} {{ viewData.welfareMember ? '是' : '否' }} - {{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否' }} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html index bccc528..7778f73 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html @@ -10,34 +10,48 @@ layout("/layouts/platform.html"){ /*color: #ff0000;*/ margin-bottom: 10px; } - + .query-row { - height: 55px; - display: flex; - justify-content: center; - align-items: center; - box-sizing: border-box; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; } - + .query-row:not(:last-child) { - border-bottom: 1px dashed rgb(230, 230, 230); + border-bottom: 1px dashed rgb(230, 230, 230); } - - .el-divider__text { - position: absolute; - background-color: var(--color-white); - padding: 0 !important; - font-weight: 500; - color: var(--color-text-primary); - font-size: 14px; - } - - /*.query-row:not(:last-child,:first-child) {*/ - /* height: 70px;*/ - /*}*/ - + .query-row-title { - width: 120px; + width: 120px; + } + + .query-row > .query-title { + width: 100px; + max-width: 100px; + min-width: 100px; + overflow: hidden; + } + + .query-row > .query-content { + min-width: 200px; + overflow: hidden; + } + + .query-row > .query-content > .el-tag { + margin-bottom: 5px; + margin-top: 5px; + } + + @media screen and (max-width: 992px) { + .query-row:nth-child(4) .query-content .el-col:not(:last-child) { + margin-bottom: 5px; + } + + .query-title { + display: none; + } }
@@ -64,79 +78,83 @@ layout("/layouts/platform.html"){ - - - - 人员类型: - - - {{ item.name }} - - 清空 - - - - - - - 人事编制: - - - {{ item.name }} - - 清空 - - - - - - - 在职状态: - - - {{ item.name }} - - - 清空 - - - - - - 模糊查询: - - - - - - + + + + 在职状态: + + + {{ item.name }} + + + 清空 + + 全部 + + + + + + 教职工类别: + + + {{ item.name }} + + + 清空 + + 全部 + + + + + + 聘用方式: + + + {{ item.name }} + + + 清空 + + 全部 + + + + @@ -293,8 +311,8 @@ layout("/layouts/platform.html"){ this.unions = await this.$businessTool.listUnion(store?.state.user.union.id) this.units = await this.$businessTool.listUnit(store?.state.user.union.id) } - this.personTypeOptions = await this.$businessTool.getDictOptions('PERSON_TYPE') - this.preparedByOptions = await this.$businessTool.getDictOptions('PREPARED_BY') + this.personTypeOptions = await this.$businessTool.getDictOptions('USER_STAFF_TYPE') + this.preparedByOptions = await this.$businessTool.getDictOptions('USER_EMPLOYMENT_TYPE') this.userStateOptions = await this.$businessTool.getDictOptions('USER_STATE') }, async flushUnits() { diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html index 7112325..3d6aa75 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html @@ -145,8 +145,8 @@ layout("/layouts/platform.html"){ {prop: 'idCardType', label: '证件类型'}, {prop: 'idCard', label: '证件号码', width: 180}, {prop: 'userState', label: '在职状态', sortable: true}, - {prop: 'staffType', label: '教职工类别', sortable: true}, - {prop: 'employmentType', label: '聘用方式', sortable: true}, + {prop: 'personType', label: '教职工类别', sortable: true}, + {prop: 'preparedBy', label: '聘用方式', sortable: true}, {prop: 'identityType', label: '身份类型', sortable: true}, {prop: 'unionName', label: '所属工会', sortable: true}, {prop: 'unitName', label: '所属单位', sortable: true}, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js index 8cade23..a1c62e2 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js @@ -99,21 +99,21 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { + :effect="pageForm.personTypes.includes(item.name)?'dark':'plain'" + @click="tagClick('personTypes',item.name)"> {{ item.name }} 清空 + @click="pageForm.personTypes=[];doSearch()">清空 全部 @@ -124,21 +124,21 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { + :effect="pageForm.preparedBys.includes(item.name)?'dark':'plain'" + @click="tagClick('preparedBys',item.name)"> {{ item.name }} 清空 + @click="pageForm.preparedBys=[];doSearch()">清空 全部 @@ -210,8 +210,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { unionGroupId: [], threeUnitId: [], searchName: "username", - staffTypes: [], - employmentTypes: [], + personTypes: [], + preparedBys: [], userStates: [], memberStatus: [], year: moment().format("YYYY"), @@ -226,8 +226,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { startDate: "", endDate: "" }, - staffTypeOptions: [], - employmentTypeOptions: [], + personTypeOptions: [], + preparedByOptions: [], userStateOptions: [], memberStatusOptions: [], unions: [], @@ -275,11 +275,11 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { this.doSearch() }, /*checkPersonType(type) { - let idx = this.pageForm.staffTypes.indexOf(type) + let idx = this.pageForm.personTypes.indexOf(type) if (idx !== -1) { - this.pageForm.staffTypes.splice(idx, 1) + this.pageForm.personTypes.splice(idx, 1) } else { - this.pageForm.staffTypes.push(type) + this.pageForm.personTypes.push(type) } this.doSearch() },*/ @@ -313,8 +313,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { this.pageForm.userId = [] this.pageForm.memberTypes = [] this.pageForm.sexTypes = [] - this.pageForm.staffTypes = [] - this.pageForm.employmentTypes = [] + this.pageForm.personTypes = [] + this.pageForm.preparedBys = [] this.pageForm.memberStatus = [] this.pageForm.userStates = [] this.pageForm.unionId = [] @@ -352,10 +352,10 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id) } this.$businessTool.getDictOptions("USER_STAFF_TYPE").then((data) => { - this.staffTypeOptions = data + this.personTypeOptions = data }) this.$businessTool.getDictOptions("USER_EMPLOYMENT_TYPE").then((data) => { - this.employmentTypeOptions = data + this.preparedByOptions = data }) this.$businessTool.getDictOptions("USER_STATE").then((data) => { this.userStateOptions = data @@ -385,8 +385,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { pageForm.unitId = JSON.stringify(this.pageForm.unitId) pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes) pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes) - pageForm.staffTypes = JSON.stringify(this.pageForm.staffTypes) - pageForm.employmentTypes = JSON.stringify(this.pageForm.employmentTypes) + pageForm.personTypes = JSON.stringify(this.pageForm.personTypes) + pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys) pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus) pageForm.userStates = JSON.stringify(this.pageForm.userStates) this.$axios.post("/platform/member/statistics/comprehensive/pageData", pageForm).then((data) => {