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 1bb61fd..ee7e4ec 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java @@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; @@ -47,10 +48,10 @@ public class SysDataUserPullController { cnd.andEX(Sys_user_source::getPullTime, "=", pageForm.getPullTime()); cnd.and(Cnd.likeEX(Sys_user_source::getUsername, pageForm.getUserName())); 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()); + addSourceFilter(cnd, "us.unitName", pageForm.getUnitName()); + addSourceFilter(cnd, "us.userState", pageForm.getUserState()); cnd.andEX(Sys_user_source::getPreparedBy, "=", pageForm.getPreparedBy()); - cnd.andEX(Sys_user_source::getPersonType, "=", pageForm.getPersonType()); + addSourceFilter(cnd, "us.personType", pageForm.getPersonType()); if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); @@ -61,6 +62,15 @@ public class SysDataUserPullController { return Result.success(pagination); } + private void addSourceFilter(Cnd cnd, String column, String value) { + if ("__EMPTY__".equals(value)) { + cnd.and(new Static("(%s IS NULL OR LOWER(%s) REGEXP '^[[:space:]]*(null)?[[:space:]]*$')" + .formatted(column, column))); + } else { + cnd.andEX(column, "=", value); + } + } + @At @SaCheckPermission("sys.data.user.pull") @ApiOperation("拉取用户数据") diff --git a/src/main/java/com/budwk/app/sys/services/SysDataUserUpdateService.java b/src/main/java/com/budwk/app/sys/services/SysDataUserUpdateService.java index 95192ab..92f9652 100644 --- a/src/main/java/com/budwk/app/sys/services/SysDataUserUpdateService.java +++ b/src/main/java/com/budwk/app/sys/services/SysDataUserUpdateService.java @@ -7,4 +7,18 @@ import com.budwk.app.sys.param.SysDataUserUpdateParam; */ public interface SysDataUserUpdateService { String update(SysDataUserUpdateParam updateParam); + + static boolean qualifiesAsUnionMember(String personType, String userState) { + if ("在岗".equals(userState)) { + return true; + } + if (personType == null) { + return false; + } + return switch (personType) { + case "在编", "兰溪编制", "聘用合同制(享受人事代理待遇)", + "聘用合同制", "聘用制专家", "人事代理" -> true; + default -> false; + }; + } } 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 7522e79..022c220 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 @@ -164,6 +164,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 创建用户对象 Sys_user u = new Sys_user(); BeanUtils.copyProperties(source, u); + if (SysDataUserUpdateService.qualifiesAsUnionMember(u.getPersonType(), u.getUserState())) { + u.setMember(true); + } if (user == null) { // 新增用户,初始化数据 diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java index 089fba6..1311266 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java @@ -123,6 +123,9 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic //加入到系统用户表 List sysUsers = BeanUtil.copyToList(userSources, Sys_user.class); for (Sys_user sysUser : sysUsers) { + if (SysDataUserUpdateService.qualifiesAsUnionMember(sysUser.getPersonType(), sysUser.getUserState())) { + sysUser.setMember(true); + } //重新设置 sysUser.setId(R.UU32()); String salt = R.UU32(); diff --git a/src/main/resources/static/components/plugins/sysPageFormSearch/search.vue b/src/main/resources/static/components/plugins/sysPageFormSearch/search.vue index e891d1b..c75510f 100644 --- a/src/main/resources/static/components/plugins/sysPageFormSearch/search.vue +++ b/src/main/resources/static/components/plugins/sysPageFormSearch/search.vue @@ -3,6 +3,7 @@
搜索 +
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 7d120f6..368233c 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"){ - - + + - - + + - - + + + 重置 @@ -125,6 +126,16 @@ layout("/layouts/platform.html"){ } }, methods: { + resetSearch() { + this.$set(this.pageForm, "userName", "") + this.$set(this.pageForm, "loginName", "") + this.$set(this.pageForm, "unitName", "") + this.$set(this.pageForm, "userState", "") + this.$set(this.pageForm, "personType", "") + this.$set(this.pageForm, "preparedBy", "") + this.$set(this.pageForm, "pullTime", (this.pullTimeOptions[0] || {}).pullTime || "") + this.doSearch() + }, pull() { // 拉取未结束时不再打开确认框或发送重复请求。 if (this.pullLoading) return @@ -149,6 +160,7 @@ layout("/layouts/platform.html"){ .then((resp) => { if (resp.code === 0) { this.$message.success(resp.msg) + this.getSearchOptions() this.getPullTimeOptions() this.doSearch() } @@ -162,12 +174,24 @@ layout("/layouts/platform.html"){ .catch(() => {}) }, + buildSearchOptions(values) { + const optionValues = new Set(values.map(value => + value == null || /^(?:null)?$/i.test(value.trim()) ? "__EMPTY__" : value + )) + const hasEmpty = optionValues.delete("__EMPTY__") + const options = Array.from(optionValues, value => ({ label: value, value })) + if (hasEmpty) { + options.push({ label: "空数据", value: "__EMPTY__" }) + } + return options + }, + getSearchOptions() { this.$axios.post("/platform/sys/data/user/pull/searchOptions").then((resp) => { if (resp.code === 0) { - this.unitNameOptions = resp.data.unitNames - this.userStateOptions = resp.data.userStates - this.personTypeOptions = resp.data.personTypes + this.unitNameOptions = this.buildSearchOptions(resp.data.unitNames) + this.userStateOptions = this.buildSearchOptions(resp.data.userStates) + this.personTypeOptions = this.buildSearchOptions(resp.data.personTypes) this.preparedByOptions = resp.data.preparedBys } }) @@ -206,6 +230,7 @@ layout("/layouts/platform.html"){ if (resp.code === 0) { this.$message.success(resp.msg) this.pullTimeDialogVisible = false + this.getSearchOptions() this.doSearch() } }) 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 ab5ea80..2b55d1d 100644 --- a/src/main/resources/views/platform/sys/data/user/update.html +++ b/src/main/resources/views/platform/sys/data/user/update.html @@ -42,6 +42,7 @@ layout("/layouts/platform.html"){ + 重置 @@ -173,6 +174,14 @@ layout("/layouts/platform.html"){ "member-all-change-info": MEMBER_ALL_CHANGE_INFO }, methods: { + resetSearch() { + this.$set(this.pageForm, "userName", "") + this.$set(this.pageForm, "loginName", "") + this.$set(this.pageForm, "unitId", "") + this.$set(this.pageForm, "userState", "") + this.$set(this.pageForm, "personType", "") + this.doSearch() + }, // 更新单位数据 updateUnits() { if (this.unitUpdateLoading || this.updateLoading) return