【更新】优化授权逻辑,用户导入(待完善)
This commit is contained in:
parent
567127f2b2
commit
515c072e59
@ -15,6 +15,8 @@ package vip.xiaonuo.sys.core.listener;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
||||||
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
||||||
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
||||||
import vip.xiaonuo.common.listener.CommonDataChangeListener;
|
import vip.xiaonuo.common.listener.CommonDataChangeListener;
|
||||||
import vip.xiaonuo.sys.core.enums.SysDataTypeEnum;
|
import vip.xiaonuo.sys.core.enums.SysDataTypeEnum;
|
||||||
@ -41,6 +43,12 @@ public class SysDataChangeListener implements CommonDataChangeListener {
|
|||||||
// 如果检测到机构增加,则将机构的数据缓存清除
|
// 如果检测到机构增加,则将机构的数据缓存清除
|
||||||
if(dataType.equals(SysDataTypeEnum.ORG.getValue())) {
|
if(dataType.equals(SysDataTypeEnum.ORG.getValue())) {
|
||||||
commonCacheOperator.remove(SysOrgServiceImpl.ORG_CACHE_ALL_KEY);
|
commonCacheOperator.remove(SysOrgServiceImpl.ORG_CACHE_ALL_KEY);
|
||||||
|
// 并将该机构加入到当前登录用户的数据范围缓存
|
||||||
|
SaBaseLoginUser saBaseLoginUser = StpLoginUserUtil.getLoginUser();
|
||||||
|
saBaseLoginUser.getDataScopeList().forEach(dataScope -> dataScope.getDataScope().addAll(dataIdList));
|
||||||
|
saBaseLoginUser.setDataScopeList(saBaseLoginUser.getDataScopeList());
|
||||||
|
// 重新缓存当前登录用户信息
|
||||||
|
StpUtil.getTokenSession().set("loginUser", saBaseLoginUser);
|
||||||
}
|
}
|
||||||
// 如果检测到用户增加,则将用户数据缓存清除
|
// 如果检测到用户增加,则将用户数据缓存清除
|
||||||
if(dataType.equals(SysDataTypeEnum.USER.getValue())) {
|
if(dataType.equals(SysDataTypeEnum.USER.getValue())) {
|
||||||
|
@ -59,7 +59,7 @@ public class SysRoleGrantPermissionParam {
|
|||||||
|
|
||||||
/** 数据范围分类 */
|
/** 数据范围分类 */
|
||||||
@ApiModelProperty(value = "数据范围分类", position = 2)
|
@ApiModelProperty(value = "数据范围分类", position = 2)
|
||||||
@NotBlank(message = "category不能为空")
|
@NotBlank(message = "scopeCategory不能为空")
|
||||||
private String scopeCategory;
|
private String scopeCategory;
|
||||||
|
|
||||||
/** 自定义范围组织id集合 */
|
/** 自定义范围组织id集合 */
|
||||||
|
@ -59,7 +59,7 @@ public class SysUserGrantPermissionParam {
|
|||||||
|
|
||||||
/** 数据范围分类 */
|
/** 数据范围分类 */
|
||||||
@ApiModelProperty(value = "数据范围分类", position = 2)
|
@ApiModelProperty(value = "数据范围分类", position = 2)
|
||||||
@NotBlank(message = "category不能为空")
|
@NotBlank(message = "scopeCategory不能为空")
|
||||||
private String scopeCategory;
|
private String scopeCategory;
|
||||||
|
|
||||||
/** 自定义范围组织id集合 */
|
/** 自定义范围组织id集合 */
|
||||||
|
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||||
|
*
|
||||||
|
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||||
|
*
|
||||||
|
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||||
|
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
||||||
|
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
||||||
|
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||||
|
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||||||
|
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||||
|
*/
|
||||||
|
package vip.xiaonuo.sys.modular.user.param;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户导入参数
|
||||||
|
*
|
||||||
|
* @author xuyuxiang
|
||||||
|
* @date 2022/7/8 13:22
|
||||||
|
**/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class SysUserImportParam {
|
||||||
|
|
||||||
|
/** 头像 */
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
/** 账号 */
|
||||||
|
private String account;
|
||||||
|
|
||||||
|
/** 姓名 */
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/** 昵称 */
|
||||||
|
private String nickname;
|
||||||
|
|
||||||
|
/** 性别 */
|
||||||
|
private String gender;
|
||||||
|
|
||||||
|
/** 年龄 */
|
||||||
|
private String age;
|
||||||
|
|
||||||
|
/** 出生日期 */
|
||||||
|
private String birthday;
|
||||||
|
|
||||||
|
/** 民族 */
|
||||||
|
private String nation;
|
||||||
|
|
||||||
|
/** 籍贯 */
|
||||||
|
private String nativePlace;
|
||||||
|
|
||||||
|
/** 家庭住址 */
|
||||||
|
private String homeAddress;
|
||||||
|
|
||||||
|
/** 通信地址 */
|
||||||
|
private String mailingAddress;
|
||||||
|
|
||||||
|
/** 证件类型 */
|
||||||
|
private String idCardType;
|
||||||
|
|
||||||
|
/** 证件号码 */
|
||||||
|
private String idCardNumber;
|
||||||
|
|
||||||
|
/** 文化程度 */
|
||||||
|
private String cultureLevel;
|
||||||
|
|
||||||
|
/** 政治面貌 */
|
||||||
|
private String politicalOutlook;
|
||||||
|
|
||||||
|
/** 毕业院校 */
|
||||||
|
private String college;
|
||||||
|
|
||||||
|
/** 学历 */
|
||||||
|
private String education;
|
||||||
|
|
||||||
|
/** 学制 */
|
||||||
|
private String eduLength;
|
||||||
|
|
||||||
|
/** 学位 */
|
||||||
|
private String degree;
|
||||||
|
|
||||||
|
/** 手机 */
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
/** 邮箱 */
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/** 家庭电话 */
|
||||||
|
private String homeTel;
|
||||||
|
|
||||||
|
/** 办公电话 */
|
||||||
|
private String officeTel;
|
||||||
|
|
||||||
|
/** 紧急联系人 */
|
||||||
|
private String emergencyContact;
|
||||||
|
|
||||||
|
/** 紧急联系人电话 */
|
||||||
|
private String emergencyPhone;
|
||||||
|
|
||||||
|
/** 紧急联系人地址 */
|
||||||
|
private String emergencyAddress;
|
||||||
|
|
||||||
|
/** 员工编号 */
|
||||||
|
private String empNo;
|
||||||
|
|
||||||
|
/** 入职日期 */
|
||||||
|
private String entryDate;
|
||||||
|
|
||||||
|
/** 组织名称 */
|
||||||
|
private String orgName;
|
||||||
|
|
||||||
|
/** 职位名称 */
|
||||||
|
private String positionName;
|
||||||
|
|
||||||
|
/** 主管名称 */
|
||||||
|
private String directorName;
|
||||||
|
|
||||||
|
/** 职级 */
|
||||||
|
private String positionLevel;
|
||||||
|
}
|
@ -30,168 +30,168 @@ import java.util.Date;
|
|||||||
public class SysUserExportResult {
|
public class SysUserExportResult {
|
||||||
|
|
||||||
/** 头像 */
|
/** 头像 */
|
||||||
@ExcelProperty("头像")
|
@ExcelProperty({"基本信息", "头像"})
|
||||||
private byte[] avatar;
|
private byte[] avatar;
|
||||||
|
|
||||||
/** 账号 */
|
/** 账号 */
|
||||||
@ExcelProperty("账号")
|
@ExcelProperty({"基本信息", "账号"})
|
||||||
private String account;
|
private String account;
|
||||||
|
|
||||||
/** 姓名 */
|
/** 姓名 */
|
||||||
@ExcelProperty("姓名")
|
@ExcelProperty({"基本信息", "姓名"})
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/** 昵称 */
|
/** 昵称 */
|
||||||
@ExcelProperty("昵称")
|
@ExcelProperty({"基本信息", "昵称"})
|
||||||
private String nickname;
|
private String nickname;
|
||||||
|
|
||||||
/** 性别 */
|
/** 性别 */
|
||||||
@ExcelProperty("性别")
|
@ExcelProperty({"基本信息", "性别"})
|
||||||
private String gender;
|
private String gender;
|
||||||
|
|
||||||
/** 年龄 */
|
/** 年龄 */
|
||||||
@ExcelProperty("年龄")
|
@ExcelProperty({"基本信息", "年龄"})
|
||||||
private String age;
|
private String age;
|
||||||
|
|
||||||
/** 出生日期 */
|
/** 出生日期 */
|
||||||
@ExcelProperty("出生日期")
|
@ExcelProperty({"基本信息", "出生日期"})
|
||||||
private String birthday;
|
private String birthday;
|
||||||
|
|
||||||
/** 民族 */
|
/** 民族 */
|
||||||
@ExcelProperty("民族")
|
@ExcelProperty({"基本信息", "民族"})
|
||||||
private String nation;
|
private String nation;
|
||||||
|
|
||||||
/** 籍贯 */
|
/** 籍贯 */
|
||||||
@ExcelProperty("籍贯")
|
@ExcelProperty({"基本信息", "籍贯"})
|
||||||
private String nativePlace;
|
private String nativePlace;
|
||||||
|
|
||||||
/** 家庭住址 */
|
/** 家庭住址 */
|
||||||
@ExcelProperty("家庭住址")
|
@ExcelProperty({"基本信息", "家庭住址"})
|
||||||
private String homeAddress;
|
private String homeAddress;
|
||||||
|
|
||||||
/** 通信地址 */
|
/** 通信地址 */
|
||||||
@ExcelProperty("通信地址")
|
@ExcelProperty({"基本信息", "通信地址"})
|
||||||
private String mailingAddress;
|
private String mailingAddress;
|
||||||
|
|
||||||
/** 证件类型 */
|
/** 证件类型 */
|
||||||
@ExcelProperty("证件类型")
|
@ExcelProperty({"基本信息", "证件类型"})
|
||||||
private String idCardType;
|
private String idCardType;
|
||||||
|
|
||||||
/** 证件号码 */
|
/** 证件号码 */
|
||||||
@ExcelProperty("证件号码")
|
@ExcelProperty({"基本信息", "证件号码"})
|
||||||
private String idCardNumber;
|
private String idCardNumber;
|
||||||
|
|
||||||
/** 文化程度 */
|
/** 文化程度 */
|
||||||
@ExcelProperty("文化程度")
|
@ExcelProperty({"基本信息", "文化程度"})
|
||||||
private String cultureLevel;
|
private String cultureLevel;
|
||||||
|
|
||||||
/** 政治面貌 */
|
/** 政治面貌 */
|
||||||
@ExcelProperty("政治面貌")
|
@ExcelProperty({"基本信息", "政治面貌"})
|
||||||
private String politicalOutlook;
|
private String politicalOutlook;
|
||||||
|
|
||||||
/** 毕业院校 */
|
/** 毕业院校 */
|
||||||
@ExcelProperty("毕业院校")
|
@ExcelProperty({"基本信息", "毕业院校"})
|
||||||
private String college;
|
private String college;
|
||||||
|
|
||||||
/** 学历 */
|
/** 学历 */
|
||||||
@ExcelProperty("学历")
|
@ExcelProperty({"基本信息", "学历"})
|
||||||
private String education;
|
private String education;
|
||||||
|
|
||||||
/** 学制 */
|
/** 学制 */
|
||||||
@ExcelProperty("学制")
|
@ExcelProperty({"基本信息", "学制"})
|
||||||
private String eduLength;
|
private String eduLength;
|
||||||
|
|
||||||
/** 学位 */
|
/** 学位 */
|
||||||
@ExcelProperty("学位")
|
@ExcelProperty({"基本信息", "学位"})
|
||||||
private String degree;
|
private String degree;
|
||||||
|
|
||||||
/** 手机 */
|
/** 手机 */
|
||||||
@ExcelProperty("手机")
|
@ExcelProperty({"基本信息", "手机"})
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
/** 邮箱 */
|
/** 邮箱 */
|
||||||
@ExcelProperty("邮箱")
|
@ExcelProperty({"基本信息", "邮箱"})
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
/** 家庭电话 */
|
/** 家庭电话 */
|
||||||
@ExcelProperty("家庭电话")
|
@ExcelProperty({"基本信息", "家庭电话"})
|
||||||
private String homeTel;
|
private String homeTel;
|
||||||
|
|
||||||
/** 办公电话 */
|
/** 办公电话 */
|
||||||
@ExcelProperty("办公电话")
|
@ExcelProperty({"基本信息", "办公电话"})
|
||||||
private String officeTel;
|
private String officeTel;
|
||||||
|
|
||||||
/** 紧急联系人 */
|
/** 紧急联系人 */
|
||||||
@ExcelProperty("紧急联系人")
|
@ExcelProperty({"基本信息", "紧急联系人"})
|
||||||
private String emergencyContact;
|
private String emergencyContact;
|
||||||
|
|
||||||
/** 紧急联系人电话 */
|
/** 紧急联系人电话 */
|
||||||
@ExcelProperty("紧急联系人电话")
|
@ExcelProperty({"基本信息", "紧急联系人电话"})
|
||||||
private String emergencyPhone;
|
private String emergencyPhone;
|
||||||
|
|
||||||
/** 紧急联系人地址 */
|
/** 紧急联系人地址 */
|
||||||
@ExcelProperty("紧急联系人地址")
|
@ExcelProperty({"基本信息", "紧急联系人地址"})
|
||||||
private String emergencyAddress;
|
private String emergencyAddress;
|
||||||
|
|
||||||
/** 员工编号 */
|
/** 员工编号 */
|
||||||
@ExcelProperty("员工编号")
|
@ExcelProperty({"员工信息", "员工编号"})
|
||||||
private String empNo;
|
private String empNo;
|
||||||
|
|
||||||
/** 入职日期 */
|
/** 入职日期 */
|
||||||
@ExcelProperty("入职日期")
|
@ExcelProperty({"员工信息", "入职日期"})
|
||||||
private String entryDate;
|
private String entryDate;
|
||||||
|
|
||||||
/** 组织名称 */
|
/** 组织名称 */
|
||||||
@ExcelProperty("组织名称")
|
@ExcelProperty({"员工信息", "组织名称"})
|
||||||
private String orgName;
|
private String orgName;
|
||||||
|
|
||||||
/** 职位名称 */
|
/** 职位名称 */
|
||||||
@ExcelProperty("职位名称")
|
@ExcelProperty({"员工信息", "职位名称"})
|
||||||
private String positionName;
|
private String positionName;
|
||||||
|
|
||||||
/** 主管名称 */
|
/** 主管名称 */
|
||||||
@ExcelProperty("主管名称")
|
@ExcelProperty({"员工信息", "主管名称"})
|
||||||
private String directorName;
|
private String directorName;
|
||||||
|
|
||||||
/** 职级 */
|
/** 职级 */
|
||||||
@ExcelProperty("职级")
|
@ExcelProperty({"员工信息", "职级"})
|
||||||
private String positionLevel;
|
private String positionLevel;
|
||||||
|
|
||||||
/** 上次登录ip */
|
/** 上次登录ip */
|
||||||
@ExcelProperty("上次登录ip")
|
@ExcelProperty({"系统信息", "上次登录ip"})
|
||||||
private String lastLoginIp;
|
private String lastLoginIp;
|
||||||
|
|
||||||
/** 上次登录地点 */
|
/** 上次登录地点 */
|
||||||
@ExcelProperty("上次登录地点")
|
@ExcelProperty({"系统信息", "上次登录地点"})
|
||||||
private String lastLoginAddress;
|
private String lastLoginAddress;
|
||||||
|
|
||||||
/** 上次登录时间 */
|
/** 上次登录时间 */
|
||||||
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
||||||
@ExcelProperty("上次登录时间")
|
@ExcelProperty({"系统信息", "上次登录时间"})
|
||||||
private Date lastLoginTime;
|
private Date lastLoginTime;
|
||||||
|
|
||||||
/** 上次登录设备 */
|
/** 上次登录设备 */
|
||||||
@ExcelProperty("上次登录设备")
|
@ExcelProperty({"系统信息", "上次登录设备"})
|
||||||
private String lastLoginDevice;
|
private String lastLoginDevice;
|
||||||
|
|
||||||
/** 最新登录ip */
|
/** 最新登录ip */
|
||||||
@ExcelProperty("最新登录ip")
|
@ExcelProperty({"系统信息", "最新登录ip"})
|
||||||
private String latestLoginIp;
|
private String latestLoginIp;
|
||||||
|
|
||||||
/** 最新登录地点 */
|
/** 最新登录地点 */
|
||||||
@ExcelProperty("最新登录地点")
|
@ExcelProperty({"系统信息", "最新登录地点"})
|
||||||
private String latestLoginAddress;
|
private String latestLoginAddress;
|
||||||
|
|
||||||
/** 最新登录时间 */
|
/** 最新登录时间 */
|
||||||
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
||||||
@ExcelProperty("最新登录时间")
|
@ExcelProperty({"系统信息", "最新登录时间"})
|
||||||
private Date latestLoginTime;
|
private Date latestLoginTime;
|
||||||
|
|
||||||
/** 最新登录设备 */
|
/** 最新登录设备 */
|
||||||
@ExcelProperty("最新登录设备")
|
@ExcelProperty({"系统信息", "最新登录设备"})
|
||||||
private String latestLoginDevice;
|
private String latestLoginDevice;
|
||||||
|
|
||||||
/** 用户状态 */
|
/** 用户状态 */
|
||||||
@ExcelProperty("用户状态")
|
@ExcelProperty(value = {"系统信息", "用户状态"})
|
||||||
private String userStatus;
|
private String userStatus;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,8 @@ 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.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import com.alibaba.excel.context.AnalysisContext;
|
||||||
|
import com.alibaba.excel.read.listener.ReadListener;
|
||||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@ -954,7 +956,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void importUser(MultipartFile file) {
|
public void importUser(MultipartFile file) {
|
||||||
// TODO 待完善
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -975,10 +977,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
String fileName = "SNOWY2.0系统B端用户信息清单.xlsx";
|
String fileName = "SNOWY2.0系统B端用户信息清单.xlsx";
|
||||||
List<SysUserExportResult> sysUserExportResultList = this.list(queryWrapper).stream()
|
List<SysUser> sysUserList = this.list(queryWrapper);
|
||||||
|
transService.transBatch(sysUserList);
|
||||||
|
List<SysUserExportResult> sysUserExportResultList = sysUserList.stream()
|
||||||
.map(sysUser -> {
|
.map(sysUser -> {
|
||||||
SysUserExportResult sysUserExportResult = new SysUserExportResult();
|
SysUserExportResult sysUserExportResult = new SysUserExportResult();
|
||||||
BeanUtil.copyProperties(sysUser, sysUserExportResult);
|
BeanUtil.copyProperties(sysUser, sysUserExportResult);
|
||||||
|
// 状态枚举转为文字
|
||||||
|
sysUserExportResult.setUserStatus(sysUserExportResult.getUserStatus()
|
||||||
|
.equalsIgnoreCase(SysUserStatusEnum.ENABLE.getValue())?"正常":"停用");
|
||||||
// 将base64转为byte数组
|
// 将base64转为byte数组
|
||||||
sysUserExportResult.setAvatar(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
|
sysUserExportResult.setAvatar(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
|
||||||
.split(sysUser.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG));
|
.split(sysUser.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG));
|
||||||
|
@ -12,6 +12,11 @@
|
|||||||
*/
|
*/
|
||||||
package vip.xiaonuo;
|
package vip.xiaonuo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import com.alibaba.excel.read.listener.PageReadListener;
|
||||||
|
import vip.xiaonuo.common.exception.CommonException;
|
||||||
|
import vip.xiaonuo.sys.modular.user.param.SysUserImportParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TestMain方法
|
* TestMain方法
|
||||||
*
|
*
|
||||||
@ -20,6 +25,15 @@ package vip.xiaonuo;
|
|||||||
*/
|
*/
|
||||||
public class Test {
|
public class Test {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
EasyExcel.read("D://import.xlsx", SysUserImportParam.class, new PageReadListener<SysUserImportParam>(dataList -> {
|
||||||
|
for (SysUserImportParam sysUserImportParam : dataList) {
|
||||||
|
System.out.println(sysUserImportParam);
|
||||||
|
}
|
||||||
|
})).sheet().doRead();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new CommonException("文件导入失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user