This commit is contained in:
Paidax
2025-09-24 09:49:52 +08:00
parent 6243a033eb
commit e6cf2df937
19 changed files with 1235 additions and 142 deletions
@@ -180,4 +180,23 @@ public class View_user {
@Column
private String professionalLevel;
@Column
private String jobCategory;
@Column
private String employeeSource;
@Column
private String administrativeLevel;
@Column
private String positionSeries;
@Column
private String administrativePositionLevel;
@Column
private String expectedLeaveSchoolDate;
}
@@ -0,0 +1,223 @@
package com.budwk.app.zhgh.staffmanage.member.controller.info;
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.hutool.core.date.DateUtil;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.sys.models.Sys_role;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.services.SysRoleService;
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.param.MemberBatchMakeParam;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberStatisticsPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
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.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* @version 1.0
* @Author zzr
* @nameMemberBatchMakeController
* @Date 2025/9/23 16:51
* @注释 批量设置会员
*/
@IocBean
@Ok("json:full")
@At("/platform/member/info/batchMake")
public class MemberBatchMakeController {
@Inject
private Dao dao;
@Inject
private SysRoleService sysRoleService;
@Inject
private MemberCommonService memberCommonService;
@At("")
@SaCheckPermission("member.info.batchMake")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/batchmake/index.html")
public void index() {}
@At
@ApiOperation("查询非会员列表")
@SaCheckPermission("member.info.batchMake")
public Result pageData(MemberInfoPageForm pageForm){
Sql sql = Sqls.create("""
SELECT
id,
loginname,
username,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`user`
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("member", "=", false);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("username", pageForm.getSearchKeyword());
seg.orLike("loginname", pageForm.getSearchKeyword());
cnd.and(seg);
}
// 权限判断
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("unionId", "=", SecurityUtil.getUnionId());
seg.or("unionId", "is", null);
seg.or("unionId", "=", "");
cnd.and(seg);
} else {
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
}
cnd.andEX("userState", "in", pageForm.getUserStates());
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("personType", "in", pageForm.getPersonTypes());
sql.setCondition(cnd);
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("批量设置会员")
@Aop(TransAop.READ_COMMITTED)
@SLog(tag = "会员信息", msg = "批量设置会员")
@SaCheckPermission("member.info.batchMake")
public Result batchMake(MemberBatchMakeParam param){
List<String> userIds = param.getUserIds();
// 查询会员角色
Sys_role role = sysRoleService.getByCode(RoleConstant.MEMBER);
if (role == null) {
throw new BaseException("会员角色不存在");
}
dao.update(Sys_user.class, Chain.make("member", true)
.addSpecial("memberTime", DateUtil.now()),
Cnd.where("id", "in", userIds));
// 添加会员角色
List<Sys_user_role> roleList = userIds.stream().map(v -> {
Sys_user_role userRole = new Sys_user_role();
userRole.setUserId(v);
userRole.setRoleId(role.getId());
return userRole;
}).toList();
dao.insert(roleList);
return Result.success();
}
@At
@Ok("void")
@SaCheckPermission("member.statistics.comprehensive")
public void doExport(MemberStatisticsPageForm pageForm, HttpServletResponse response){
Sql sql = Sqls.create("""
SELECT
id,
loginname,
username,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`user`
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("member", "=", false);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("username", pageForm.getSearchKeyword());
seg.orLike("loginname", pageForm.getSearchKeyword());
cnd.and(seg);
}
// 权限判断
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("unionId", "=", SecurityUtil.getUnionId());
seg.or("unionId", "is", null);
seg.or("unionId", "=", "");
cnd.and(seg);
} else {
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
}
cnd.andEX("userState", "in", pageForm.getUserStates());
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("personType", "in", pageForm.getPersonTypes());
sql.setCondition(cnd);
List<NutMap> list = memberCommonService.listMap(sql);
for (NutMap row : list) {
row.put("mobile", DesensitizedUtil.mobilePhone(row.getString("mobile")));
}
try {
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("联系电话", "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);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
CommonDownloadUtil.download("非会员列表.xlsx", workbook, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,90 @@
package com.budwk.app.zhgh.staffmanage.member.controller.info;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil;
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.param.pageform.MemberInfoPageForm;
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.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* @version 1.0
* @Author zzr
* @nameMemberDataManageController
* @Date 2025/9/23 17:55
* @注释 数据管理工具
*/
@IocBean
@Ok("json:full")
@At("/platform/member/info/dataManage")
public class MemberDataManageController {
@At("")
@SaCheckPermission("member.info.dataManage")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/datamanage/index.html")
public void index() {}
@At
@ApiOperation("数据管理工具")
@SaCheckPermission("member.info.dataManage")
public Result pageData(MemberInfoPageForm pageForm) {
Sql sql = Sqls.create("""
SELECT
id,
loginname,
username,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`user`
$condition
""");
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("username", pageForm.getSearchKeyword());
seg.orLike("loginname", pageForm.getSearchKeyword());
cnd.and(seg);
}
// 权限判断
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("unionId", "=", SecurityUtil.getUnionId());
seg.or("unionId", "is", null);
seg.or("unionId", "=", "");
cnd.and(seg);
} else {
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
}
cnd.andEX("userState", "in", pageForm.getUserStates());
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("personType", "in", pageForm.getPersonTypes());
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} else {
cnd.asc("unitcode").asc("loginname");
}
sql.setCondition(cnd);
return Result.success();
}
}
@@ -8,7 +8,7 @@ import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory;
import com.budwk.app.zhgh.staffmanage.member.param.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
import com.budwk.app.zhgh.staffmanage.member.vo.MemberImportVo;
import lombok.extern.slf4j.Slf4j;
@@ -23,7 +23,6 @@ import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
@@ -31,7 +30,6 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* @version 1.0
@@ -6,7 +6,7 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.sys.models.Sys_union;
import com.budwk.app.zhgh.staffmanage.member.param.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.dao.Cnd;
@@ -0,0 +1,20 @@
package com.budwk.app.zhgh.staffmanage.member.param;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @version 1.0
* @Author zzr
* @nameMemberBatchMakeParam
* @Date 2025/9/23 17:10
* @注释
*/
@Data
public class MemberBatchMakeParam {
@NotEmpty(message = "设置人员不能为空")
private List<String> userIds;
}
@@ -1,59 +0,0 @@
package com.budwk.app.zhgh.staffmanage.member.param;
import com.budwk.app.base.param.PageForm;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @version 1.0
* @Author zzr
* @nameMemberInfoPageForm
* @Date 2024/8/8 10:08
* @注释 会员信息page
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MemberInfoPageForm extends PageForm {
private Integer year;
private String unionId;
private String unitId;
private String threeUnitId;
private String unionGroupId;
private String userState;
private String preparedBy;
private String personType;
private List<String> personTypes;
private List<String> preparedBys;
private List<String> userStates;
private String sex;
private List<String> sexTypes;
private Integer memberStatus;
private String position;
private String jobTitle;
private String memberSearchName;
private String memberSearchKeyWord;
private Integer pageNumber = 1;
private Integer pageSize = 10;
}
@@ -0,0 +1,82 @@
package com.budwk.app.zhgh.staffmanage.member.param.pageform;
import com.budwk.app.base.param.PageForm;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @version 1.0
* @Author zzr
* @nameMemberInfoPageForm
* @Date 2024/8/8 10:08
* @注释 会员信息page
*/
@Data
@ApiModel("信息管理参数")
@EqualsAndHashCode(callSuper = true)
public class MemberInfoPageForm extends PageForm {
@ApiModelProperty("年份")
private Integer year;
@ApiModelProperty("性别")
private String sex;
@ApiModelProperty("性别数组")
private List<String> sexTypes;
@ApiModelProperty("工会Id")
private String unionId;
@ApiModelProperty("部门Id")
private String unitId;
@ApiModelProperty("三级单位Id")
private String threeUnitId;
@ApiModelProperty("工会小组Id")
private String unionGroupId;
@ApiModelProperty("在职状态")
private String userState;
@ApiModelProperty("编制类型")
private String preparedBy;
@ApiModelProperty("人员类型")
private String personType;
@ApiModelProperty("人员类型数组")
private List<String> personTypes;
@ApiModelProperty("编制类型数组")
private List<String> preparedBys;
@ApiModelProperty("在职状态数组")
private List<String> userStates;
@ApiModelProperty("会员状态")
private Integer memberStatus;
@ApiModelProperty("职位")
private String position;
@ApiModelProperty("职位")
private String jobTitle;
@ApiModelProperty("会员搜索名称")
private String memberSearchName;
@ApiModelProperty("会员搜索关键字")
private String memberSearchKeyWord;
@ApiModelProperty("工号开头")
private String startLoginNames;
@ApiModelProperty("工号结尾")
private String endLoginNames;
}
@@ -2,7 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.service;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.zhgh.staffmanage.member.param.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.dao.sql.Sql;
import org.nutz.lang.util.NutMap;
@@ -17,7 +17,7 @@ import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory;
import com.budwk.app.zhgh.staffmanage.member.param.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
import com.budwk.app.zhgh.staffmanage.member.vo.MemberImportVo;
import org.apache.poi.ss.formula.functions.T;
@@ -40,7 +40,6 @@ import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**