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 256dc7c..a25e88c 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 @@ -129,13 +129,16 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService * @param postDoctoralJoinDate 博士后进站时间 * @return 是否符合会员条件 */ - private boolean checkMembershipEligibility(String userState, String preparedBy, Date postDoctoralJoinDate) { + private boolean checkMembershipEligibility(String userState, String preparedBy, Date postDoctoralJoinDate, Sys_user user) { // 博士后单独判断:只要进站时间在两年内就是会员 if ("博士后".equals(preparedBy)) { + Date twoYearsAgo = DateUtil.offset(DateUtil.date(), DateField.YEAR, -2).toJdkDate(); if (postDoctoralJoinDate != null) { - Date twoYearsAgo = DateUtil.offset(DateUtil.date(), DateField.YEAR, -2).toJdkDate(); return postDoctoralJoinDate.after(twoYearsAgo); } + if (Lang.isNotEmpty(user) && user.getPostDoctoralJoinDate() != null) { + return user.getPostDoctoralJoinDate().after(twoYearsAgo); + } return false; } @@ -145,7 +148,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService } // 判断聘用方式 - Set memberPreparedByTypes = new HashSet<>(Arrays.asList("新人事代理", "校聘合同制", "事业编制")); + Set memberPreparedByTypes = new HashSet<>(Arrays.asList("新人事代理", "校聘合同制", "事业编制", "劳动合同")); return memberPreparedByTypes.contains(preparedBy); } @@ -170,7 +173,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 处理复杂条件 if (updateParam.getConditionGroup() != null) { - cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup()); +// cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup()); } List sources = dao.query(Sys_user_source.class, cnd.groupBy("loginname")); @@ -189,6 +192,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 处理每条数据 for (Sys_user_source source : sources) { + source.setMember(null); + source.setWelfareMember(null); + Sys_user user = userMap.get(source.getLoginname()); // 创建用户对象 @@ -205,7 +211,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService boolean shouldBeMember = checkMembershipEligibility( source.getUserState(), source.getPreparedBy(), - source.getPostDoctoralJoinDate() + source.getPostDoctoralJoinDate(), + null ); if (shouldBeMember) { @@ -213,6 +220,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService addMemberUserIds.add(u.getId()); } else { u.setMember(false); + continue; } needInitUserList.add(u); @@ -224,9 +232,14 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService boolean shouldBeMember = checkMembershipEligibility( source.getUserState(), source.getPreparedBy(), - source.getPostDoctoralJoinDate() + source.getPostDoctoralJoinDate(), + user ); + if(user.getLoginname().equals("45066")){ + System.out.println(".."); + } + // 更新会员状态 boolean currentIsMember = user.getMember() != null && user.getMember(); @@ -403,6 +416,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService long endTime = System.currentTimeMillis(); log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime)); + return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size() + " 个, 待添加会员 " + addMemberUserIds.size() + " 个, 待移除会员 " + removeMemberUserIds.size() + " 个"; } @@ -486,8 +500,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 生成变更信息描述 String changeInfos = changeList.stream() .map(v -> v.getString("name") + ":" + - HtmlUtil.cleanHtmlTag(v.getString("value")) + "→" + - HtmlUtil.cleanHtmlTag(v.getString("newValue"))) + HtmlUtil.cleanHtmlTag(v.getString("value", "")) + "→" + + HtmlUtil.cleanHtmlTag(v.getString("newValue", ""))) .collect(Collectors.joining(";")); // 设置历史记录信息 diff --git a/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java b/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java index 6d20f36..6c61cc2 100644 --- a/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java +++ b/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java @@ -8,6 +8,7 @@ import com.budwk.app.sys.models.Sys_user_source; import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.services.SysDataUserPullService; import com.budwk.app.sys.services.SysDataUserUpdateService; +import com.budwk.app.sys.services.impl.SysDataUserAllUpdateServiceImpl; import lombok.extern.slf4j.Slf4j; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; @@ -34,11 +35,11 @@ public class SysUserAllRenewJob implements Job { @Inject private SysDataUserPullService sysDataUserPullService; @Inject - private SysDataUserUpdateService sysDataUserUpdateService; + private SysDataUserAllUpdateServiceImpl sysDataUserUpdateService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - Date pullTime = sysDataUserPullService.pull(); +// Date pullTime = sysDataUserPullService.pull(); JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap(); NutMap conditionGroupMap = (NutMap)jobDataMap.get("conditionGroup"); if(conditionGroupMap == null || conditionGroupMap.isEmpty()){ @@ -53,10 +54,11 @@ public class SysUserAllRenewJob implements Job { } SysDataUserUpdateParam param = new SysDataUserUpdateParam(); - param.setPullTime(DateUtil.formatDateTime(pullTime)); +// param.setPullTime(DateUtil.formatDateTime(pullTime)); + param.setPullTime("2025-09-10 16:45:01"); param.setUpdateMode(SysDataUpdateMode.ALL.name()); param.setConditionGroup(conditionGroup); - // sysDataUserUpdateService.update(param); + sysDataUserUpdateService.update(param); } } diff --git a/src/main/resources/views/layouts/platform.html b/src/main/resources/views/layouts/platform.html index 1ae3595..2d1bc99 100644 --- a/src/main/resources/views/layouts/platform.html +++ b/src/main/resources/views/layouts/platform.html @@ -261,12 +261,7 @@