diff --git a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupUserController.java b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupUserController.java index c7b01186..f294709e 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupUserController.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupUserController.java @@ -1,9 +1,5 @@ package com.jero.modules.sys.controller; -import cn.hutool.core.io.IoUtil; -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jero.common.api.vo.Result; @@ -15,6 +11,7 @@ import com.jero.common.util.ImportExcelUtil; import com.jero.common.util.MessageUtils; import com.jero.modules.laws.common.constant.ResultCommon; import com.jero.modules.sys.entity.LawsWorkingGroupUser; +import com.jero.modules.sys.entity.LawsWorkingGroupUserImport; import com.jero.modules.sys.service.ILawsWorkingGroupUserService; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; @@ -25,380 +22,331 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; - /** +/** * @Description: 内部工作组人员关联表 * @Author: jero-boot - * @Date: 2023-09-06 + * @Date: 2023-09-06 * @Version: V1.0 */ -@Api(tags="内部工作组人员关联表") +@Api(tags = "内部工作组人员关联表") @RestController @RequestMapping("/sys/lawsWorkingGroupUser") @Slf4j public class LawsWorkingGroupUserController extends JeroController { - @Autowired - private ILawsWorkingGroupUserService lawsWorkingGroupUserService; - @Autowired - private ISysUserService sysUserService; + @Autowired + private ILawsWorkingGroupUserService lawsWorkingGroupUserService; + @Autowired + private ISysUserService sysUserService; - /** - * 分页列表查询 - */ - @RequiresPermissions("sys:innerWorkingGroup:search") - @AutoLog(value = "内部工作组人员关联表-分页列表查询") - @ApiOperation(value="内部工作组人员关联表-分页列表查询", notes="内部工作组人员关联表-分页列表查询") - @GetMapping(value = "/page") - public Result> queryPageList(LawsWorkingGroupUser lawsWorkingGroupUser, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - lawsWorkingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); - IPage pageList = lawsWorkingGroupUserService.queryPage(lawsWorkingGroupUser, pageNo, pageSize, req); - lawsWorkingGroupUserService.userAssignment(pageList.getRecords()); - return Result.OK(pageList); - } - /** - * 列表查询 - */ - @RequiresPermissions("sys:innerWorkingGroup:search") - @AutoLog(value = "内部工作组人员关联表-列表查询") - @ApiOperation(value="内部工作组人员关联表-列表查询", notes="内部工作组人员关联表-列表查询") - @GetMapping(value = "/list") - public Result> queryList(LawsWorkingGroupUser lawsWorkingGroupUser, HttpServletRequest req) { - lawsWorkingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + * 分页列表查询 + */ + @RequiresPermissions("sys:innerWorkingGroup:search") + @AutoLog(value = "内部工作组人员关联表-分页列表查询") + @ApiOperation(value = "内部工作组人员关联表-分页列表查询", notes = "内部工作组人员关联表-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(LawsWorkingGroupUser lawsWorkingGroupUser, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + lawsWorkingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + IPage pageList = lawsWorkingGroupUserService.queryPage(lawsWorkingGroupUser, pageNo, pageSize, req); + lawsWorkingGroupUserService.userAssignment(pageList.getRecords()); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("sys:innerWorkingGroup:search") + @AutoLog(value = "内部工作组人员关联表-列表查询") + @ApiOperation(value = "内部工作组人员关联表-列表查询", notes = "内部工作组人员关联表-列表查询") + @GetMapping(value = "/list") + public Result> queryList(LawsWorkingGroupUser lawsWorkingGroupUser, HttpServletRequest req) { + lawsWorkingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); List list = lawsWorkingGroupUserService.queryList(lawsWorkingGroupUser, req); - lawsWorkingGroupUserService.userAssignment(list); + lawsWorkingGroupUserService.userAssignment(list); return Result.OK(list); - } + } - - /** - * 添加 - */ - @RequiresPermissions("sys:innerWorkingGroup:add") - @AutoLog(value = "内部工作组人员关联表-添加") - @ApiOperation(value="内部工作组人员关联表-添加", notes="内部工作组人员关联表-添加") - @PostMapping(value = "/add") - public Result add(@Validated @RequestBody LawsWorkingGroupUser lawsWorkingGroupUser) { - if (StringUtils.isBlank(lawsWorkingGroupUser.getWorkingGroupId()) || StringUtils.isBlank(lawsWorkingGroupUser.getUserId())){ - throw new JeroBootException(ResultCommon.PLEASE_SELECT_PERSONNEL_AND_WORKGROUP); - } - String userId = lawsWorkingGroupUser.getUserId(); - List asList = Arrays.asList(userId.split(",")); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - wrapper.in(LawsWorkingGroupUser::getUserId, asList); - wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, lawsWorkingGroupUser.getWorkingGroupId()); - List list = lawsWorkingGroupUserService.list(wrapper); - if (list.size() > 0){ - String workNo; - List collect = list.stream().map(LawsWorkingGroupUser::getUserId).distinct().collect(Collectors.toList()); - StringJoiner joiner = new StringJoiner(","); - for (String id : collect) { - SysUser sysUser = sysUserService.getById(id); - if (sysUser != null && StringUtils.isNotBlank(sysUser.getUsername())) { - joiner.add(sysUser.getUsername()); - } - } - workNo = joiner.toString(); - throw new JeroBootException(ResultCommon.NUMBER_WORK_NO_ALREADY_EXISTS, workNo); - } - List groupUsers = new ArrayList<>(); - for (String id : asList) { - LawsWorkingGroupUser workingGroupUser = new LawsWorkingGroupUser(); - workingGroupUser.setWorkingGroupId(lawsWorkingGroupUser.getWorkingGroupId()); - workingGroupUser.setUserId(id); - workingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); - groupUsers.add(workingGroupUser); - } - lawsWorkingGroupUserService.saveBatch(groupUsers); - return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); - } - - /** - * 通过id删除 - */ - @RequiresPermissions("sys:innerWorkingGroup:delete") - @AutoLog(value = "内部工作组人员关联表-通过id删除") - @ApiOperation(value="内部工作组人员关联表-通过id删除", notes="内部工作组人员关联表-通过id删除") - @PostMapping(value = "/delete") - public Result delete(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - throw new JeroBootException(ResultCommon.PLEASE_SELECT_DATA); + /** + * 添加 + */ + @RequiresPermissions("sys:innerWorkingGroup:add") + @AutoLog(value = "内部工作组人员关联表-添加") + @ApiOperation(value = "内部工作组人员关联表-添加", notes = "内部工作组人员关联表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody LawsWorkingGroupUser lawsWorkingGroupUser) { + if (StringUtils.isBlank(lawsWorkingGroupUser.getWorkingGroupId()) || StringUtils.isBlank(lawsWorkingGroupUser.getUserId())) { + throw new JeroBootException(ResultCommon.PLEASE_SELECT_PERSONNEL_AND_WORKGROUP); } - LawsWorkingGroupUser groupUser = lawsWorkingGroupUserService.getById(map.get("id")); - groupUser.setDelFlag(CommonConstant.DEL_FLAG_1.toString()); - lawsWorkingGroupUserService.updateById(groupUser); - return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); - } + String userId = lawsWorkingGroupUser.getUserId(); + List asList = Arrays.asList(userId.split(",")); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + wrapper.in(LawsWorkingGroupUser::getUserId, asList); + wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, lawsWorkingGroupUser.getWorkingGroupId()); + List list = lawsWorkingGroupUserService.list(wrapper); + if (CollectionUtils.isEmpty(list)) { + String workNo; + List collect = list.stream().map(LawsWorkingGroupUser::getUserId).distinct().collect(Collectors.toList()); + StringJoiner joiner = new StringJoiner(","); + for (String id : collect) { + SysUser sysUser = sysUserService.getById(id); + if (sysUser != null && StringUtils.isNotBlank(sysUser.getUsername())) { + joiner.add(sysUser.getUsername()); + } + } + workNo = joiner.toString(); + throw new JeroBootException(ResultCommon.NUMBER_WORK_NO_ALREADY_EXISTS, workNo); + } + List groupUsers = new ArrayList<>(); + for (String id : asList) { + LawsWorkingGroupUser workingGroupUser = new LawsWorkingGroupUser(); + workingGroupUser.setWorkingGroupId(lawsWorkingGroupUser.getWorkingGroupId()); + workingGroupUser.setUserId(id); + workingGroupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + groupUsers.add(workingGroupUser); + } + lawsWorkingGroupUserService.saveBatch(groupUsers); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("sys:innerWorkingGroup:delete") + @AutoLog(value = "内部工作组人员关联表-通过id删除") + @ApiOperation(value = "内部工作组人员关联表-通过id删除", notes = "内部工作组人员关联表-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody Map map) { + if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) { + throw new JeroBootException(ResultCommon.PLEASE_SELECT_DATA); + } + lawsWorkingGroupUserService.deleteById(map.get("id")); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } - /** - * 通过excel导入数据 - */ - @RequiresPermissions("sys:innerWorkingGroup:import") - @AutoLog(value = "内部工作组人员关联表-导入") - @ApiOperation(value="内部工作组人员关联表-导入", notes="内部工作组人员关联表-导入") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result importFile(MultipartFile file, String workingGroupId) throws Exception { - String fileName = file.getOriginalFilename(); - // 上传文件为空 - if (StringUtils.isEmpty(fileName)) { - throw new JeroBootException(ResultCommon.NO_FILES_IMPORTED); - } - if (StringUtils.isBlank(workingGroupId)) { - throw new JeroBootException(ResultCommon.PLEASE_SELECT_A_WORKGROUP_TO_IMPORT); - } - // 上传文件名格式不正确 - if (fileName.lastIndexOf(".") != -1 && !".xlsx".equals(fileName.substring(fileName.lastIndexOf(".")))) { - throw new JeroBootException(ResultCommon.PLEASE_USE_A_FILE_WITH_THE_SUFFIX_XLSX); - } - boolean b; - try { - b = ImportExcelUtil.checkTemplateTitle(file, LawsWorkingGroupUser.class, 0, 0); - } catch (Exception e) { - e.printStackTrace(); - throw new JeroBootException(ResultCommon.PLEASE_USE_A_FILE_WITH_THE_SUFFIX_XLSX); - } - // 校验excel 字段是否正确 - if (!b) { - throw new JeroBootException(ResultCommon.HEADER_INCONSISTENT_WITH_TEMPLATE); - } + /** + * 通过excel导入数据 + */ + @RequiresPermissions("sys:innerWorkingGroup:import") + @AutoLog(value = "内部工作组人员关联表-导入") + @ApiOperation(value = "内部工作组人员关联表-导入", notes = "内部工作组人员关联表-导入") + @PostMapping(value = "/importExcel") + public Result importFile(MultipartFile file, String workingGroupId) throws Exception { + String fileName = file.getOriginalFilename(); + // 上传文件为空 + if (StringUtils.isEmpty(fileName)) { + throw new JeroBootException(ResultCommon.NO_FILES_IMPORTED); + } + if (StringUtils.isBlank(workingGroupId)) { + throw new JeroBootException(ResultCommon.PLEASE_SELECT_A_WORKGROUP_TO_IMPORT); + } + // 上传文件名格式不正确 + if (fileName.lastIndexOf(".") != -1 && !".xlsx".equals(fileName.substring(fileName.lastIndexOf(".")))) { + throw new JeroBootException(ResultCommon.PLEASE_USE_A_FILE_WITH_THE_SUFFIX_XLSX); + } + boolean b; + try { + b = ImportExcelUtil.checkTemplateTitle(file, LawsWorkingGroupUserImport.class, 0, 0); + } catch (Exception e) { + e.printStackTrace(); + throw new JeroBootException(ResultCommon.PLEASE_USE_A_FILE_WITH_THE_SUFFIX_XLSX); + } + // 校验excel 字段是否正确 + if (!b) { + throw new JeroBootException(ResultCommon.HEADER_INCONSISTENT_WITH_TEMPLATE); + } - InputStream inputStream = file.getInputStream(); - List all; - try { - ExcelReader excelReader = ExcelUtil.getReader(inputStream, "sheet1"); - List> maps = excelReader.readAll(); - if (maps.size() < 1) { - throw new JeroBootException(ResultCommon.IMPORT_DATA_CANNOT_BE_EMPTY); - } - // 校验表头,同时映射对象字段 - if (!validateHeader(excelReader)) { - throw new JeroBootException(ResultCommon.HEADER_INCONSISTENT_WITH_TEMPLATE); - } - all = excelReader.readAll(LawsWorkingGroupUser.class); - } catch (Exception e) { - throw new JeroBootException(ResultCommon.ERROR); - } - //校验导入正确性,msg是错误信息 - String msg = importExcelCheck(all); - if (StringUtils.isNotBlank(msg)) { - return Result.error(msg); - } - for (LawsWorkingGroupUser groupUser : all) { - String username = groupUser.getUsername(); - SysUser userByWorkNo = sysUserService.getUserByName(username); - groupUser.setUserId(userByWorkNo.getId()); - groupUser.setWorkingGroupId(workingGroupId); - groupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); - } - lawsWorkingGroupUserService.saveBatch(all); - return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); - } + List all = new ArrayList<>(); + try { + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setHeadRows(1); + params.setNeedSave(true); + List list = ExcelImportUtil.importExcel(file.getInputStream(), LawsWorkingGroupUserImport.class, params); + if (CollectionUtils.isEmpty(list)) { + throw new JeroBootException(ResultCommon.IMPORT_DATA_CANNOT_BE_EMPTY); + } + for (LawsWorkingGroupUserImport lawsWorkingGroupUserImport : list) { + LawsWorkingGroupUser lawsWorkingGroupUser = new LawsWorkingGroupUser(); + lawsWorkingGroupUser.setUsername(lawsWorkingGroupUserImport.getUsername()); + lawsWorkingGroupUser.setRealname(lawsWorkingGroupUserImport.getRealname()); + all.add(lawsWorkingGroupUser); + } + } catch (Exception e) { + throw new JeroBootException(ResultCommon.ERROR); + } + //校验导入正确性,msg是错误信息 + String msg = importExcelCheck(all,workingGroupId); + if (StringUtils.isNotBlank(msg)) { + return Result.error(msg); + } + for (LawsWorkingGroupUser groupUser : all) { + String username = groupUser.getUsername(); + SysUser userByWorkNo = sysUserService.getUserByName(username); + groupUser.setUserId(userByWorkNo.getId()); + groupUser.setWorkingGroupId(workingGroupId); + groupUser.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + } + lawsWorkingGroupUserService.saveBatch(all); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } - /** - * 导出 - */ - @RequiresPermissions("sys:innerWorkingGroup:export") - @AutoLog(value = "内部工作组人员关联表-导出") - @ApiOperation(value="内部工作组人员关联表-导出", notes="内部工作组人员关联表-导出") - @GetMapping(value = "/export") - public Result template(@RequestParam(required = false) String workingGroupId, @RequestParam(required = false) String realname, @RequestParam(required = false) String username, @RequestParam(required = false) String userRoleName, @RequestParam(required = false) String userPostName, HttpServletRequest request, HttpServletResponse response) { - if (StringUtils.isBlank(workingGroupId)){ - throw new JeroBootException(ResultCommon.PLEASE_SELECT_A_WORKGROUP_TO_EXPORT); - } - String outFileName = "内部工作组人员表" + System.currentTimeMillis() + ".xlsx"; - String ENCODING = "UTF-8"; - ExcelWriter writer = ExcelUtil.getWriter(true); + /** + * 导出 + */ + @RequiresPermissions("sys:innerWorkingGroup:export") + @AutoLog(value = "内部工作组人员关联表-导出") + @ApiOperation(value = "内部工作组人员关联表-导出", notes = "内部工作组人员关联表-导出") + @GetMapping(value = "/export") + public ModelAndView template(@RequestParam(required = false) String workingGroupId, @RequestParam(required = false) String realname, @RequestParam(required = false) String username, @RequestParam(required = false) String userRoleName, @RequestParam(required = false) String userPostName, HttpServletRequest request, HttpServletResponse response) { + if (StringUtils.isBlank(workingGroupId)) { + throw new JeroBootException(ResultCommon.PLEASE_SELECT_A_WORKGROUP_TO_EXPORT); + } - // 通过工具类创建writer并且进行别名 - assembleWriter(writer); + //获取数据,分为三种情况:1、选中ID;2、没选ID且选了姓名、工号、角色、岗位四个筛选框;3、没选ID且没选四个筛选框 + List dos = null; + //获取选中数据 + String selections = request.getParameter("selections"); - //获取数据,分为三种情况:1、选中ID;2、没选ID且选了姓名、工号、角色、岗位四个筛选框;3、没选ID且没选四个筛选框 - List dos = null; - //获取选中数据 - String selections = request.getParameter("selections"); + if (StringUtils.isNotBlank(selections)) { + dos = this.queryDataByUserId(selections); + } + if (StringUtils.isBlank(selections) && !StringUtils.isAllBlank(realname, username, userRoleName, userPostName)) { + dos = this.queryDataByConditions(realname, username, userRoleName, userPostName, workingGroupId); + } + if (StringUtils.isBlank(selections) && StringUtils.isAllBlank(realname, username, userRoleName, userPostName)) { + dos = this.queryDataByTree(workingGroupId); + } + lawsWorkingGroupUserService.userAssignment(dos); - if (StringUtils.isNotBlank(selections)){ - dos = this.queryDataByUserId(selections); - } - if (StringUtils.isBlank(selections) && !StringUtils.isAllBlank(realname, username, userRoleName, userPostName)){ - dos = this.queryDataByConditions(realname, username, userRoleName, userPostName, workingGroupId); - } - if (StringUtils.isBlank(selections) && StringUtils.isAllBlank(realname, username, userRoleName, userPostName)){ - dos = this.queryDataByTree(workingGroupId); - } + // AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + String title = "内部工作组人员表"; + //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(FILE_NAME, title); + mv.addObject(CLASS, LawsWorkingGroupUser.class); + ExportParams exportParams = new ExportParams(null, title); + // 导出xlsx + exportParams.setType(ExcelType.XSSF); + mv.addObject(PARAMS, exportParams); + mv.addObject(NormalExcelConstants.DATA_LIST, dos); + return mv; + } - lawsWorkingGroupUserService.userAssignment(dos); - Collections.reverse(dos); - //导出表头只保留别名中的字段 - writer.setOnlyAlias(true); - //表格高度 - writer.setDefaultRowHeight(18); - //表格宽度 - writer.setColumnWidth(-1, 20); - //放入数据 - writer.write(dos, true); - try { - // 获取我们的输出流 - final OutputStream output = response.getOutputStream(); - response.setContentType("application/vnd.ms-excel;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + outFileName + ";filename*=utf-8" - + URLEncoder.encode(outFileName, ENCODING)); - writer.flush(output, true); - writer.close(); - // 这里可以自行关闭资源或者写一个关闭资源的工具类 - IoUtil.close(output); - } catch (Exception e) { - log.error("导出失败:", e); - } - return null; - } - private List queryDataByUserId(String userId) { - return lawsWorkingGroupUserService.listByIds(Arrays.asList(userId.split(","))); - } - private List queryDataByConditions(String userName, String userWorkNo, String userRoleName, String userPostName, String workingGroupId) { - List ids = lawsWorkingGroupUserService.lawsWorkingGroupUserSearch(userName, userWorkNo, userRoleName, userPostName); - List list = new ArrayList<>(); - if (!ids.isEmpty()) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, workingGroupId); - wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - wrapper.in(LawsWorkingGroupUser::getUserId, ids); - list = lawsWorkingGroupUserService.list(wrapper); - } - return list; - } - private List queryDataByTree(String workingGroupId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, workingGroupId); - wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - return lawsWorkingGroupUserService.list(wrapper); - } + private List queryDataByUserId(String userId) { + LambdaQueryWrapper queryLawsWorkingGroupUser = new LambdaQueryWrapper<>(); + queryLawsWorkingGroupUser.in(LawsWorkingGroupUser::getUserId,Arrays.asList(userId.split(","))); + queryLawsWorkingGroupUser.orderByDesc(LawsWorkingGroupUser::getCreateTime); + return lawsWorkingGroupUserService.list(queryLawsWorkingGroupUser); + } + private List queryDataByConditions(String userName, String userWorkNo, String userRoleName, String userPostName, String workingGroupId) { + List ids = lawsWorkingGroupUserService.lawsWorkingGroupUserSearch(userName, userWorkNo, userRoleName, userPostName); + List list = new ArrayList<>(); + if (!ids.isEmpty()) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, workingGroupId); + wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + wrapper.in(LawsWorkingGroupUser::getUserId, ids); + wrapper.orderByDesc(LawsWorkingGroupUser::getCreateTime); + list = lawsWorkingGroupUserService.list(wrapper); + } + return list; + } - /** - * 校验表头,同时映射对象字段 - */ - private boolean validateHeader(ExcelReader excelReader) { - List> read = excelReader.read(0, 1, 1); - Map map = read.get(0); - assembleReader(excelReader); - Map headerAlias = excelReader.getHeaderAlias(); - boolean isSameKeys = map.keySet().stream().allMatch(key -> headerAlias.containsKey(key)); - return isSameKeys; - } + private List queryDataByTree(String workingGroupId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroupUser::getWorkingGroupId, workingGroupId); + wrapper.eq(LawsWorkingGroupUser::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + wrapper.orderByDesc(LawsWorkingGroupUser::getCreateTime); + return lawsWorkingGroupUserService.list(wrapper); + } - /** - * 导入数据校验错误信息 - */ - public String importExcelCheck(List all) { - List errorMessages = validateWorkNo(all); - return String.join(";", errorMessages); - } - private List validateWorkNo(List all) { - List listUser = sysUserService.list(); - all.stream().forEach(p->{ - p.setUsername(""); - if(!CollectionUtils.isEmpty(listUser)){ - Optional op = listUser.stream().filter(o->Objects.equals(o.getUsername(),p.getUsername())).findFirst(); - if(op.isPresent()){ - p.setUsername(op.get().getId()); - } - } - }); - Set existingWorkNos = lawsWorkingGroupUserService.list().stream().map(LawsWorkingGroupUser::getUserId).collect(Collectors.toSet()); - return IntStream.range(0, all.size()) - .mapToObj(i -> { - LawsWorkingGroupUser lawsWorkingGroupUser = all.get(i); - String username = lawsWorkingGroupUser.getUsername(); - if (username == null || username.trim().isEmpty()) { - return MessageUtils.getMessage(ResultCommon.THE_JOB_NUMBER_CANNOT_BE_EMPTY_EXPORT,(i+1)); - } - if (!isValidWorkNo(username)) { - return MessageUtils.getMessage(ResultCommon.JOB_NUMBER_DOES_NOT_EXIST_EXPORT,(i+1)); - } - if (!existingWorkNos.add(username)) { - return MessageUtils.getMessage(ResultCommon.DUPLICATE_JOB_NUMBER_EXPORT,(i+1)); - } - return null; - }).filter(error -> error != null).collect(Collectors.toList()); - } - - /** - * 判断工号在用户表中是否存在 - */ - private boolean isValidWorkNo(String userWorkNo) { - SysUser sysUser = sysUserService.getUserByName(userWorkNo); - return sysUser != null; - } - - /** - * 下载模板 - */ - @AutoLog(value = "内部工作组人员关联表-下载模板") - @ApiOperation(value="内部工作组人员关联表-下载模板", notes="内部工作组人员关联表-下载模板") - @RequestMapping(value = "/download/template", method = RequestMethod.GET) - public void template(HttpServletResponse response) { - ExcelWriter writer = ExcelUtil.getWriter(true); - List headList = new ArrayList<>(); - headList.add("姓名"); - headList.add("工号"); - headList.add("角色"); - headList.add("岗位"); - //表格高度 - writer.setDefaultRowHeight(18); - //表格宽度 - writer.setColumnWidth(-1, 20); - try { - writer.writeHeadRow(headList).write(Collections.emptyList()); - //设置content—type - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8"); - //Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。 - response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("内部工作组人员表模板","UTF-8")+".xlsx"); - ServletOutputStream outputStream= response.getOutputStream(); - //将Writer刷新到OutPut - writer.flush(outputStream,true); - outputStream.close(); - writer.close(); - } catch (Exception e) { - log.error("下载模板失败:", e); - } - } - - //assembleWriter方法和assembleReader方法可以通过实体类加@Alias注解实现,这里为了避免导入导出数据不统一,使用硬编码实现 - private void assembleWriter(ExcelWriter writer) { - writer.addHeaderAlias("realname", "姓名"); - writer.addHeaderAlias("username", "工号"); - writer.addHeaderAlias("userRoleName", "角色"); - writer.addHeaderAlias("userPostName", "岗位"); - } - private void assembleReader(ExcelReader reader) { - reader.addHeaderAlias("姓名", "realname"); - reader.addHeaderAlias("工号", "username"); - reader.addHeaderAlias("角色", "userRoleName"); - reader.addHeaderAlias("岗位", "userPostName"); - } + /** + * 导入数据校验错误信息 + */ + public String importExcelCheck(List all,String workingGroupId) { + List errorMessages = validateWorkNo(all,workingGroupId); + return String.join(";", errorMessages); + } + private List validateWorkNo(List all,String workingGroupId) { + List listSysUser = sysUserService.list(); + LambdaQueryWrapper queryLawsWorkingGroupUser = new LambdaQueryWrapper<>(); + queryLawsWorkingGroupUser.eq(LawsWorkingGroupUser::getWorkingGroupId,workingGroupId); + Set existingWorkNos = lawsWorkingGroupUserService.list(queryLawsWorkingGroupUser).stream().map(LawsWorkingGroupUser::getUserId).collect(Collectors.toSet()); + return IntStream.range(0, all.size()) + .mapToObj(i -> { + LawsWorkingGroupUser lawsWorkingGroupUser = all.get(i); + String username = lawsWorkingGroupUser.getUsername(); + String realname = lawsWorkingGroupUser.getRealname(); + if (StringUtils.isBlank(username)) { + return MessageUtils.getMessage(ResultCommon.THE_JOB_NUMBER_CANNOT_BE_EMPTY_EXPORT, (i + 1)); + } + if (StringUtils.isBlank(realname)) { + return "第(" + (i + 1) + ")行,姓名不能为空"; + } + if(!CollectionUtils.isEmpty(listSysUser)){ + String finalUsername = username; + Optional op = listSysUser.stream().filter(o->Objects.equals(o.getUsername(), finalUsername)).findFirst(); + if(!op.isPresent()){ + return MessageUtils.getMessage(ResultCommon.JOB_NUMBER_DOES_NOT_EXIST_EXPORT, (i + 1)); + } + username = op.get().getId(); + if(!Objects.equals(op.get().getRealname(),realname)){ + return "第(" + (i + 1) + ")行,姓名与工号不匹配"; + } + } + if (!existingWorkNos.add(username)) { + return MessageUtils.getMessage(ResultCommon.DUPLICATE_JOB_NUMBER_EXPORT, (i + 1)); + } + return null; + }).filter(Objects::nonNull).collect(Collectors.toList()); + } + /** + * 下载模板 + */ + @AutoLog(value = "内部工作组人员关联表-下载模板") + @ApiOperation(value = "内部工作组人员关联表-下载模板", notes = "内部工作组人员关联表-下载模板") + @GetMapping(value = "/download/template") + public ModelAndView template() { + // AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + String title = "内部工作组人员表模板"; + //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(FILE_NAME, title); + mv.addObject(CLASS, LawsWorkingGroupUserImport.class); + ExportParams exportParams = new ExportParams(null, title); + // 导出xlsx + exportParams.setType(ExcelType.XSSF); + mv.addObject(PARAMS, exportParams); + mv.addObject(NormalExcelConstants.DATA_LIST, new ArrayList()); + return mv; + } } diff --git a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java index 421467d3..a395ec2a 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java @@ -4,10 +4,7 @@ import java.io.Serializable; import java.util.Date; import java.util.List; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; @@ -74,6 +71,7 @@ public class LawsWorkingGroup implements Serializable { /**删除状态(0-正常,1-删除)*/ @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic private String delFlag; diff --git a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUser.java b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUser.java index 4013329f..02b50ba2 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUser.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUser.java @@ -3,10 +3,7 @@ package com.jero.modules.sys.entity; import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.jeecgframework.poi.excel.annotation.Excel; @@ -70,25 +67,26 @@ public class LawsWorkingGroupUser implements Serializable { /**删除状态(0-正常,1-删除)*/ @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic private String delFlag; @TableField(exist = false) @ApiModelProperty(value = "姓名") - @Excel(name = "姓名") + @Excel(name = "姓名",width = 15) private String realname; @TableField(exist = false) @ApiModelProperty(value = "工号") - @Excel(name = "工号") + @Excel(name = "工号",width = 15) private String username; @TableField(exist = false) @ApiModelProperty(value = "角色") - @Excel(name = "角色") + @Excel(name = "角色",width = 15) private String userRoleName; @TableField(exist = false) @ApiModelProperty(value = "岗位") - @Excel(name = "岗位") + @Excel(name = "岗位",width = 15) private String userPostName; } diff --git a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUserImport.java b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUserImport.java new file mode 100644 index 00000000..efce602a --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroupUserImport.java @@ -0,0 +1,30 @@ +package com.jero.modules.sys.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + + +/** + * @Description: 内部工作组人员导入 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +@Data +public class LawsWorkingGroupUserImport implements Serializable { + private static final long serialVersionUID = 1L; + + @TableField(exist = false) + @ApiModelProperty(value = "姓名") + @Excel(name = "姓名",width = 15) + private String realname; + + @TableField(exist = false) + @ApiModelProperty(value = "工号") + @Excel(name = "工号",width = 15) + private String username; +}