This commit is contained in:
server
2025-09-11 09:49:02 +08:00
parent 5d28aa5f94
commit 40a5efb352
4 changed files with 32 additions and 19 deletions
@@ -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<String> memberPreparedByTypes = new HashSet<>(Arrays.asList("新人事代理", "校聘合同制", "事业编制"));
Set<String> 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<Sys_user_source> 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(""));
// 设置历史记录信息
@@ -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);
}
}
@@ -261,12 +261,7 @@
<!--vuex-->
<script type="text/javascript">
$.get('/platform/auth/userInfo').then(res=>{
if(res.code===0){
// window.sessionStorage.setItem("user",JSON.stringify(${json(@auth.getLogonUser())}))
window.sessionStorage.setItem("user",JSON.stringify(res.data))
}
})
window.sessionStorage.setItem("user",JSON.stringify(${json(@auth.getLogonUser())}))
window.store = new Vuex.Store({
plugins: [
createPersistedState({
@@ -20,7 +20,9 @@ layout("/layouts/platform.html"){
@node-click="treeNodeClick"
:filter-node-method="filterNode"
highlight-current
></el-tree>
>
</el-tree>
</div>
</el-card>
</el-col>