Commit ec8c7f1d by RuoYi

支持用户数据导入

parent 619e1d24
...@@ -59,7 +59,7 @@ public class SysJobController extends BaseController ...@@ -59,7 +59,7 @@ public class SysJobController extends BaseController
{ {
List<SysJob> list = jobService.selectJobList(job); List<SysJob> list = jobService.selectJobList(job);
ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class); ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
return util.exportExcel(list, "job"); return util.exportExcel(list, "定时任务");
} }
@Log(title = "定时任务", businessType = BusinessType.DELETE) @Log(title = "定时任务", businessType = BusinessType.DELETE)
......
...@@ -58,7 +58,7 @@ public class SysJobLogController extends BaseController ...@@ -58,7 +58,7 @@ public class SysJobLogController extends BaseController
{ {
List<SysJobLog> list = jobLogService.selectJobLogList(jobLog); List<SysJobLog> list = jobLogService.selectJobLogList(jobLog);
ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class); ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
return util.exportExcel(list, "jobLog"); return util.exportExcel(list, "调度日志");
} }
@Log(title = "调度日志", businessType = BusinessType.DELETE) @Log(title = "调度日志", businessType = BusinessType.DELETE)
......
...@@ -56,7 +56,7 @@ public class SysLogininforController extends BaseController ...@@ -56,7 +56,7 @@ public class SysLogininforController extends BaseController
{ {
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class); ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
return util.exportExcel(list, "logininfor"); return util.exportExcel(list, "登陆日志");
} }
@RequiresPermissions("monitor:logininfor:remove") @RequiresPermissions("monitor:logininfor:remove")
......
...@@ -58,7 +58,7 @@ public class SysOperlogController extends BaseController ...@@ -58,7 +58,7 @@ public class SysOperlogController extends BaseController
{ {
List<SysOperLog> list = operLogService.selectOperLogList(operLog); List<SysOperLog> list = operLogService.selectOperLogList(operLog);
ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class); ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
return util.exportExcel(list, "operLog"); return util.exportExcel(list, "操作日志");
} }
@RequiresPermissions("monitor:operlog:remove") @RequiresPermissions("monitor:operlog:remove")
......
...@@ -62,7 +62,7 @@ public class SysConfigController extends BaseController ...@@ -62,7 +62,7 @@ public class SysConfigController extends BaseController
{ {
List<SysConfig> list = configService.selectConfigList(config); List<SysConfig> list = configService.selectConfigList(config);
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
return util.exportExcel(list, "config"); return util.exportExcel(list, "参数数据");
} }
/** /**
......
...@@ -59,7 +59,7 @@ public class SysDictDataController extends BaseController ...@@ -59,7 +59,7 @@ public class SysDictDataController extends BaseController
{ {
List<SysDictData> list = dictDataService.selectDictDataList(dictData); List<SysDictData> list = dictDataService.selectDictDataList(dictData);
ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
return util.exportExcel(list, "dictData"); return util.exportExcel(list, "字典数据");
} }
/** /**
......
...@@ -60,7 +60,7 @@ public class SysDictTypeController extends BaseController ...@@ -60,7 +60,7 @@ public class SysDictTypeController extends BaseController
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class); ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
return util.exportExcel(list, "dictType"); return util.exportExcel(list, "字典类型");
} }
/** /**
......
...@@ -59,7 +59,7 @@ public class SysPostController extends BaseController ...@@ -59,7 +59,7 @@ public class SysPostController extends BaseController
{ {
List<SysPost> list = postService.selectPostList(post); List<SysPost> list = postService.selectPostList(post);
ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class); ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
return util.exportExcel(list, "post"); return util.exportExcel(list, "岗位数据");
} }
@RequiresPermissions("system:post:remove") @RequiresPermissions("system:post:remove")
......
...@@ -60,7 +60,7 @@ public class SysRoleController extends BaseController ...@@ -60,7 +60,7 @@ public class SysRoleController extends BaseController
{ {
List<SysRole> list = roleService.selectRoleList(role); List<SysRole> list = roleService.selectRoleList(role);
ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
return util.exportExcel(list, "role"); return util.exportExcel(list, "角色数据");
} }
/** /**
......
...@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.PathVariable; ...@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
...@@ -19,11 +20,11 @@ import com.ruoyi.common.utils.ExcelUtil; ...@@ -19,11 +20,11 @@ import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.shiro.service.SysPasswordService; import com.ruoyi.framework.shiro.service.SysPasswordService;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.util.ShiroUtils;
import com.ruoyi.framework.web.base.BaseController;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.framework.web.base.BaseController;
/** /**
* 用户信息 * 用户信息
...@@ -73,7 +74,28 @@ public class SysUserController extends BaseController ...@@ -73,7 +74,28 @@ public class SysUserController extends BaseController
{ {
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
return util.exportExcel(list, "user"); return util.exportExcel(list, "用户数据");
}
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@RequiresPermissions("system:user:import")
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream());
String message = userService.importUser(userList, updateSupport);
return AjaxResult.success(message);
}
@RequiresPermissions("system:user:view")
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate()
{
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
return util.importTemplateExcel("用户数据");
} }
/** /**
......
...@@ -3,7 +3,42 @@ ...@@ -3,7 +3,42 @@
* Copyright (c) 2018 ruoyi * Copyright (c) 2018 ruoyi
*/ */
/** 用户管理 样式布局 */ /** 基础通用 **/
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.ml20 {
margin-left: 20px;
}
/** 用户管理 样式布局 **/
.box { .box {
position: relative; position: relative;
border-radius: 3px; border-radius: 3px;
...@@ -91,7 +126,7 @@ ...@@ -91,7 +126,7 @@
margin: 5px 0 5px -25px margin: 5px 0 5px -25px
} }
/** select2 样式修改 */ /** select2 样式修改 **/
.select2-container--default .select2-selection--multiple .select2-selection__choice { .select2-container--default .select2-selection--multiple .select2-selection__choice {
background-color: #1AB394; background-color: #1AB394;
border-color: #1AB394; border-color: #1AB394;
...@@ -112,7 +147,7 @@ ...@@ -112,7 +147,7 @@
padding-right: 10px padding-right: 10px
} }
/** 表单验证 样式布局 */ /** 表单验证 样式布局 **/
label.error { label.error {
position: absolute; position: absolute;
right: 18px; right: 18px;
...@@ -143,7 +178,7 @@ label.error { ...@@ -143,7 +178,7 @@ label.error {
max-width: none; max-width: none;
} }
/** 复选框&单选框 */ /** 复选框&单选框 **/
.check-box,.radio-box { .check-box,.radio-box {
display: inline-block; display: inline-block;
box-sizing: border-box; box-sizing: border-box;
...@@ -160,7 +195,7 @@ label.error { ...@@ -160,7 +195,7 @@ label.error {
left: 0 left: 0
} }
/* iCheck */ /** iCheck **/
.icheckbox-blue,.iradio-blue { .icheckbox-blue,.iradio-blue {
display: block; display: block;
margin: 0; margin: 0;
...@@ -214,7 +249,7 @@ label.error { ...@@ -214,7 +249,7 @@ label.error {
background-position: -180px 0 background-position: -180px 0
} }
/** 遮罩层 */ /** 遮罩层 **/
.loaderbox { .loaderbox {
display: inline-block; display: inline-block;
min-width: 125px; min-width: 125px;
...@@ -281,7 +316,7 @@ label.error { ...@@ -281,7 +316,7 @@ label.error {
} }
} }
/** 表单查询条件 */ /** 表单查询条件 **/
ul { ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
...@@ -409,7 +444,7 @@ label { ...@@ -409,7 +444,7 @@ label {
cursor: pointer; cursor: pointer;
} }
/** 表格查询数据 */ /** 表格查询数据 **/
.table-striped { .table-striped {
min-height: 75%; min-height: 75%;
} }
...@@ -437,7 +472,7 @@ label { ...@@ -437,7 +472,7 @@ label {
border: 1px solid #ddd!important border: 1px solid #ddd!important
} }
/** 首页样式 */ /** 首页样式 **/
.ax_close_max { .ax_close_max {
position: fixed; position: fixed;
top: 5px; top: 5px;
......
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
} }
$("#bootstrap-table").bootstrapTable('refresh', params); $("#bootstrap-table").bootstrapTable('refresh', params);
}, },
// 下载-默认第一个form // 导出数据
exportExcel: function(formId) { exportExcel: function(formId) {
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId; var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
$.modal.loading("正在导出数据,请稍后..."); $.modal.loading("正在导出数据,请稍后...");
...@@ -105,6 +105,64 @@ ...@@ -105,6 +105,64 @@
$.modal.closeLoading(); $.modal.closeLoading();
}); });
}, },
// 下载模板
importTemplate: function() {
$.get($.table._option.importTemplateUrl, function(result) {
if (result.code == web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName=" + result.msg + "&delete=" + true;
} else {
$.modal.alertError(result.msg);
}
});
},
// 导入数据
importExcel: function(formId) {
var currentId = $.common.isEmpty(formId) ? 'importForm' : formId;
$.form.reset(currentId);
layer.open({
type: 1,
area: ['400px'],
fix: false,
//不固定
maxmin: true,
shade: 0.3,
title: '导入' + $.table._option.modalName + '数据',
content: $('#' + currentId),
btn: ['<i class="fa fa-check"></i> 导入', '<i class="fa fa-remove"></i> 取消'],
// 弹层外区域关闭
shadeClose: true,
btn1: function(index, layero){
var file = layero.find('#file').val();
if (file == '' || (!$.common.endWith(file, '.xls') && !$.common.endWith(file, '.xlsx'))){
$.modal.msgWarning("请选择后缀为 “xls”或“xlsx”的文件。");
return false;
}
var index = layer.load(2, {shade: false});
var url = prefix + "/importData";
var formData = new FormData();
formData.append("file", $('#file')[0].files[0]);
formData.append("updateSupport", $("input[name='updateSupport']").is(':checked'));
$.ajax({
url: url,
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function (result) {
if (result.code == web_status.SUCCESS) {
$.modal.closeAll();
$.modal.alertSuccess(result.msg);
$.table.refresh();
} else {
layer.close(index);
$.modal.alertError(result.msg);
}
}
});
}
});
},
// 刷新表格 // 刷新表格
refresh: function() { refresh: function() {
$("#bootstrap-table").bootstrapTable('refresh', { $("#bootstrap-table").bootstrapTable('refresh', {
...@@ -288,6 +346,10 @@ ...@@ -288,6 +346,10 @@
var index = parent.layer.getFrameIndex(window.name); var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index); parent.layer.close(index);
}, },
// 关闭全部窗体
closeAll: function () {
layer.closeAll();
},
// 确认窗体 // 确认窗体
confirm: function (content, callBack) { confirm: function (content, callBack) {
layer.confirm(content, { layer.confirm(content, {
......
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
/*用户管理-修改-选择部门树*/ /*用户管理-修改-选择部门树*/
function selectDeptTree() { function selectDeptTree() {
var deptId = $("#treeId").val(); var deptId = $.common.isEmpty($("#treeId").val()) ? "100" : $("#treeId").val();
var url = ctx + "system/dept/selectDeptTree/" + deptId; var url = ctx + "system/dept/selectDeptTree/" + deptId;
var options = { var options = {
title: '选择部门', title: '选择部门',
......
...@@ -73,6 +73,9 @@ ...@@ -73,6 +73,9 @@
<a class="btn btn-danger btn-del disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:user:remove"> <a class="btn btn-danger btn-del disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:user:remove">
<i class="fa fa-remove"></i> 删除 <i class="fa fa-remove"></i> 删除
</a> </a>
<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:user:import">
<i class="fa fa-download"></i> 导入
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export"> <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export">
<i class="fa fa-download"></i> 导出 <i class="fa fa-download"></i> 导出
</a> </a>
...@@ -83,6 +86,7 @@ ...@@ -83,6 +86,7 @@
</div> </div>
</div> </div>
</div> </div>
<div th:include="include :: footer"></div> <div th:include="include :: footer"></div>
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script> <script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script> <script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
...@@ -106,6 +110,8 @@ ...@@ -106,6 +110,8 @@
updateUrl: prefix + "/edit/{id}", updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
importUrl: prefix + "/importData",
importTemplateUrl: prefix + "/importTemplate",
sortName: "createTime", sortName: "createTime",
sortOrder: "desc", sortOrder: "desc",
modalName: "用户", modalName: "用户",
...@@ -214,4 +220,16 @@ ...@@ -214,4 +220,16 @@
} }
</script> </script>
</body> </body>
<form id="importForm" enctype="multipart/form-data" class="mt20 mb10" style="display: none;">
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
&nbsp; <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">
提示:仅允许导入“xls”或“xlsx”格式文件!
</font>
</div>
</form>
</html> </html>
\ No newline at end of file
...@@ -37,7 +37,7 @@ public @interface Excel ...@@ -37,7 +37,7 @@ public @interface Excel
/** /**
* 导出时在excel中每个列的宽 单位为字符 * 导出时在excel中每个列的宽 单位为字符
*/ */
public double width() default 20; public double width() default 16;
/** /**
* 文字后缀,如% 90 变成90% * 文字后缀,如% 90 变成90%
...@@ -68,4 +68,25 @@ public @interface Excel ...@@ -68,4 +68,25 @@ public @interface Excel
* 另一个类中的属性名称,支持多级获取,以小数点隔开 * 另一个类中的属性名称,支持多级获取,以小数点隔开
*/ */
public String targetAttr() default ""; public String targetAttr() default "";
/**
* 字段类型( 1:仅导出;2:仅导入)
*/
Type type() default Type.EXPORT;
public enum Type
{
EXPORT(1), IMPORT(2);
private final int value;
Type(int value)
{
this.value = value;
}
public int value()
{
return this.value;
}
}
} }
\ No newline at end of file
...@@ -244,6 +244,10 @@ public class SysUser extends BaseEntity ...@@ -244,6 +244,10 @@ public class SysUser extends BaseEntity
public SysDept getDept() public SysDept getDept()
{ {
if (dept == null)
{
dept = new SysDept();
}
return dept; return dept;
} }
...@@ -304,6 +308,7 @@ public class SysUser extends BaseEntity ...@@ -304,6 +308,7 @@ public class SysUser extends BaseEntity
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("remark", getRemark()) .append("remark", getRemark())
.append("dept", getDept())
.toString(); .toString();
} }
} }
...@@ -138,4 +138,12 @@ public interface ISysUserService ...@@ -138,4 +138,12 @@ public interface ISysUserService
* @return 结果 * @return 结果
*/ */
public String selectUserPostGroup(Long userId); public String selectUserPostGroup(Long userId);
/**
* 导入用户数据
*
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport);
} }
...@@ -2,6 +2,8 @@ package com.ruoyi.system.service.impl; ...@@ -2,6 +2,8 @@ package com.ruoyi.system.service.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.DataScope;
...@@ -29,6 +31,8 @@ import com.ruoyi.system.service.ISysUserService; ...@@ -29,6 +31,8 @@ import com.ruoyi.system.service.ISysUserService;
@Service @Service
public class SysUserServiceImpl implements ISysUserService public class SysUserServiceImpl implements ISysUserService
{ {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired @Autowired
private SysUserMapper userMapper; private SysUserMapper userMapper;
...@@ -212,9 +216,12 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -212,9 +216,12 @@ public class SysUserServiceImpl implements ISysUserService
*/ */
public void insertUserRole(SysUser user) public void insertUserRole(SysUser user)
{ {
Long[] roles = user.getRoleIds();
if (StringUtils.isNotNull(roles))
{
// 新增用户与角色管理 // 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>(); List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long roleId : user.getRoleIds()) for (Long roleId : roles)
{ {
SysUserRole ur = new SysUserRole(); SysUserRole ur = new SysUserRole();
ur.setUserId(user.getUserId()); ur.setUserId(user.getUserId());
...@@ -226,6 +233,7 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -226,6 +233,7 @@ public class SysUserServiceImpl implements ISysUserService
userRoleMapper.batchUserRole(list); userRoleMapper.batchUserRole(list);
} }
} }
}
/** /**
* 新增用户岗位信息 * 新增用户岗位信息
...@@ -234,9 +242,12 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -234,9 +242,12 @@ public class SysUserServiceImpl implements ISysUserService
*/ */
public void insertUserPost(SysUser user) public void insertUserPost(SysUser user)
{ {
Long[] posts = user.getPostIds();
if (StringUtils.isNotNull(posts))
{
// 新增用户与岗位管理 // 新增用户与岗位管理
List<SysUserPost> list = new ArrayList<SysUserPost>(); List<SysUserPost> list = new ArrayList<SysUserPost>();
for (Long postId : user.getPostIds()) for (Long postId : posts)
{ {
SysUserPost up = new SysUserPost(); SysUserPost up = new SysUserPost();
up.setUserId(user.getUserId()); up.setUserId(user.getUserId());
...@@ -248,6 +259,7 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -248,6 +259,7 @@ public class SysUserServiceImpl implements ISysUserService
userPostMapper.batchUserPost(list); userPostMapper.batchUserPost(list);
} }
} }
}
/** /**
* 校验用户名称是否唯一 * 校验用户名称是否唯一
...@@ -345,4 +357,64 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -345,4 +357,64 @@ public class SysUserServiceImpl implements ISysUserService
} }
return idsStr.toString(); return idsStr.toString();
} }
/**
* 导入用户数据
*
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport)
{
if (StringUtils.isNull(userList) || userList.size() == 0)
{
throw new BusinessException("导入用户数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (SysUser user : userList)
{
try
{
// 验证是否存在这个用户
SysUser u = userMapper.selectUserByLoginName(user.getLoginName());
if (StringUtils.isNull(u))
{
this.insertUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getLoginName() + " 导入成功");
}
else if (isUpdateSupport)
{
this.updateUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getLoginName() + " 更新成功");
}
else
{
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getLoginName() + " 已存在");
}
}
catch (Exception e)
{
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getLoginName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new BusinessException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment