add 导入工具-用户权限

This commit is contained in:
liao
2023-11-09 17:59:00 +08:00
parent 1e6b94273d
commit 608231e380
2 changed files with 149 additions and 38 deletions
@@ -1,71 +1,148 @@
package com.jero.modules.laws.localTool.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.laws.localTool.entity.Part;
import com.jero.modules.laws.localTool.entity.StandardEarlyWarning;
import com.jero.modules.laws.localTool.entity.UserPermissionVO;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysRole;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.entity.SysUserRole;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysRoleService;
import com.jero.modules.system.service.ISysUserRoleService;
import com.jero.modules.system.service.ISysUserService;
import com.spire.ms.System.Collections.ArrayList;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.io.File;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: liao
* @Date: 2023/10/31 16:49
* @Description: 工具
*/
@Api(tags="工具")
@Api(tags="导入工具")
@RestController
@RequestMapping("/laws/localTool/util")
@RequestMapping("/laws/localTool/importUtil")
public class LawsUtilController {
@Autowired
@Resource
private ISysDictItemService sysDictItemService;
@Resource
private ISysUserService sysUserService;
@Resource
private ISysRoleService sysRoleService;
@Resource
private ISysUserRoleService sysUserRoleService;
@GetMapping(value = "/import")
public void newModelImplementation() {
@AutoLog(value = "导入工具-零部件")
@ApiOperation(value = "导入工具-零部件", notes = "导入工具-零部件")
@PostMapping(value = "/importPart")
public Result<String> importPart(HttpServletRequest request) {
long start = System.currentTimeMillis();
ImportParams params = new ImportParams();
params.setHeadRows(1);
String filePath = "D:\\Download\\browser\\Chrome\\中国重汽法规智库\\零部件导入.xlsx";
List<Part> parts = ExcelImportUtil.importExcel(new File(filePath), Part.class, params);
List<SysDictItem> sysDictItems = new ArrayList();
for (int i = 0; i < parts.size(); i++) {
SysDictItem dictItem = new SysDictItem();
// 字典id
dictItem.setDictId("1696007957666533377");
// 父节点
dictItem.setParentId("0");
// 是否标签管理显示(显示)
dictItem.setIsTagDict(1);
// 状态(启用)
dictItem.setStatus(1);
dictItem.setDelFlag(0);
// 排序
dictItem.setSortOrder(i + 1);
// 字典项值
dictItem.setItemValue(parts.get(i).getCode());
// 字典项名称
dictItem.setItemText(parts.get(i).getName());
sysDictItems.add(dictItem);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
int count = 0;
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
MultipartFile file = entry.getValue();
ImportParams params = new ImportParams();
params.setHeadRows(1);
try {
List<Part> importExcel = ExcelImportUtil.importExcel(file.getInputStream(), Part.class, params);
List<SysDictItem> sysDictItems = new ArrayList();
for (int i = 0; i < importExcel.size(); i++) {
SysDictItem dictItem = new SysDictItem();
// 字典id
dictItem.setDictId("1696007957666533377");
// 父节点
dictItem.setParentId("0");
// 是否标签管理显示(显示)
dictItem.setIsTagDict(1);
// 状态(启用)
dictItem.setStatus(1);
dictItem.setDelFlag(0);
// 排序
dictItem.setSortOrder(i + 1);
// 字典项值
dictItem.setItemValue(importExcel.get(i).getCode());
// 字典项名称
dictItem.setItemText(importExcel.get(i).getName());
dictItem.setIsReadOnly(2);
sysDictItems.add(dictItem);
}
sysDictItemService.saveBatch(sysDictItems, sysDictItems.size());
count += importExcel.size();
} catch (Exception e) {
throw new JeroBootException("导入错误");
}
}
sysDictItemService.saveBatch(sysDictItems, sysDictItems.size());
long end = System.currentTimeMillis();
System.out.println("================导入零部件===============");
System.out.println("耗时:" + (end - start) + ",同步:" + parts.size() + "条数据");
System.out.println("耗时:" + (end - start) + ",同步:" + count + "条数据");
System.out.println("=======================================");
return Result.OK();
}
@AutoLog(value = "导入工具-用户权限")
@ApiOperation(value = "导入工具-用户权限", notes = "导入工具-用户权限")
@PostMapping(value = "/importUserPermission")
public Result<String> userPermissionImport(HttpServletRequest request) {
long start = System.currentTimeMillis();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
int count = 0;
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
MultipartFile file = entry.getValue();
ImportParams params = new ImportParams();
params.setHeadRows(1);
try {
List<UserPermissionVO> importExcel = ExcelImportUtil.importExcel(file.getInputStream(), UserPermissionVO.class, params);
List<SysUserRole> insertList = new ArrayList();
List<SysUser> userList = sysUserService.list();
List<SysRole> roleList = sysRoleService.list();
Map<String, String> userMap = new HashMap<>();
Map<String, String> roleMap = new HashMap<>();
userList.forEach(user -> userMap.put(user.getUsername(), user.getId()));
roleList.forEach(role -> roleMap.put(role.getRoleName(), role.getId()));
importExcel.forEach(userPermissionVO -> {
SysUserRole userRole = new SysUserRole();
String userId = userMap.get(userPermissionVO.getUsername());
if (StringUtils.isBlank(userId)) {
throw new JeroBootException("工号:" + userPermissionVO.getUsername() + ",用户名:"
+ userPermissionVO.getRealName() + ",在用户表中不存在");
}
userRole.setUserId(userId);
String roleId = roleMap.get(userPermissionVO.getRoleName());
if (StringUtils.isBlank(roleId)) {
throw new JeroBootException("角色:" + userPermissionVO.getRoleName() + ",在角色表中不存在");
}
userRole.setRoleId(roleId);
insertList.add(userRole);
});
sysUserRoleService.saveBatch(insertList, insertList.size());
count += insertList.size();
} catch (Exception e) {
throw new JeroBootException(e);
}
}
long end = System.currentTimeMillis();
System.out.println("================导入用户权限===============");
System.out.println("耗时:" + (end - start) + ",同步:" + count + "条数据");
System.out.println("=======================================");
return Result.OK();
}
}
@@ -0,0 +1,34 @@
package com.jero.modules.laws.localTool.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Author: liao
* @Date: 2023/11/9 17:10
* @Description: 用户权限
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="用户权限", description="用户权限")
public class UserPermissionVO {
/**分类代码*/
@Excel(name = "USERID", width = 15)
@ApiModelProperty(value = "工号")
private java.lang.String username;
/**显示名称*/
@Excel(name = "USERNAME", width = 15)
@ApiModelProperty(value = "用户名")
private java.lang.String realName;
/**设计规范*/
@Excel(name = "ROLENAME", width = 15)
@ApiModelProperty(value = "角色名称")
private java.lang.String roleName;
}