diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IBackstageService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IBackstageService.java new file mode 100644 index 0000000..e81163d --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IBackstageService.java @@ -0,0 +1,22 @@ +package cn.estsh.i3plus.core.api.iservice.base; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-09-04 11:29 + * @Modify: + **/ +public interface IBackstageService { + + /** + * 更新并清理功能软件模块数据 + */ + void updateCleanMenuSoftType(); + + + /** + * 更新并清理角色功能数据 + */ + void updateRefRoleMenu(); +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMenuService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMenuService.java index 18f555c..a8997cc 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMenuService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMenuService.java @@ -23,9 +23,6 @@ public interface ISysMenuService extends ICrudService { @ApiOperation(value = "更新内存语言缓存",notes = "更新内存语言缓存") void refreshMemSysMenuLanguage(); - @ApiOperation(value = "刷新权限关系",notes = "刷新角色权限关系SoftType 字段") - void refreshRefSysMenuBySoftType(); - @ApiOperation(value = "国际化功能权限",notes = "国际化功能权限") List setLanguageSysMenuName(String languageCode, List menuList); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java index d85dbf4..2ab2e4a 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java @@ -152,6 +152,15 @@ public interface ISysUserInfoService { List querySysUserInfoList(SysUserInfo info, List idList); /** + * 根据(组织ID,部门ID,用户名称,用户工号) 查询用户信息 + * @param info + * @param idList 用户ID 集合 + * @return + */ + @ApiOperation(value = "查询用户信息",notes = "根据组织、部门、名称+工号组合查询条件查询用户信息") + List findSysUserInfoList(SysUserInfo info); + + /** * 查询用户信息 * @param model 用户模型 * @param idList diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java index 35f7a75..999907d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java @@ -1,17 +1,12 @@ package cn.estsh.i3plus.core.apiservice.controller.base; +import cn.estsh.i3plus.core.api.iservice.base.IBackstageService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; -import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.license.ImppLicense; -import cn.estsh.i3plus.pojo.platform.bean.SysMenu; -import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu; -import cn.estsh.i3plus.pojo.platform.bean.SysRole; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -20,15 +15,12 @@ import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections4.ListUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Objects; /** * @Description : 后台服务 @@ -54,10 +46,7 @@ public class BackstageController extends CoreBaseController { private ICoreMemTreeService memTreeService; @Autowired - private ISysRoleService sysRoleService; - - @Autowired - private IPersonnelService penfindSysRefUserRole; + private IBackstageService backstageService; @GetMapping(value = "/redis-put-all") @ApiOperation(value = "重新加载所有缓存数据",notes = "重新加载所有缓存数据") @@ -125,51 +114,6 @@ public class BackstageController extends CoreBaseController { } } - @GetMapping(value = "/reset/menu/soft-type") - @ApiOperation(value = "重置菜单产品类型属性",notes = "重新加载授权数据") - public ResultBean restSysMenuSoftType(){ - try { - List menuList = menuService.findAll(); - if(CollectionUtils.isNotEmpty(menuList)){ - - /** 设置功能权限 softType 默认值*/ - Map menuMap = new HashMap<>(); - for (SysMenu menu : menuList) { - menu.setSoftType(CommonEnumUtil.SOFT_TYPE.IMPP.getValue()); - menuMap.put(menu.getId(),menu); - } - - List treeMenus = memTreeService.packTreeSysMenu(menuList, CommonEnumUtil.SOFT_TYPE.IMPP.getMenuRootId()); - if(CollectionUtils.isNotEmpty(treeMenus)){ - for (SysMenu menu : treeMenus) { - CommonEnumUtil.SOFT_TYPE softType = CommonEnumUtil.SOFT_TYPE.valueOfMenuRootId(menu.getId()); - - if(Objects.nonNull(softType)){ - menu.setSoftType(softType.getValue()); - - List childMenus = memTreeService.findChildSysMenu(menu); - if(CollectionUtils.isNotEmpty(childMenus)){ - for (Long key : childMenus) { - if(menuMap.containsKey(key)){ - menuMap.get(key).setSoftType(softType.getValue()); - } - } - } - } - } - } - menuService.saveBatch(new ArrayList<>(menuMap.values())); - } - - menuService.refreshRefSysMenuBySoftType(); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - @GetMapping(value = "/reset/task-log-level") @ApiOperation(value = "重置定时任务日志等级",notes = "重置定时任务日志等级") public ResultBean restTaskLogLevel(){ @@ -205,20 +149,8 @@ public class BackstageController extends CoreBaseController { @ApiOperation(value = "更新并清理功能软件模块数据", notes = "更新并清理功能软件模块数据") public ResultBean updateCleanMenuSoftType(){ try { - SysMenu sysMenu = new SysMenu(); - sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); - List list = menuService.findAllByBean(sysMenu).stream() - .filter(menu -> menu.getId() != 100000000L) - .collect(Collectors.toList()); - - List allList = menuService.findAll(); - Map> ds = allList.stream().collect(Collectors.groupingBy(SysMenu::getParentId)); - packSysMenuTree(list, ds, null); - - for (List sysMenuList : ListUtils.partition(allList, 100)) { - new Thread(() -> menuService.saveBatch(sysMenuList)).start(); - } - return ResultBean.success("操作成功").setResultList(list); + backstageService.updateCleanMenuSoftType(); + return ResultBean.success("操作成功"); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -226,42 +158,11 @@ public class BackstageController extends CoreBaseController { } } - public void packSysMenuTree(List sysMenuList, Map> ds,Integer softType) { - if (CollectionUtils.isEmpty(sysMenuList)) { - return; - } - for (SysMenu sysMenu : sysMenuList) { - if (softType != null) { - sysMenu.setSoftType(softType); - } - if (ds.containsKey(sysMenu.getId())) { - sysMenu.setChildList(ds.get(sysMenu.getId())); - packSysMenuTree(sysMenu.getChildList(), ds, sysMenu.getSoftType()); - } - } - } - @GetMapping(value = "/update-clean-ref-role-menu") @ApiOperation(value = "更新并清理角色功能数据", notes = "更新并清理角色功能数据") public ResultBean updateRefRoleMenu(){ try { - List roleIdList = sysRoleService.findAll().stream().map(SysRole::getId).collect(Collectors.toList()); - Map> roleMenuMap = new HashMap<>(); - for (SysRefRoleMenu refRoleMenu : penfindSysRefUserRole.findSysRefRoleMenuByRoleIds(roleIdList)) { - if (!roleMenuMap.containsKey(refRoleMenu.getRoleId())) { - roleMenuMap.put(refRoleMenu.getRoleId(), new HashSet<>()); - } - roleMenuMap.get(refRoleMenu.getRoleId()).add(refRoleMenu.getMenuId()); - } - - for (Map.Entry> longSetEntry : roleMenuMap.entrySet()) { - sysRoleService.refreshSysRoleRef( - longSetEntry.getKey(), - longSetEntry.getValue().toArray(new Long[longSetEntry.getValue().size()]), - "清理垃圾数据" - ); - } - + backstageService.updateRefRoleMenu(); return ResultBean.success("操作成功"); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/PressureTestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/PressureTestController.java index 527f5fa..96f0026 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/PressureTestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/PressureTestController.java @@ -57,22 +57,6 @@ public class PressureTestController extends CoreBaseController { @Autowired private ITestTransService testTransService; - - - - @GetMapping("/s-redis-put") - @ApiOperation(value = "redisPut", notes = "redisPut") - public ResultBean sredisPut(){ - try { - testTransService.insertRedis(); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - @GetMapping("/test-aspect") @ApiOperation(value = "testAspect", notes = "testAspect") public ResultBean testAspect(){ @@ -99,95 +83,22 @@ public class PressureTestController extends CoreBaseController { } } - @GetMapping("/s-redis-put-test") - @ApiOperation(value = "redisPutTest", notes = "redisPutTest") - public ResultBean sredisPutTest(){ - try { - testTransService.selectRedis(); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping("/redis-put") - @ApiOperation(value = "redisPut", notes = "redisPut") - public ResultBean redisPut(){ - try { - for (int i = 0; i < 1000; i++) { - imppRedis.putObject(i + "", i); - } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping("/redis-get") - @ApiOperation(value = "redisGet", notes = "redisGet") - public ResultBean redisGet(){ - try { - for (int i = 0; i < 1000; i++) { - imppRedis.getObject(i + ""); - } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping("/redis-put-test") - @ApiOperation(value = "redisPutTest", notes = "redisPutTest") - public ResultBean redisPutTest(){ - try { - for (int i = 0; i < 1000; i++) { -// imppRedis.putObjectTest(i + "", i); - } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping("/redis-put-run") - @ApiOperation(value = "redisPutThread", notes = "redisPutThread") - public ResultBean redisPutThread(Boolean isTest){ - try { - RedisTest.setImppRedis(imppRedis); - RedisTest.setTest(isTest); - for (int i = 0; i < 10; i++) { - new RedisTest().run(); - } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - static class RedisTest implements Runnable{ @Setter public static ImppRedis imppRedis; @Setter - public static boolean isTest; + public static boolean isPut; + public static String STR = ""; @Override public void run() { - for (int i = 0; i < 200; i++) { - if(isTest) { - imppRedis.putObject("runnable" + i, i); - }else{ -// imppRedis.putObjectTest("runnable" + i, i); + for (int i = 0; i < 10; i++) { + String value = "REDIS-TEST:" + String.valueOf(Math.random() * 10000000); + if (isPut) { + imppRedis.putObject(value, value); + } else { + imppRedis.getObject(value); } } } @@ -325,4 +236,26 @@ public class PressureTestController extends CoreBaseController { } } + + @GetMapping("/redis-test") + @ApiOperation(value = "查询Opc订阅", notes = "查询Opc订阅") + @AnnoIgnoreLog + public ResultBean redisRead(boolean isPut){ + try { + RedisTest.setImppRedis(imppRedis); + RedisTest.setPut(isPut); + + for (int i = 0; i < 10; i++) { + new Thread(new RedisTest()).start(); + } + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java index 7c5be56..fd77f89 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java @@ -69,8 +69,6 @@ public class SysDictionaryController extends CoreBaseController{ // 父级必须设置字典代码 if(sysDictionary.getParentIdVal() == CommonEnumUtil.PARENT.DEFAULT.getValue()){ ValidatorBean.checkNotNull(sysDictionary.getDictionaryCode(),"字典代码不能为空"); - } else { - ValidatorBean.checkNotNull(sysDictionary.getDictionaryValue(),"字典参数值不能为空"); } //新增初始化 @@ -110,8 +108,6 @@ public class SysDictionaryController extends CoreBaseController{ // 父级必须设置字典代码 if(sysDictionary.getParentIdVal() == CommonEnumUtil.PARENT.DEFAULT.getValue()){ ValidatorBean.checkNotNull(sysDictionary.getDictionaryCode(),"字典代码不能为空"); - } else { - ValidatorBean.checkNotNull(sysDictionary.getDictionaryValue(),"字典参数值不能为空"); } if(sysDictionary.getParentIdVal() == sysDictionary.getId()){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java index adb4828..d4b8127 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java @@ -380,4 +380,16 @@ public class SysEnumController extends CoreBaseController { return new ResultBean(true, "操作成功", LocaleUtils.getEnumLocaleResValuesToList(WorkWeChatEnumUtil.WECHAT_USER_BIND_PROPERTY.values())); } + + /** + * 企业微信用户绑定属性 + * + * @return 处理结果 + */ + @GetMapping("/user-login-status") + @ApiOperation(value = "用户登录状态", notes = "用户登录状态") + public ResultBean getUserLoginStatus() { + return new ResultBean(true, "操作成功", + LocaleUtils.getEnumLocaleResValuesToList(CommonEnumUtil.USER_LOGIN_STATUS.values())); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java index 8b2ca4e..885aba2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java @@ -4,16 +4,16 @@ import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.ExcelTool; -import cn.estsh.i3plus.platform.common.tool.FileTool; -import cn.estsh.i3plus.platform.common.tool.ZipTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; +import cn.estsh.i3plus.pojo.model.platform.UserExportModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -25,6 +25,7 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,10 +33,14 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.persistence.EntityManager; -import java.io.File; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.util.ArrayList; -import java.util.Date; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Description : 用户信息 服务 @@ -64,15 +69,6 @@ public class SysUserInfoController extends CoreBaseController{ private ISysPositionService positionService; @Autowired - private ISysConfigService sysConfigService; - - @Autowired - private ISysFileService sysFileService; - - @Autowired - private ISysMessageService sysMessageService; - - @Autowired private EntityManager entityManager; @Autowired @@ -81,6 +77,9 @@ public class SysUserInfoController extends CoreBaseController{ @Autowired private IPersonnelService personnelService; + @Autowired + private ISysUserService sysUserService; + @Resource(name= CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; /** @@ -405,95 +404,61 @@ public class SysUserInfoController extends CoreBaseController{ } } - /** - * 导出用户信息 - * @param sysUserInfo 用户信息 - * @param colName 导出列 - * @param pageSize 页大小 - * @param isZip 是否发展邮件 - * @return 处理结果 - */ - @GetMapping(value = "/export") - @ApiOperation(value = "导出用户信息") - public ResultBean exportSysUserInfo(SysUserInfo sysUserInfo, String[] colName, int pageSize,boolean isZip) { - ListPager listPager; - List result = new ArrayList(); - File zipFile = null; - File excelDir = null; - File excelFile; - ExcelTool excelTool; - + @GetMapping("/export") + @ApiOperation(value = "导出用户信息",notes = "导出用户信息") + public void exportSysUserInfo(SysUserInfo sysUserInfo, HttpServletResponse response) throws Exception { + File file = null; try { - excelTool = new ExcelTool(entityManager, redisRes); - Pager pager = new Pager(); - pager.setCurrentPage(1); - // 判断是否超过excel最大导出数量设定值 - int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue()); - if (pageSize == 0 || pageSize >= maxPageSize) { - pager.setPageSize(maxPageSize); - } else { - pager.setPageSize(pageSize); - } + List list = sysUserInfoService.findSysUserInfoList(sysUserInfo); + Map sysUserMap = sysUserService.list().stream() + .collect(Collectors.toMap(SysUser::getId, Function.identity())); + List exportModelList = new ArrayList<>(); + + + UserExportModel userExportModel; + List sysRefUserRoleList; + StringBuffer roleName = new StringBuffer(); + for (SysUserInfo userInfo : list) { + // 关联角色信息 + sysRefUserRoleList = sysUserService.findSysRefUserRoleByUserId(userInfo.getUserId()); + for (SysRefUserRole sysRefUserRole : sysRefUserRoleList) { + roleName.append(sysRefUserRole.getRoleNameRdd()).append(","); + } + roleName.setLength(roleName.length() - 1); - // 数据校验 - if(colName==null || colName.length == 0){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) - .setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()) - .setErrorDetail("导出列不能为空") - .build(); + // 封装model + userExportModel = new UserExportModel(sysUserMap.get(userInfo.getUserId()), userInfo); + userExportModel.setRoleNameRdd(roleName.toString()); + + exportModelList.add(userExportModel); } - excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime()); - excelDir.mkdir(); - do { - listPager = sysUserInfoService.querySysUserInfo(sysUserInfo, pager); - pager = listPager.getObjectPager(); - - // 将excel导出至临时文件夹并上传 - excelFile = new File(excelDir + File.separator + SysUserInfo.class.getSimpleName() + pager.getCurrentPage() + ".xls"); - excelFile.createNewFile(); - - excelTool.exportData(excelFile, listPager.getObjectList(), SysUserInfo.class, colName); - result.add(sysFileService.uploadFile(excelFile)); - - pager.setCurrentPage(pager.getCurrentPage() + 1); - } while (pager.getCurrentPage() <= pager.getTotalPages()); - - // 将所有excel文件打包 - if(isZip){ - zipFile = ZipTool.zipFile(null, excelDir); - result.add(sysFileService.uploadFile(zipFile)); - sysMessageService.doSendSysMessage(ExcelTool.sendStationLetter(result,getSessionUser().getUser().getId())); - return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); - } else { - return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "user-info-" + System.currentTimeMillis() + ".xls"; + file = new File(fileName); + file.createNewFile(); + File excle = excelTool.exportData(file, exportModelList, UserExportModel.class + , (LinkedHashMap) ExcelTool.getColName(UserExportModel.class)); + + response.setContentType("application/force-download"); // 设置强制下载不打开 + response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名 + response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName,true))); + + // 设置文件名 + try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(excle)))) { + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[1024]; + int i = bis.read(buffer); + while (i != -1) { + os.write(buffer, 0, i); + i = bis.read(buffer); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (ImppBusiException busExcep) { - return ResultBean.fail(busExcep); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } finally { - // 清理临时文件文件 - if(excelDir != null){ - FileTool.deleteFile(excelDir.getPath()); - } + FileUtils.deleteQuietly(file); } } - /** - * 获取用户可导出字段 - * @return 处理结果 - */ - @GetMapping("/get-col") - @ApiOperation(value = "获取用户可导出字段") - public ResultBean getSysUserInfoColName(){ - try { - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelTool.getColName(SysUserInfo.class)); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BackstageService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BackstageService.java new file mode 100644 index 0000000..fee6c65 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BackstageService.java @@ -0,0 +1,95 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.core.api.iservice.base.IBackstageService; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysMenu; +import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu; +import cn.estsh.i3plus.pojo.platform.bean.SysRole; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-09-04 11:31 + * @Modify: + **/ +@Service +public class BackstageService implements IBackstageService { + + @Autowired + private ISysMenuService menuService; + + @Autowired + private ISysRoleService sysRoleService; + + @Autowired + private IPersonnelService penfindSysRefUserRole; + + /** + * 更新并清理功能软件模块数据 + */ + @Override + public void updateCleanMenuSoftType() { + SysMenu sysMenu = new SysMenu(); + sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); + List list = menuService.findAllByBean(sysMenu).stream() + .filter(menu -> menu.getId() != 100000000L) + .collect(Collectors.toList()); + + List allList = menuService.findAll(); + Map> ds = allList.stream().collect(Collectors.groupingBy(SysMenu::getParentId)); + packSysMenuTree(list, ds, null); + + for (List sysMenuList : ListUtils.partition(allList, 100)) { + new Thread(() -> menuService.saveBatch(sysMenuList)).start(); + } + } + + public void packSysMenuTree(List sysMenuList, Map> ds, Integer softType) { + if (CollectionUtils.isEmpty(sysMenuList)) { + return; + } + for (SysMenu sysMenu : sysMenuList) { + if (softType != null) { + sysMenu.setSoftType(softType); + } + if (ds.containsKey(sysMenu.getId())) { + sysMenu.setChildList(ds.get(sysMenu.getId())); + packSysMenuTree(sysMenu.getChildList(), ds, sysMenu.getSoftType()); + } + } + } + + /** + * 更新并清理角色功能数据 + */ + @Override + public void updateRefRoleMenu() { + List roleIdList = sysRoleService.findAll().stream().map(SysRole::getId).collect(Collectors.toList()); + Map> roleMenuMap = new HashMap<>(); + for (SysRefRoleMenu refRoleMenu : penfindSysRefUserRole.findSysRefRoleMenuByRoleIds(roleIdList)) { + if (!roleMenuMap.containsKey(refRoleMenu.getRoleId())) { + roleMenuMap.put(refRoleMenu.getRoleId(), new HashSet<>()); + } + roleMenuMap.get(refRoleMenu.getRoleId()).add(refRoleMenu.getMenuId()); + } + + for (Map.Entry> longSetEntry : roleMenuMap.entrySet()) { + sysRoleService.refreshSysRoleRef( + longSetEntry.getKey(), + longSetEntry.getValue().toArray(new Long[longSetEntry.getValue().size()]), + "清理垃圾数据" + ); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogUserLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogUserLoginService.java index fb60f4e..7785876 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogUserLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogUserLoginService.java @@ -37,7 +37,7 @@ public class SysLogUserLoginService implements ISysLogUserLoginService { public ListPager querySysLogUserLoginByPager(SysLogUserLogin sysLogUserLogin, Pager pager) { DdlPackBean ddlPackBean = CoreHqlPack.packHqlQuerySysLogUserLogin(sysLogUserLogin); int count = sysLogUserLoginRDao.findByHqlWhereCount(ddlPackBean); - PagerHelper.getPager(pager, count); + pager = PagerHelper.getPager(pager, count); return new ListPager<>(sysLogUserLoginRDao.findByHqlWherePage(ddlPackBean, pager), pager); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java index 249ebef..63b9e81 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java @@ -17,14 +17,16 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.base.service.CrudService; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU; @@ -107,33 +109,6 @@ public class SysMenuService extends CrudService implements ISysMenuServ } @Override - public void refreshRefSysMenuBySoftType() { - List list = findAll(); - if (CollectionUtils.isNotEmpty(list)) { - Map> refMap = new HashMap<>(); - for (SysMenu menu : list) { - if (Objects.nonNull(menu.getSoftType())) { - List ids = refMap.get(menu.getSoftType()); - if (CollectionUtils.isEmpty(ids)) { - ids = new ArrayList<>(); - } - ids.add(menu.getId()); - refMap.put(menu.getSoftType(), ids); - } - } - - if (MapUtils.isNotEmpty(refMap)) { - DdlPackBean packBean = null; - for (Integer softType : refMap.keySet()) { - packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getInPackList(refMap.get(softType), "menuId", packBean); - refRoleMenuRDao.updateByProperties("softType", softType, packBean); - } - } - } - } - - @Override public List setLanguageSysMenuName(String languageCode, List menuList) { languageCode = StringUtils.isNotBlank(languageCode) ? languageCode : CommonConstWords.DEFAULT_LANGUAGE; Map localeResourceMap = MEM_CACHE_LANGAGE.get(languageCode); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java index 9971fe5..b3f8f01 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java @@ -359,6 +359,17 @@ public class SysUserInfoService implements ISysUserInfoService { return sysUserInfoRDao.findByHqlWhere(hqlPack); } + /** + * 根据(组织ID,部门ID,用户名称,用户工号) 查询用户信息 + * + * @param info + * @return + */ + @Override + public List findSysUserInfoList(SysUserInfo info) { + return sysUserInfoRDao.findByHqlWhere(CoreHqlPack.packHqlSysUserInfo(info)); + } + @Override public List querySysUserInfoList(UserDetailModel model, List idList) { return null; diff --git a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml index da25c13..4c8d313 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml +++ b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml @@ -22,7 +22,7 @@ @@ -54,7 +54,7 @@ @@ -84,7 +84,7 @@