From cdf767aeb18b796fea40c014112845830bf165b1 Mon Sep 17 00:00:00 2001 From: gaosong Date: Tue, 26 Jul 2022 17:47:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E5=A4=96=E6=8A=A5=E5=91=8A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=20=E6=96=87=E4=BB=B6=E5=A4=B9=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ExtRepoDataController.java | 207 ++++++++++++ .../controller/ExtRepoFolderController.java | 172 ++++++++++ .../modules/extRepo/entity/ERFTreeData.java | 127 ++++++++ .../modules/extRepo/entity/ExtRepoData.java | 81 +++++ .../modules/extRepo/entity/ExtRepoFolder.java | 96 ++++++ .../extRepo/mapper/ExtRepoDataMapper.java | 14 + .../extRepo/mapper/ExtRepoFolderMapper.java | 14 + .../extRepo/mapper/xml/ExtRepoDataMapper.xml | 16 + .../mapper/xml/ExtRepoFolderMapper.xml | 17 + .../extRepo/service/IExtRepoDataService.java | 62 ++++ .../service/IExtRepoFolderService.java | 77 +++++ .../service/impl/ExtRepoDataServiceImpl.java | 90 ++++++ .../impl/ExtRepoFolderServiceImpl.java | 298 ++++++++++++++++++ 13 files changed, 1271 insertions(+) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoData.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoFolder.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoDataMapper.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoFolderMapper.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoDataMapper.xml create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoFolderMapper.xml create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java new file mode 100644 index 000000000..167f4e812 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java @@ -0,0 +1,207 @@ +package com.jero.modules.extRepo.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.extRepo.entity.ExtRepoData; +import com.jero.modules.extRepo.service.IExtRepoDataService; +import com.jero.modules.extRepo.service.IExtRepoFolderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + + +/** + * @Description: 对外报告数据表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Api(tags = "对外报告数据表") +@RestController +@RequestMapping("/com.jero.modules.extRepo/extRepoData") +@Slf4j +public class ExtRepoDataController extends JeroController { + @Autowired + private IExtRepoDataService extRepoDataService; + + @Autowired + private IExtRepoFolderService extRepoFolderService; + + /** + * 分页列表查询 + * + * @param extRepoData + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "对外报告数据表-分页列表查询") + @ApiOperation(value = "对外报告数据表-分页列表查询", notes = "对外报告数据表-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(ExtRepoData extRepoData, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(extRepoData, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + // 文件名称模糊查询 + String fileName = req.getParameter("fileName"); + if (StringUtils.isNotBlank(fileName)) { + queryWrapper.like("fileName", fileName); + } + + // 创建人模糊查询 + String createBy = req.getParameter("createBy"); + if (StringUtils.isNotBlank(fileName)) { + queryWrapper.like("createBy", createBy); + } + IPage pageList = extRepoDataService.page(page, queryWrapper); + log.info("查询当前页:" + pageList.getCurrent()); + log.info("查询当前页数量:" + pageList.getSize()); + log.info("查询结果数量:" + pageList.getRecords().size()); + log.info("数据总数:" + pageList.getTotal()); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @return + */ + @AutoLog(value = "对外报告数据表-列表查询") + @ApiOperation(value = "对外报告数据表-列表查询", notes = "对外报告数据表-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = extRepoDataService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + * + * @param extRepoData + * @return + */ + @AutoLog(value = "对外报告数据表-添加") + @ApiOperation(value = "对外报告数据表-添加", notes = "对外报告数据表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ExtRepoData extRepoData) { + if (extRepoFolderService.haveManageAuth(extRepoData.getSupFolder())) { + extRepoDataService.add(extRepoData); + return Result.OK("添加成功!"); + } else { + return Result.error("没有权限!"); + } + } + + /** + * 编辑 + * + * @param extRepoData + * @return + */ + @AutoLog(value = "对外报告数据表-编辑") + @ApiOperation(value = "对外报告数据表-编辑", notes = "对外报告数据表-编辑") + @PutMapping(value = "/edit") + public Result edit(@Validated @RequestBody ExtRepoData extRepoData) { + if (extRepoFolderService.haveManageAuth(extRepoData.getSupFolder())) { + extRepoDataService.editById(extRepoData); + return Result.OK("编辑成功!"); + } else { + return Result.error("没有权限!"); + } + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "对外报告数据表-通过id删除") + @ApiOperation(value = "对外报告数据表-通过id删除", notes = "对外报告数据表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + ExtRepoData erd = extRepoDataService.queryById(id); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (extRepoFolderService.haveManageAuth(erd.getSupFolder()) && erd.getCreateBy().equals(sysUser.getUsername())) { + extRepoDataService.deleteById(id); + return Result.OK("删除成功!"); + } else { + return Result.error("没有权限!"); + } + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "对外报告数据表-批量删除") + @ApiOperation(value = "对外报告数据表-批量删除", notes = "对外报告数据表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.extRepoDataService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "对外报告数据表-通过id查询") + @ApiOperation(value = "对外报告数据表-通过id查询", notes = "对外报告数据表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + ExtRepoData extRepoData = extRepoDataService.queryById(id); + if (extRepoData == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(extRepoData); + } + + /** + * 导出excel + * + * @param request + * @param extRepoData + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ExtRepoData extRepoData) { + return super.exportXls(request, extRepoData, ExtRepoData.class, "对外报告数据表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ExtRepoData.class); + } + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java new file mode 100644 index 000000000..d4b2107d4 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java @@ -0,0 +1,172 @@ +package com.jero.modules.extRepo.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.extRepo.entity.ERFTreeData; +import com.jero.modules.extRepo.entity.ExtRepoFolder; +import com.jero.modules.extRepo.service.IExtRepoFolderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + + + /** + * @Description: 对外报告文件夹表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Api(tags="对外报告文件夹表") +@RestController +@RequestMapping("/extRepo/extRepoFolder") +@Slf4j +public class ExtRepoFolderController extends JeroController { + @Autowired + private IExtRepoFolderService extRepoFolderService; + + /** + * 分页列表查询 + * + * @param extRepoFolder + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "对外报告文件夹表-分页列表查询") + @ApiOperation(value="对外报告文件夹表-分页列表查询", notes="对外报告文件夹表-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(ExtRepoFolder extRepoFolder, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(extRepoFolder, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = extRepoFolderService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @return + */ + @AutoLog(value = "对外报告文件夹表-列表查询") + @ApiOperation(value="对外报告文件夹表-列表查询", notes="对外报告文件夹表-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = extRepoFolderService.queryTreeList(); + return Result.OK(list); + } + + /** + * 添加 + * + * @param extRepoFolder + * @return + */ + @AutoLog(value = "对外报告文件夹表-添加") + @ApiOperation(value="对外报告文件夹表-添加", notes="对外报告文件夹表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ExtRepoFolder extRepoFolder) { + extRepoFolderService.add(extRepoFolder); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param extRepoFolder + * @return + */ + @AutoLog(value = "对外报告文件夹表-编辑") + @ApiOperation(value="对外报告文件夹表-编辑", notes="对外报告文件夹表-编辑") + @PutMapping(value = "/edit") + public Result edit(@Validated @RequestBody ExtRepoFolder extRepoFolder) { + extRepoFolderService.editById(extRepoFolder); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "对外报告文件夹表-通过id删除") + @ApiOperation(value="对外报告文件夹表-通过id删除", notes="对外报告文件夹表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + extRepoFolderService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "对外报告文件夹表-批量删除") + @ApiOperation(value="对外报告文件夹表-批量删除", notes="对外报告文件夹表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.extRepoFolderService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "对外报告文件夹表-通过id查询") + @ApiOperation(value="对外报告文件夹表-通过id查询", notes="对外报告文件夹表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + ExtRepoFolder extRepoFolder = extRepoFolderService.queryById(id); + if(extRepoFolder==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(extRepoFolder); + } + + /** + * 导出excel + * + * @param request + * @param extRepoFolder + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ExtRepoFolder extRepoFolder) { + return super.exportXls(request, extRepoFolder, ExtRepoFolder.class, "对外报告文件夹表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ExtRepoFolder.class); + } + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java new file mode 100644 index 000000000..4c6553b2d --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java @@ -0,0 +1,127 @@ +package com.jero.modules.extRepo.entity; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * 对外报告文件夹 树结构实体类 + */ +public class ERFTreeData implements Comparable { + + private static final long serialVersionUID = 1L; + + /** + * 页面显示的名称 对应 folder_name + */ + private String title; + + /** + * 文件夹ID 对应 id + */ + private String key; + + /** + * 层级,设定最多4级 + */ + private int level; + + + /** + * 排序 + */ + private int orderId; + + + /** + * 是否显示 + */ + private boolean display = false; + + /** + * 子文件夹 + */ + private List children = new ArrayList(); + + public ERFTreeData() { + } + + public ERFTreeData(String title, String key, int level,int orderId) { + this.title = title; + this.key = key; + this.level = level; + this.orderId = orderId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderId() { + return orderId; + } + + public void setOrderId(int orderId) { + this.orderId = orderId; + } + + public boolean isDisplay() { + return display; + } + + public void setDisplay(boolean display) { + this.display = display; + } + + @Override + public String toString() { + return "ERFTreeData{" + + "title='" + title + '\'' + + ", key='" + key + '\'' + + ", level=" + level + + ", orderId=" + orderId + + ", display=" + display + + ", children=" + children + + '}'; + } + + public void sortChildren() { + Collections.sort(children); + } + + + @Override + public int compareTo(@NotNull ERFTreeData o) { + return this.orderId - o.orderId; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoData.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoData.java new file mode 100644 index 000000000..60b13fee3 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoData.java @@ -0,0 +1,81 @@ +package com.jero.modules.extRepo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + + +/** + * @Description: 对外报告数据表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Data +@TableName("ext_repo_data") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ext_repo_data对象", description="对外报告数据表") +public class ExtRepoData implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**文件标识*/ + @Excel(name = "文件标识", width = 15) + @ApiModelProperty(value = "文件标识") + private java.lang.String fileKey; + + /**文件名称*/ + @Excel(name = "文件名称", width = 15) + @ApiModelProperty(value = "文件名称") + private java.lang.String fileName; + + /**文件说明*/ + @Excel(name = "文件说明", width = 15) + @ApiModelProperty(value = "文件说明") + private java.lang.String fileDescription; + + /**所属文件夹*/ + @Excel(name = "所属文件夹", width = 15) + @ApiModelProperty(value = "所属文件夹") + private java.lang.String supFolder; + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoFolder.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoFolder.java new file mode 100644 index 000000000..44c91e902 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ExtRepoFolder.java @@ -0,0 +1,96 @@ +package com.jero.modules.extRepo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.List; + + +/** + * @Description: 对外报告文件夹表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Data +@TableName("ext_repo_folder") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ext_repo_folder对象", description="对外报告文件夹表") +public class ExtRepoFolder implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**文件夹名称*/ + @Excel(name = "文件夹名称", width = 15) + @ApiModelProperty(value = "文件夹名称") + private java.lang.String folderName; + + /**文件夹排序*/ + @Excel(name = "文件夹排序", width = 15) + @ApiModelProperty(value = "文件夹排序") + private java.lang.Integer orderId; + + /**所属文件夹*/ + @Excel(name = "所属文件夹", width = 15) + @ApiModelProperty(value = "所属文件夹") + private java.lang.String supFolder; + + /**查看权限人员*/ + @Excel(name = "查看权限人员", width = 15) + @ApiModelProperty(value = "查看权限人员") + private java.lang.String authView; + + /**管理权限人员*/ + @Excel(name = "管理权限人员", width = 15) + @ApiModelProperty(value = "管理权限人员") + private java.lang.String authManage; + + public List getAuthManageList(){ + return Arrays.asList(authManage.split(",")); + } + + public List getAuthViewList(){ + return Arrays.asList(authView.split(",")); + } + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoDataMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoDataMapper.java new file mode 100644 index 000000000..d422b82fc --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoDataMapper.java @@ -0,0 +1,14 @@ +package com.jero.modules.extRepo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.extRepo.entity.ExtRepoData; + +/** + * @Description: 对外报告数据表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +public interface ExtRepoDataMapper extends BaseMapper { + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoFolderMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoFolderMapper.java new file mode 100644 index 000000000..0db47bb53 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/ExtRepoFolderMapper.java @@ -0,0 +1,14 @@ +package com.jero.modules.extRepo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.extRepo.entity.ExtRepoFolder; + +/** + * @Description: 对外报告文件夹表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +public interface ExtRepoFolderMapper extends BaseMapper { + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoDataMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoDataMapper.xml new file mode 100644 index 000000000..e80da742d --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoDataMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoFolderMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoFolderMapper.xml new file mode 100644 index 000000000..57568b5fd --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/mapper/xml/ExtRepoFolderMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java new file mode 100644 index 000000000..bc9bfb91a --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java @@ -0,0 +1,62 @@ +package com.jero.modules.extRepo.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.extRepo.entity.ExtRepoData; + +import java.util.List; + +/** + * @Description: 对外报告数据表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +public interface IExtRepoDataService extends IService { + + /** + * 保存 + * + * @param extRepoData + * @return + */ + void add(ExtRepoData extRepoData); + + /** + * 更新 + * + * @param extRepoData + * @return + */ + void editById(ExtRepoData extRepoData); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ExtRepoData queryById(String id); + + /** + * 列表查询 + * + * @return + */ + List queryList(); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java new file mode 100644 index 000000000..eaf819340 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java @@ -0,0 +1,77 @@ +package com.jero.modules.extRepo.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.extRepo.entity.ERFTreeData; +import com.jero.modules.extRepo.entity.ExtRepoFolder; + +import java.util.List; + +/** + * @Description: 对外报告文件夹表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +public interface IExtRepoFolderService extends IService { + + /** + * 保存 + * + * @param extRepoFolder + * @return + */ + void add(ExtRepoFolder extRepoFolder); + + /** + * 更新 + * + * @param extRepoFolder + * @return + */ + void editById(ExtRepoFolder extRepoFolder); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ExtRepoFolder queryById(String id); + + /** + * 列表查询 + * + * @return + */ + List queryList(); + + /** + * 查询返回树结构 + * @return + */ + List queryTreeList(); + + + /** + * 是否有管理权限 + * @param folderId + * @return + */ + boolean haveManageAuth(String folderId); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java new file mode 100644 index 000000000..72f4f50c9 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java @@ -0,0 +1,90 @@ +package com.jero.modules.extRepo.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.extRepo.entity.ExtRepoData; +import com.jero.modules.extRepo.mapper.ExtRepoDataMapper; +import com.jero.modules.extRepo.service.IExtRepoDataService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @Description: 对外报告数据表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Service +public class ExtRepoDataServiceImpl extends ServiceImpl implements IExtRepoDataService { + + /** + * 保存 + * + * @param extRepoData + * @return + */ + @Override + public void add(ExtRepoData extRepoData) { + Date now = new Date(); + extRepoData.setCreateTime(now); + extRepoData.setUpdateTime(now); + save(extRepoData); + } + + /** + * 更新 + * + * @param extRepoData + * @return + */ + @Override + public void editById(ExtRepoData extRepoData) { + Date now = new Date(); + extRepoData.setUpdateTime(now); + saveOrUpdate(extRepoData); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public ExtRepoData queryById(String id) { + return getById(id); + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryList() { + return list(); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java new file mode 100644 index 000000000..efa5974c4 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java @@ -0,0 +1,298 @@ +package com.jero.modules.extRepo.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.extRepo.entity.ERFTreeData; +import com.jero.modules.extRepo.entity.ExtRepoFolder; +import com.jero.modules.extRepo.mapper.ExtRepoFolderMapper; +import com.jero.modules.extRepo.service.IExtRepoFolderService; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * @Description: 对外报告文件夹表 + * @Author: jero-boot + * @Date: 2022-07-25 + * @Version: V1.0 + */ +@Service +public class ExtRepoFolderServiceImpl extends ServiceImpl implements IExtRepoFolderService { + + /** + * 一级文件夹的supFolder统一存root + */ + private static String superFolder = "root"; + + /** + * 保存 + * + * @param extRepoFolder + * @return + */ + @Override + public void add(ExtRepoFolder extRepoFolder) { + try { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + //创建文件夹的时候把创建人加入管理权限 + extRepoFolder.setAuthManage(extRepoFolder.getAuthManage() + "," + sysUser.getUsername()); + if (StringUtils.isEmpty(extRepoFolder.getSupFolder())) { + //一级文件夹的supFolder统一存root,方便以后查找 + extRepoFolder.setSupFolder(superFolder); + } + Date now = new Date(); + extRepoFolder.setCreateTime(now); + extRepoFolder.setUpdateTime(now); + save(extRepoFolder); + editOrderId(extRepoFolder); + } catch (Exception ex) { + log.error("添加对外报告文件夹失败:" + ex.getMessage()); + throw new JeroBootException("添加文件夹失败!"); + } + } + + /** + * 同级文件夹,修改顺序号 + * + * @param extRepoFolder + */ + private void editOrderId(ExtRepoFolder extRepoFolder) throws Exception { + List list = getListBySupFolder(extRepoFolder.getSupFolder()); + for (ExtRepoFolder erf : list) { + if (erf.getOrderId() >= extRepoFolder.getOrderId() && !erf.getId().equals(extRepoFolder.getId())) { + erf.setOrderId(erf.getOrderId() + 1); + updateById(erf); + } + } + } + + private List getListBySupFolder(String supFolder){ + ExtRepoFolder erf = new ExtRepoFolder(); + erf.setSupFolder(supFolder); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(erf, new HashMap<>()); + return this.list(queryWrapper); + } + + /** + * 更新 + * + * @param extRepoFolder + * @return + */ + @Override + public void editById(ExtRepoFolder extRepoFolder) { + try { + //原有的记录 + ExtRepoFolder erf_orig = queryById(extRepoFolder.getId()); + Date now = new Date(); + extRepoFolder.setUpdateTime(now); + saveOrUpdate(extRepoFolder); + editOrderId(extRepoFolder); + editAuth(erf_orig, extRepoFolder); + } catch (Exception ex) { + log.error("修改对外报告文件夹失败:" + ex.getMessage()); + throw new JeroBootException("修改文件夹失败!"); + } + } + + /** + * 修改所有关联文件夹的权限 + */ + private void editAuth(ExtRepoFolder erf_orig, ExtRepoFolder erf_new) throws Exception { + List authManage_orig = erf_orig.getAuthManageList(); + List authManage_new = erf_new.getAuthManageList(); + //增加管理权限的人 + List addManageRole = getDefList(authManage_new, authManage_orig); + //删除管理权限的人 + List delManageRole = getDefList(authManage_orig, authManage_new); + + List authView_orig = erf_orig.getAuthViewList(); + List authView_new = erf_new.getAuthViewList(); + //增加查看权限的人 + List addViewRole = getDefList(authView_new, authView_orig); + //删除查看权限的人 + List delViewRole = getDefList(authView_orig, authView_new); + + List allSubFolder = getAllSubFolder(erf_orig.getId()); + //存储变化的对象 + List updateFolder = new ArrayList(); + for (ExtRepoFolder erf : allSubFolder) { + boolean isChange = false; + List authManage_erf = erf.getAuthManageList(); + List authView_erf = erf.getAuthViewList(); + for (String add : addManageRole) { + if (!authManage_erf.contains(add)) { + authManage_erf.add(add); + isChange = true; + } + } + for (String del : delManageRole) { + if (authManage_erf.contains(del)) { + authManage_erf.remove(del); + isChange = true; + } + } + for (String add : addViewRole) { + if (!authView_erf.contains(add)) { + authView_erf.add(add); + isChange = true; + } + } + for (String del : delViewRole) { + if (authView_erf.contains(del)) { + authView_erf.remove(del); + isChange = true; + } + } + erf.setAuthManage(StringUtils.join(authManage_erf, ",")); + erf.setAuthView(StringUtils.join(authView_erf, ",")); + if (isChange) { + updateFolder.add(erf); + } + } + if (updateFolder.size() > 0) { + updateBatchById(updateFolder); + } + } + + /** + * 得到列表新增元素集合 + * + * @param listA + * @param listB + * @return + */ + private List getDefList(List listA, List listB) { + List res = new ArrayList(); + for (String s : listA) { + if (StringUtils.isNotBlank(s) && !listB.contains(s)) { + res.add(s); + } + } + return res; + } + + private List getAllSubFolder(String folderId) { + List resList = getListBySupFolder(folderId); + List subList = new ArrayList(); + for (ExtRepoFolder erf : resList) { + subList.addAll(getAllSubFolder(erf.getId())); + } + resList.addAll(subList); + return resList; + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + try { + List resList = getListBySupFolder(id); + if (resList.isEmpty()) { + removeById(id); + } + } catch (Exception ex) { + log.error("删除对外报告文件夹失败:" + ex.getMessage()); + throw new JeroBootException("删除文件夹失败!"); + } + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public ExtRepoFolder queryById(String id) { + return getById(id); + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryList() { + return list(); + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryTreeList() { + try { + List list = queryList(); + List res = getSubFolder(superFolder, list, 1); + Collections.sort(res); + return res; + } catch (Exception ex) { + log.error("查询对外报告文件夹失败:" + ex.getMessage()); + throw new JeroBootException("查询文件夹失败!"); + } + } + + + /** + * 查找子文件夹,生成树结构 + * + * @param supId + * @param list + * @param level 前端需要知道当前文件夹在哪一层 + * @return + */ + private List getSubFolder(String supId, List list, int level) throws Exception { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List resList = new ArrayList(); + for (ExtRepoFolder erf : list) { + if (supId.equals(erf.getSupFolder())) { + ERFTreeData date = new ERFTreeData(erf.getFolderName(), erf.getId(), level, erf.getOrderId()); + //检查有没有权限查看 + date.setDisplay(erf.getAuthManageList().contains(sysUser.getUsername()) || erf.getAuthViewList().contains(sysUser.getUsername())); + int childLevel = date.getLevel() + 1; + date.setChildren(getSubFolder(erf.getId(), list, childLevel)); + date.sortChildren(); + resList.add(date); + } + } + return resList; + } + + /** + * 是否有管理权限 + * @param folderId + * @return + */ + @Override + public boolean haveManageAuth(String folderId) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + ExtRepoFolder erf = queryById(folderId); + return erf.getAuthManageList().contains(sysUser.getUsername()); + } + + +}