This commit is contained in:
server
2025-09-15 17:00:22 +08:00
parent c2c6769f21
commit fbc87a40c6
24 changed files with 646 additions and 86 deletions
@@ -176,9 +176,9 @@ public class SysHomeController {
Date startDate = activity.getStartDate(); Date startDate = activity.getStartDate();
Date endDate = activity.getEndDate(); Date endDate = activity.getEndDate();
// 判断当前时间是否在活动范围内,不在就过滤掉 // 判断当前时间是否在活动范围内,不在就过滤掉
// if (!DateUtil.isIn(today, startDate, endDate)) { if (!DateUtil.isIn(today, startDate, endDate)) {
// continue; continue;
// } }
Integer allowUserGroupId = activity.getAllowUserGroupId(); Integer allowUserGroupId = activity.getAllowUserGroupId();
String allowUserSql = activity.getAllowUserSql(); String allowUserSql = activity.getAllowUserSql();
activity.setAllowUserSql(null); activity.setAllowUserSql(null);
@@ -176,7 +176,97 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
// cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup()); // cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup());
} }
// 特别人员
List<SpecialStaff> specialStaffs = dao.query(SpecialStaff.class, Cnd.NEW());
List<SpecialStaff> specialManyUnitStaffs = specialStaffs.stream().filter(SpecialStaff::getIsManyUnit).toList();
List<String> specialManyUnitStaffUserIds = specialManyUnitStaffs.stream().map(SpecialStaff::getUserId).toList();
List<String> specialManyUnitStaffUserLoginNames = dao.query(Sys_user.class, Cnd.where(Sys_user::getId, "in", specialManyUnitStaffUserIds)).stream().map(Sys_user::getLoginname).toList();
// 排除掉多单位人员不更新
cnd.andEX(Sys_user_source::getLoginname, "not in", specialManyUnitStaffUserLoginNames);
List<String> bsh = new ArrayList<>();
bsh.add("91036");
bsh.add("91035");
bsh.add("91030");
bsh.add("91034");
bsh.add("91033");
bsh.add("91031");
bsh.add("91032");
bsh.add("91027");
bsh.add("91026");
bsh.add("91024");
bsh.add("91025");
bsh.add("91023");
bsh.add("91021");
bsh.add("91020");
bsh.add("91022");
bsh.add("91018");
bsh.add("91015");
bsh.add("91017");
bsh.add("91014");
bsh.add("91013");
bsh.add("91012");
bsh.add("91011");
bsh.add("91008");
bsh.add("91004");
bsh.add("90996");
bsh.add("90994");
bsh.add("90992");
bsh.add("90993");
bsh.add("90991");
bsh.add("90990");
bsh.add("90979");
bsh.add("90978");
bsh.add("90976");
bsh.add("90975");
bsh.add("90974");
bsh.add("90972");
bsh.add("90971");
bsh.add("90973");
bsh.add("90969");
bsh.add("90966");
bsh.add("90967");
bsh.add("90965");
bsh.add("90964");
bsh.add("90968");
bsh.add("90959");
bsh.add("90957");
bsh.add("90958");
bsh.add("90961");
bsh.add("90960");
bsh.add("90952");
bsh.add("90950");
bsh.add("90951");
bsh.add("90953");
bsh.add("90954");
bsh.add("90948");
bsh.add("90947");
bsh.add("90949");
bsh.add("90946");
bsh.add("90942");
bsh.add("90937");
bsh.add("90935");
bsh.add("90934");
bsh.add("90933");
bsh.add("90932");
bsh.add("90930");
bsh.add("90927");
bsh.add("90926");
bsh.add("90913");
bsh.add("90906");
bsh.add("90904");
bsh.add("90903");
bsh.add("90901");
bsh.add("90899");
bsh.add("90898");
bsh.add("90895");
bsh.add("90894");
// cnd.and(Sys_user_source::getLoginname, "in", bsh);
List<Sys_user_source> sources = dao.query(Sys_user_source.class, cnd.groupBy("loginname")); List<Sys_user_source> sources = dao.query(Sys_user_source.class, cnd.groupBy("loginname"));
log.info("符合条件的数据源记录数: {}", sources.size()); log.info("符合条件的数据源记录数: {}", sources.size());
// 查询系统用户 // 查询系统用户
@@ -190,10 +280,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
List<String> addMemberUserIds = Collections.synchronizedList(new ArrayList<>()); List<String> addMemberUserIds = Collections.synchronizedList(new ArrayList<>());
List<String> removeMemberUserIds = Collections.synchronizedList(new ArrayList<>()); List<String> removeMemberUserIds = Collections.synchronizedList(new ArrayList<>());
// 处理每条数据 // 处理每条数据
for (Sys_user_source source : sources) { for (Sys_user_source source : sources) {
source.setMember(null);
source.setWelfareMember(null);
Sys_user user = userMap.get(source.getLoginname()); Sys_user user = userMap.get(source.getLoginname());
@@ -227,6 +316,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
} else { } else {
// 修改现有用户 // 修改现有用户
u.setId(user.getId()); u.setId(user.getId());
u.setMember(user.getMember());
// 本人电话、身份证不覆盖 // 本人电话、身份证不覆盖
if (StrUtil.isNotBlank(user.getMobile())) { if (StrUtil.isNotBlank(user.getMobile())) {
@@ -276,6 +366,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
// 1. 新增用户 - 使用批量处理 // 1. 新增用户 - 使用批量处理
if (Lang.isNotEmpty(needInitUserList)) { if (Lang.isNotEmpty(needInitUserList)) {
// dao.fastInsert(needInitUserList);
CompletableFuture<Void> insertTask = CompletableFuture.runAsync(() -> { CompletableFuture<Void> insertTask = CompletableFuture.runAsync(() -> {
log.info("新增用户: {} 个", needInitUserList.size()); log.info("新增用户: {} 个", needInitUserList.size());
// 分批处理,每批200条 // 分批处理,每批200条
@@ -306,7 +306,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
String decodePwd = Base64Decoder.decodeStr(passowrd); String decodePwd = Base64Decoder.decodeStr(passowrd);
String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt()); String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt());
if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) { if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) {
// throw new BaseException("用户名或者密码不正确"); throw new BaseException("用户名或者密码不正确");
} }
user = this.fetchLinks(user, "unit"); user = this.fetchLinks(user, "unit");
if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) { if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) {
@@ -39,7 +39,7 @@ public class SysUserAllRenewJob implements Job {
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
// Date pullTime = sysDataUserPullService.pull(); Date pullTime = sysDataUserPullService.pull();
JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap(); JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
NutMap conditionGroupMap = (NutMap)jobDataMap.get("conditionGroup"); NutMap conditionGroupMap = (NutMap)jobDataMap.get("conditionGroup");
if(conditionGroupMap == null || conditionGroupMap.isEmpty()){ if(conditionGroupMap == null || conditionGroupMap.isEmpty()){
@@ -54,8 +54,7 @@ public class SysUserAllRenewJob implements Job {
} }
SysDataUserUpdateParam param = new SysDataUserUpdateParam(); 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.setUpdateMode(SysDataUpdateMode.ALL.name());
param.setConditionGroup(conditionGroup); param.setConditionGroup(conditionGroup);
@@ -12,6 +12,7 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService; import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_role;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
import com.budwk.app.zhgh.activity.basic.param.ActivityUserScopePageParam; import com.budwk.app.zhgh.activity.basic.param.ActivityUserScopePageParam;
@@ -33,6 +34,7 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param; import org.nutz.mvc.annotation.Param;
import javax.management.relation.Role;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -95,6 +97,9 @@ public class ActivityBasicScopeController {
"""); """);
try { try {
Cnd cnd = getCnd(pageForm); Cnd cnd = getCnd(pageForm);
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
}
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -128,8 +128,8 @@ public class FamilyActivity extends BaseModel implements Serializable, SysHomeCo
sysHomeActivity.setId(this.getId()); sysHomeActivity.setId(this.getId());
sysHomeActivity.setName(this.getActivityName()); sysHomeActivity.setName(this.getActivityName());
sysHomeActivity.setCover(this.getCover()); sysHomeActivity.setCover(this.getCover());
sysHomeActivity.setUrl("/platform/family/manage/apply"); sysHomeActivity.setUrl("/platform/family/apply");
sysHomeActivity.setH5Url("/platform/mobile/familyActivity/familyList"); sysHomeActivity.setH5Url("/platform/family/apply/h5?id=" + this.getId());
if (Lang.isNotEmpty(this.getActivitySignUpStartTime())) { if (Lang.isNotEmpty(this.getActivitySignUpStartTime())) {
sysHomeActivity.setStartDate(this.getActivitySignUpStartTime()); sysHomeActivity.setStartDate(this.getActivitySignUpStartTime());
sysHomeActivity.setEndDate(this.getActivitySignUpEndTime()); sysHomeActivity.setEndDate(this.getActivitySignUpEndTime());
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.dayofficework.honor.controller; package com.budwk.app.zhgh.dayofficework.honor.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.convert.Convert;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.dayofficework.honor.constant.HonorTypeOrigin; import com.budwk.app.zhgh.dayofficework.honor.constant.HonorTypeOrigin;
import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings; import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings;
@@ -13,13 +14,12 @@ import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos; import org.nutz.dao.util.Daos;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar;
import java.util.List;
@IocBean @IocBean
@@ -43,7 +43,7 @@ public class HonorBoardController {
@SaCheckPermission("honor.board") @SaCheckPermission("honor.board")
public Result getHonorTypeByYear() { public Result getHonorTypeByYear() {
Sql sqlYear = Sqls.create(""" Sql sqlYear = Sqls.create("""
select YEAR(grantDate) AS `year` from honor where grantDate is not null GROUP BY grantDate select grantDate AS `year` from honor where grantDate is not null GROUP BY grantDate
"""); """);
int[] yearList = (int[]) Daos.query(dao, sqlYear.toString(), Sqls.callback.ints()); int[] yearList = (int[]) Daos.query(dao, sqlYear.toString(), Sqls.callback.ints());
@@ -54,15 +54,16 @@ public class HonorBoardController {
} }
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT YEAR SELECT
( h.grantDate ) as year, h.grantDate AS year,
hbs.`name` hbs.`name`
FROM FROM
honor h honor h
left join honor_basic_settings hbs on hbs.id = h.honorType left join honor_basic_settings hbs on hbs.id = h.honorType
WHERE YEAR (h.grantDate) <= @currentYear where h.grantDate is not null and h.grantDate != ''
"""); """);
sql.setParam("currentYear", Calendar.getInstance().get(Calendar.YEAR)); // WHERE YEAR (h.grantDate) <= @currentYear
// sql.setParam("currentYear", Calendar.getInstance().get(Calendar.YEAR));
List<NutMap> list = honorCommonService.listMap(sql); List<NutMap> list = honorCommonService.listMap(sql);
for (NutMap map : resultList) { for (NutMap map : resultList) {
@@ -82,13 +83,13 @@ public class HonorBoardController {
SELECT SELECT
hbs.`name`, hbs.`name`,
count( 1 ) AS num, count( 1 ) AS num,
YEAR ( h.grantDate ) as year h.grantDate as year
FROM FROM
honor h honor h
LEFT JOIN honor_basic_settings hbs ON hbs.id = h.prize LEFT JOIN honor_basic_settings hbs ON hbs.id = h.prize
WHERE WHERE
h.honorType = @honorType h.honorType = @honorType
AND YEAR (h.grantDate) <= @currentYear AND h.grantDate <= @currentYear
GROUP BY GROUP BY
h.prize h.prize
"""); """);
@@ -106,14 +107,14 @@ public class HonorBoardController {
SELECT SELECT
hbs.`name`, hbs.`name`,
count( 1 ) AS num, count( 1 ) AS num,
YEAR ( h.grantDate ) AS YEAR h.grantDate AS YEAR
FROM FROM
honor h honor h
LEFT JOIN honor_basic_settings hbs ON hbs.id = h.honorLevel LEFT JOIN honor_basic_settings hbs ON hbs.id = h.honorLevel
WHERE WHERE
h.honorLevel IS NOT NULL h.honorLevel IS NOT NULL
AND h.honorType = @honorType AND h.honorType = @honorType
AND YEAR ( h.grantDate ) <= @currentYear AND h.grantDate <= @currentYear
GROUP BY GROUP BY
h.honorLevel h.honorLevel
"""); """);
@@ -1,6 +1,11 @@
package com.budwk.app.zhgh.staffmanage.member.controller.branch; package com.budwk.app.zhgh.staffmanage.member.controller.branch;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.RepeatSubmit; import com.budwk.app.base.annotation.RepeatSubmit;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
@@ -9,14 +14,17 @@ import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.bpm.service.BpmService; import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.web.controllers.open.commons.service.CommonService; import com.budwk.app.web.controllers.open.commons.service.CommonService;
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin; import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
import com.budwk.app.zhgh.staffmanage.member.models.MemberApplyRecord; import com.budwk.app.zhgh.staffmanage.member.models.MemberApplyRecord;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm; import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberStatisticsPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService; import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
@@ -28,7 +36,9 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param; import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -121,4 +131,35 @@ public class MemberBranchUnionManageController {
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
} }
@At
@Ok("void")
@SaCheckPermission("member.branchUnion.manage.list")
public void doExport(MemberManagePageForm pageForm, HttpServletResponse response){
Sql sql = memberManageService.getSql(pageForm, "branchUnion");
List<NutMap> list = memberManageService.listMap(sql);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("工号", "loginname", 20));
exportEntities.add(new ExcelExportEntity("姓名", "username", 20));
exportEntities.add(new ExcelExportEntity("性别", "sex", 20));
exportEntities.add(new ExcelExportEntity("出生年月", "birthday", 20));
exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20));
exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20));
exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20));
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30));
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
try {
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
CommonDownloadUtil.download("会员名单.xlsx", workbook, response);
} catch (Exception e) {
e.printStackTrace();
}
}
} }
@@ -1,5 +1,9 @@
package com.budwk.app.zhgh.staffmanage.member.controller.school; package com.budwk.app.zhgh.staffmanage.member.controller.school;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.budwk.app.base.annotation.RepeatSubmit; import com.budwk.app.base.annotation.RepeatSubmit;
@@ -7,6 +11,7 @@ import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.BpmProcessConstant; import com.budwk.app.base.constant.BpmProcessConstant;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum; import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
import com.budwk.app.bpm.models.BpmProcessInstance; import com.budwk.app.bpm.models.BpmProcessInstance;
import com.budwk.app.bpm.models.BpmProcessTask; import com.budwk.app.bpm.models.BpmProcessTask;
@@ -18,6 +23,7 @@ import com.budwk.app.zhgh.staffmanage.member.models.MemberApplyRecord;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm; import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService; import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
@@ -31,7 +37,9 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param; import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -131,4 +139,35 @@ public class MemberSchoolUnionManageController {
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
} }
@At
@Ok("void")
@SaCheckPermission("member.branchUnion.manage.list")
public void doExport(MemberManagePageForm pageForm, HttpServletResponse response){
Sql sql = memberManageService.getSql(pageForm, "schoolUnion");
List<NutMap> list = memberManageService.listMap(sql);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("工号", "loginname", 20));
exportEntities.add(new ExcelExportEntity("姓名", "username", 20));
exportEntities.add(new ExcelExportEntity("性别", "sex", 20));
exportEntities.add(new ExcelExportEntity("出生年月", "birthday", 20));
exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20));
exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20));
exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20));
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30));
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
try {
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
CommonDownloadUtil.download("会员名单.xlsx", workbook, response);
} catch (Exception e) {
e.printStackTrace();
}
}
} }
@@ -99,6 +99,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
if ("branchUnion".equals(queryType)) { if ("branchUnion".equals(queryType)) {
cnd.and("u.unionId", "=", SecurityUtil.getUnionId()); cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
} }
cnd.asc("u.unionId");
cnd.asc("u.unitId");
sql.setCondition(cnd); sql.setCondition(cnd);
return sql; return sql;
} }
File diff suppressed because one or more lines are too long
@@ -228,3 +228,15 @@ const commonUtil = {
} }
} }
} }
function GetQueryString(name) {
return new URLSearchParams(window.location.search).get(name)
}
function loc() {
return location.href.replace(location.search, "").replace(location.hash, "")
}
function clone(obj) {
return JSON.parse(JSON.stringify(obj))
}
@@ -18,7 +18,7 @@
<div :class="{ card_scroll: edit_scroll }"> <div :class="{ card_scroll: edit_scroll }">
<slot name="edit"></slot> <slot name="edit"></slot>
</div> </div>
<div style="border-top: 1px solid #ebeef5; padding-top: 10px"> <div style="border-top: 1px solid #ebeef5; padding-top: 10px" v-if="$slots['edit-footer']">
<slot name="edit-footer"></slot> <slot name="edit-footer"></slot>
</div> </div>
</el-card> </el-card>
@@ -270,6 +270,9 @@
Vue.component("svg-icon", httpVueLoader("/components/plugins/sysSvgIcon/index.vue?v=" + new Date().getTime())) Vue.component("svg-icon", httpVueLoader("/components/plugins/sysSvgIcon/index.vue?v=" + new Date().getTime()))
Vue.component("year-van-dropdown-item", httpVueLoader("/components/plugins/vantMore/yearVanDropDownItem.vue?v=" + new Date().getTime())) Vue.component("year-van-dropdown-item", httpVueLoader("/components/plugins/vantMore/yearVanDropDownItem.vue?v=" + new Date().getTime()))
Vue.component("van-text-dialog", httpVueLoader("/components/plugins/vantMore/vantTextDialog.vue?v=" + new Date().getTime())) Vue.component("van-text-dialog", httpVueLoader("/components/plugins/vantMore/vantTextDialog.vue?v=" + new Date().getTime()))
Vue.component("enum-tag", httpVueLoader("/components/plugins/sysEnum/EnumTag.vue?v=" + new Date().getTime()))
Vue.component("table-list", httpVueLoader("/components/plugins/h5/TableList.vue?v=" + new Date().getTime()))
Vue.component("table-column", httpVueLoader("/components/plugins/h5/TableColumn.vue?v=" + new Date().getTime()))
</script> </script>
</head> </head>
<body> <body>
@@ -85,6 +85,10 @@ layout("/layouts/platform.html"){
<!--#include("/layouts/pagination.html"){}#--> <!--#include("/layouts/pagination.html"){}#-->
</el-card> </el-card>
</template> </template>
<template #public>
<member-audit-change-info ref="memberAuditChangeInfoRef" is_default_url></member-audit-change-info>
</template>
</guava> </guava>
<el-dialog title="选择数据源" :visible.sync="updateDialog" width="70%"> <el-dialog title="选择数据源" :visible.sync="updateDialog" width="70%">
<el-timeline> <el-timeline>
@@ -125,10 +129,15 @@ layout("/layouts/platform.html"){
</div> </div>
<script> <script>
<!--#include("../../../zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js"){}#-->
new Vue({ new Vue({
el: "#app", el: "#app",
dicts: ["MEMBER_CHANGE_TYPE"], dicts: ["MEMBER_CHANGE_TYPE"],
mixins: [initTableMixins], mixins: [initTableMixins],
components: {
"member-audit-change-info": MEMBER_AUDIT_CHANGE_INFO
},
data() { data() {
return { return {
updateDialog: false, updateDialog: false,
@@ -167,8 +176,8 @@ layout("/layouts/platform.html"){
}, },
methods: { methods: {
openCurrentUserChangeInfo(row) { openCurrentUserChangeInfo(row) {
this.$refs.guava.view(() => { this.$refs.guava.public(() => {
this.$refs.memberAuditChangeInfoRef.onOpen({ userId: row.id, recordId: row.userHistoryId }) this.$refs.memberAuditChangeInfoRef.onOpen({recordId: row.userHistoryId, userId: row.id})
}) })
}, },
getChangeTypes(changeTypes) { getChangeTypes(changeTypes) {
@@ -3,35 +3,59 @@ layout("/layouts/platform.html"){
#--> #-->
<style> <style>
.el-statistic {
width: 100%;
box-sizing: border-box;
margin: 0;
padding: 0;
color: #000;
font-variant: tabular-nums;
list-style: none;
font-feature-settings: "tnum";
text-align: center;
}
.el-statistic .head {
margin-bottom: 4px;
color: #606266;
font-size: 13px;
}
.el-statistic .con {
font-family: Sans-serif;
display: flex;
justify-content: center;
align-items: center;
color: #303133;
}
.el-statistic .con .number {
font-size: 20px;
padding: 0 4px;
}
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<guava ref="guava"> <guava ref="guava">
<el-card shadow="never"> <el-card shadow="never">
<el-card shadow="never"> <search @search="doSearch">
<search @search="doSearch"> <search-item label="年度:">
<search-item label="年度:"> <el-date-picker
<el-date-picker placeholder="选择年度"
placeholder="选择年度" type="year"
type="year" style="width: 100%"
style="width: 100%" v-model="pageForm.year"
v-model="pageForm.year" value-format="yyyy"
value-format="yyyy" @change="doSearch"
@change="doSearch" ></el-date-picker>
></el-date-picker> </search-item>
</search-item> <search-item label="活动状态:">
<search-item label="活动状态:"> <el-select v-model="pageForm.activityType" @change="doSearch" style="width: 100%"
<el-select v-model="pageForm.activityType" @change="doSearch" style="width: 100%" placeholder="请选择活动状态" filterable>
placeholder="请选择活动状态" filterable> <el-option :value="1" label="全部"></el-option>
<el-option :value="1" label="全部"></el-option> <el-option :value="4" label="即将开始"></el-option>
<el-option :value="4" label="即将开始"></el-option> <el-option :value="2" label="报名中"></el-option>
<el-option :value="2" label="报名中"></el-option> <el-option :value="3" label="已结束"></el-option>
<el-option :value="3" label="已结束"></el-option> </el-select>
</el-select> </search-item>
</search-item> </search>
</search>
</el-card>
</el-card> </el-card>
<el-card class="mt10" shadow="never"> <el-card class="mt10" shadow="never">
@@ -60,7 +84,7 @@ layout("/layouts/platform.html"){
<span>{{$moment(row.activityEndTime).format('MM/DD HH:mm')}}</span> <span>{{$moment(row.activityEndTime).format('MM/DD HH:mm')}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="300">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看介绍</el-button> <el-button @click="onView(row)" size="mini" type="primary">查看介绍</el-button>
<el-button @click="onOpen(row)" size="mini" type="primary">去报名</el-button> <el-button @click="onOpen(row)" size="mini" type="primary">去报名</el-button>
@@ -16,11 +16,16 @@ const apply_component = {
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item prop="birthday" label="出生日期"> <!-- <el-form-item prop="birthday" label="出生日期">-->
<el-date-picker v-model="formData.birthday" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" style="width: 100%"></el-date-picker> <!-- <el-date-picker v-model="formData.birthday" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" style="width: 100%"></el-date-picker>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<el-col :span="12">
<el-form-item prop="governmentPosition" label="党政职务">
<el-input v-model="formData.governmentPosition" placeholder="填写党政职务" max="50"></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item prop="sex" label="性别" disabled> <el-form-item prop="sex" label="性别" disabled>
<el-input v-model="formData.sex" disabled></el-input> <el-input v-model="formData.sex" disabled></el-input>
@@ -69,11 +74,7 @@ const apply_component = {
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="governmentPosition" label="党政职务">
<el-input v-model="formData.governmentPosition" placeholder="填写党政职务" max="50"></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
</template> </template>
@@ -236,7 +237,7 @@ const apply_component = {
this.$set(this.formData, "unionId", user.union ? user.union.id : null) this.$set(this.formData, "unionId", user.union ? user.union.id : null)
this.$set(this.formData, "unionName", user.union ? user.union.name : null) this.$set(this.formData, "unionName", user.union ? user.union.name : null)
this.$set(this.formData, "sex", user.sex) this.$set(this.formData, "sex", user.sex)
this.$set(this.formData, "birthday", user.birthday) // this.$set(this.formData, "birthday", user.birthday)
this.$set(this.formData, "nation", user.nation) this.$set(this.formData, "nation", user.nation)
this.$set(this.formData, "political", user.political) this.$set(this.formData, "political", user.political)
this.$set(this.formData, "education", user.education) this.$set(this.formData, "education", user.education)
@@ -150,6 +150,7 @@ layout("/layouts/platform.html"){
columnStyle: { columnStyle: {
radius: [20, 20, 0, 0], radius: [20, 20, 0, 0],
}, },
maxColumnWidth: 50
}) })
singleLevelTypePlot.render() singleLevelTypePlot.render()
} }
@@ -5,9 +5,10 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak> <div id="app" v-cloak>
<el-card shadow="never"> <el-card shadow="never">
<search @search="doSearch"> <search @search="doSearch">
<!-- <search-item label="年度">--> <!-- <search-item label="年度">-->
<!-- <el-date-picker placeholder="选择年度" type="year" style="width: 100%" v-model="pageForm.year" value-format="yyyy"></el-date-picker>--> <!-- <el-date-picker placeholder="选择年度" type="year" style="width: 100%" v-model="pageForm.year"-->
<!-- </search-item>--> <!-- value-format="yyyy"></el-date-picker>-->
<!-- </search-item>-->
<search-item label="活动"> <search-item label="活动">
<el-select v-model="pageForm.actId" placeholder="请选择活动"> <el-select v-model="pageForm.actId" placeholder="请选择活动">
<el-option v-for="item in actOptions" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in actOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -153,6 +153,7 @@ const MEMBER_AUDIT_CHANGE_INFO = {
}) })
}, },
onOpen(data) { onOpen(data) {
console.log(data)
this.findAuditChangeInfo(data.recordId) this.findAuditChangeInfo(data.recordId)
this.$nextTick(() => { this.$nextTick(() => {
this.findUserInfo(data.userId) this.findUserInfo(data.userId)
@@ -53,7 +53,7 @@ const MEMBER_AUDIT_TABLE = {
:sortable="column.sortable" :width="column.width" :sortable="column.sortable" :width="column.width"
align="center" header-align="center" min-width="100px" align="center" header-align="center" min-width="100px"
show-overflow-tooltip> show-overflow-tooltip>
<template slot-scope="{row}" v-if="column.prop=='loginname'"> <template scope="{row}" v-if="column.prop=='loginname'">
<el-link @click="openView(row.userId)" type="primary">{{row.loginname}}</el-link> <el-link @click="openView(row.userId)" type="primary">{{row.loginname}}</el-link>
</template> </template>
</el-table-column> </el-table-column>
@@ -32,6 +32,9 @@ const MEMBER_MANAGE_TABLE = {
</div>--> </div>-->
<!--<el-button @click="addMember" type="primary" size="small">新增会员</el-button>--> <!--<el-button @click="addMember" type="primary" size="small">新增会员</el-button>-->
<el-button type="primary" size="small" icon="el-icon-printer" @click="exportExcel">导出会员名单
</el-button>
</table-tool> </table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" <el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id"
@@ -114,8 +117,8 @@ const MEMBER_MANAGE_TABLE = {
查看 查看
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
:command="{type:'change',data:row}" :command="{type:'change',data:row}"
v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','BRANCH_UNION_CHAIRMAN','BRANCH_UNION_CHAIRMAN'])"> v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','BRANCH_UNION_CHAIRMAN','BRANCH_UNION_CHAIRMAN'])">
变更 变更
</el-dropdown-item> </el-dropdown-item>
<!--<el-dropdown-item <!--<el-dropdown-item
@@ -149,15 +152,15 @@ const MEMBER_MANAGE_TABLE = {
return { return {
changeTypeData: [], changeTypeData: [],
tableColumns: [ tableColumns: [
{ prop: "loginname", label: "工号", sortable: true }, {prop: "loginname", label: "工号", sortable: true},
{ prop: "username", label: "姓名", sortable: true }, {prop: "username", label: "姓名", sortable: true},
{ prop: "sex", label: "性别", sortable: true, width: "100px" }, {prop: "sex", label: "性别", sortable: true, width: "100px"},
{ prop: "birthday", label: "出生年月", sortable: true }, {prop: "birthday", label: "出生年月", sortable: true},
{ prop: "userState", label: "在职状态", sortable: true }, {prop: "userState", label: "在职状态", sortable: true},
{ prop: "preparedBy", label: "聘用方式", sortable: true }, {prop: "preparedBy", label: "聘用方式", sortable: true},
{ prop: "personType", label: "人员类型", sortable: true }, {prop: "personType", label: "人员类型", sortable: true},
{ prop: "unionName", label: "所属工会", sortable: true }, {prop: "unionName", label: "所属工会", sortable: true},
{ prop: "unitName", label: "所属单位", sortable: true } {prop: "unitName", label: "所属单位", sortable: true}
], ],
changeInfoVisible: false, changeInfoVisible: false,
userId: "", userId: "",
@@ -169,7 +172,7 @@ const MEMBER_MANAGE_TABLE = {
}, },
methods: { methods: {
dropdownCommand(command) { dropdownCommand(command) {
const { type, data } = command const {type, data} = command
if (type === "view") { if (type === "view") {
this.openView(data.id) this.openView(data.id)
} else if (type === "change") { } else if (type === "change") {
@@ -187,7 +190,7 @@ const MEMBER_MANAGE_TABLE = {
type: "warning" type: "warning"
}) })
.then(() => { .then(() => {
this.$axios.post("/platform/member/modelWorker/manage/setModelWorker", { userId: userId }).then((res) => { this.$axios.post("/platform/member/modelWorker/manage/setModelWorker", {userId: userId}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
this.$emit("refresh-table") this.$emit("refresh-table")
@@ -204,7 +207,7 @@ const MEMBER_MANAGE_TABLE = {
type: "warning" type: "warning"
}) })
.then(() => { .then(() => {
this.$axios.post("/platform/member/modelWorker/manage/cancelModelWorker", { userIds: JSON.stringify([userId]) }) this.$axios.post("/platform/member/modelWorker/manage/cancelModelWorker", {userIds: JSON.stringify([userId])})
.then((res) => { .then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
@@ -216,7 +219,7 @@ const MEMBER_MANAGE_TABLE = {
}) })
}, },
openChange(data) { openChange(data) {
this.$emit("change-member", { id: data.id, username: data.username }) this.$emit("change-member", {id: data.id, username: data.username})
}, },
openView(id) { openView(id) {
this.$emit("view-member", id) this.$emit("view-member", id)
@@ -249,6 +252,10 @@ const MEMBER_MANAGE_TABLE = {
this.$emit("refresh", this.pageForm) this.$emit("refresh", this.pageForm)
} }
}) })
},
exportExcel() {
const pageForm = clone(this.pageForm)
this.$downLoad(loc() + "/doExport", pageForm)
} }
}, },
created() { created() {
@@ -14,7 +14,7 @@ const work = {
<img :src="menu.icon" alt="" style="width: 40px;height: 40px"> <img :src="menu.icon" alt="" style="width: 40px;height: 40px">
</template> </template>
<template #text> <template #text>
<span>{{menu.name}}</span> <span style="font-size: 14px">{{menu.name}}</span>
</template> </template>
</van-grid-item> </van-grid-item>
</van-grid> </van-grid>
+115 -4
View File
@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@@ -15,13 +16,13 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.base.utils.PwdUtil;
import com.budwk.app.sys.models.Sys_dict; import com.budwk.app.sys.enums.SysDataUpdateMode;
import com.budwk.app.sys.models.Sys_unit; import com.budwk.app.sys.models.*;
import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.param.SysDataUserUpdateParam;
import com.budwk.app.sys.models.Sys_user_source;
import com.budwk.app.sys.services.SysDictService; import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysUnitService; import com.budwk.app.sys.services.SysUnitService;
import com.budwk.app.sys.services.SysUserService; import com.budwk.app.sys.services.SysUserService;
import com.budwk.app.sys.services.impl.SysDataUserAllUpdateServiceImpl;
import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@@ -220,6 +221,116 @@ public class JugTest {
dao.update(users,"password|salt"); dao.update(users,"password|salt");
} }
@Inject
private SysDataUserAllUpdateServiceImpl sysDataUserUpdateService;
@Test
public void userUpdateTask() {
SysDataUserUpdateParam param = new SysDataUserUpdateParam();
param.setPullTime("2025-09-15 01:00:06");
param.setUpdateMode(SysDataUpdateMode.ALL.name());
param.setConditionGroup(null);
sysDataUserUpdateService.update(param);
}
@Test
public void bsh(){
List<String> bsh = new ArrayList<>();
bsh.add("91036");
bsh.add("91035");
bsh.add("91030");
bsh.add("91034");
bsh.add("91033");
bsh.add("91031");
bsh.add("91032");
bsh.add("91027");
bsh.add("91026");
bsh.add("91024");
bsh.add("91025");
bsh.add("91023");
bsh.add("91021");
bsh.add("91020");
bsh.add("91022");
bsh.add("91018");
bsh.add("91015");
bsh.add("91017");
bsh.add("91014");
bsh.add("91013");
bsh.add("91012");
bsh.add("91011");
bsh.add("91008");
bsh.add("91004");
bsh.add("90996");
bsh.add("90994");
bsh.add("90992");
bsh.add("90993");
bsh.add("90991");
bsh.add("90990");
bsh.add("90979");
bsh.add("90978");
bsh.add("90976");
bsh.add("90975");
bsh.add("90974");
bsh.add("90972");
bsh.add("90971");
bsh.add("90973");
bsh.add("90969");
bsh.add("90966");
bsh.add("90967");
bsh.add("90965");
bsh.add("90964");
bsh.add("90968");
bsh.add("90959");
bsh.add("90957");
bsh.add("90958");
bsh.add("90961");
bsh.add("90960");
bsh.add("90952");
bsh.add("90950");
bsh.add("90951");
bsh.add("90953");
bsh.add("90954");
bsh.add("90948");
bsh.add("90947");
bsh.add("90949");
bsh.add("90946");
bsh.add("90942");
bsh.add("90937");
bsh.add("90935");
bsh.add("90934");
bsh.add("90933");
bsh.add("90932");
bsh.add("90930");
bsh.add("90927");
bsh.add("90926");
bsh.add("90913");
bsh.add("90906");
bsh.add("90904");
bsh.add("90903");
bsh.add("90901");
bsh.add("90899");
bsh.add("90898");
bsh.add("90895");
bsh.add("90894");
List<Sys_user> users = dao.query(Sys_user.class, Cnd.where(Sys_user::getLoginname, "in", bsh));
for (Sys_user user : users){
user.setMember(true);
dao.update(users,"member");
Sys_user_role user_role = new Sys_user_role();
user_role.setUserId(user.getId());
user_role.setRoleId("6d603b652abee584ba6274dc1fcee3bb");
dao.insert(user_role);
}
}
} }