This commit is contained in:
=
2026-05-06 19:34:07 +08:00
parent 2956cb6622
commit f101ab2098
18 changed files with 127 additions and 0 deletions
@@ -12,6 +12,8 @@ import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
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.models.MemberChangeRecord;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberChangePageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService;
@@ -22,6 +24,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -111,6 +114,12 @@ public class MemberChangeMineController {
cnd.and("info.userId", "=", SecurityUtil.getUserId());
}
}
// Filter manual input records created by member info input
cnd.and(new Static(
"(info.changeOrigin <> '" + MemberChangeOrigin.HAND_MOVEMENT.name()
+ "' OR info.changeOrigin IS NULL OR info.changeType <> '" + MemberChangeType.NEW.name()
+ "' OR info.changeType IS NULL)"
));
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.desc("info.applyDateTime");
} else {
@@ -46,6 +46,8 @@ import org.nutz.lang.Lang;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@@ -298,6 +300,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
@Override
public void compareChangeInfoAndUpdateMember(MemberChangeRecord record) {
normalizeArrivalAtSchoolDate(record);
List<NutMap> changeList = getChangeInfos(record);
// 如果有工会关系人员,这个user用来存储数据
@@ -503,6 +506,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
@Override
public void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin) {
normalizeArrivalAtSchoolDate(record);
// 校验有没有发生变更
List<NutMap> changeInfos = getChangeInfos(record);
if (Lang.isEmpty(changeInfos)) {
@@ -521,6 +525,39 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
}
/**
* 统一规范变更记录中的到校日期,避免 Date 对象复制后以英文字符串形式参与比较或直接落库。
*/
private void normalizeArrivalAtSchoolDate(MemberChangeRecord record) {
if (record == null || StrUtil.isBlank(record.getArrivalAtSchoolDate())) {
return;
}
String arrivalAtSchoolDate = StrUtil.trim(record.getArrivalAtSchoolDate());
try {
Date parsedDate = parseArrivalAtSchoolDate(arrivalAtSchoolDate);
record.setArrivalAtSchoolDate(DateUtil.format(parsedDate, "yyyy-MM-dd"));
} catch (Exception e) {
throw new BaseException("到校日期格式不正确,请使用yyyy-MM-dd格式");
}
}
/**
* 兼容页面手工变更时从视图对象复制出的英文日期字符串。
*/
private Date parseArrivalAtSchoolDate(String arrivalAtSchoolDate) throws ParseException {
if (arrivalAtSchoolDate.matches("\\d{4}-\\d{2}-\\d{2}")) {
return DateUtil.parseDate(arrivalAtSchoolDate);
}
try {
return DateUtil.parse(arrivalAtSchoolDate);
} catch (Exception ignore) {
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
format.setLenient(false);
return format.parse(arrivalAtSchoolDate);
}
}
/**
* 验证申请或变更是否正在进行
* @param userId 用户id