From 300b1fd97ff6cb44a7d2c0a0b524f578e8e394ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Thu, 10 Sep 2020 22:02:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysUserInfoService.java | 9 ++ .../controller/busi/SysEnumController.java | 12 ++ .../controller/busi/SysUserInfoController.java | 155 ++++++++------------- 3 files changed, 81 insertions(+), 95 deletions(-) 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/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); - } - } }