diff --git a/pom.xml b/pom.xml index 936fd8e..68e5f74 100644 --- a/pom.xml +++ b/pom.xml @@ -3,14 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - + com.rzdata tool-tech 3.8.8 tool-tech 工具与技术交流管理系统 - + 3.8.8 UTF-8 @@ -285,4 +285,4 @@ - \ No newline at end of file + diff --git a/tool-tech-admin/pom.xml b/tool-tech-admin/pom.xml index 8d2e4f2..3b63802 100644 --- a/tool-tech-admin/pom.xml +++ b/tool-tech-admin/pom.xml @@ -16,7 +16,26 @@ - + + com.google.guava + guava + 21.0 + + + com.squareup.okhttp3 + okhttp + 4.9.2 + + + com.alibaba + fastjson + 1.2.76 + + + com.blueland.bpmclient + workflow-sdk + 0.1.5 + com.rzdata @@ -66,6 +85,18 @@ lombok + + + com.documents4j + documents4j-local + 1.0.3 + + + com.documents4j + documents4j-transformer-msoffice-word + 1.0.3 + + @@ -85,17 +116,17 @@ - - org.apache.maven.plugins - maven-war-plugin - 3.1.0 + + org.apache.maven.plugins + maven-war-plugin + 3.1.0 false ${project.artifactId} - - + + ${project.artifactId} - \ No newline at end of file + diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 8d840cb..4cf0343 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -1,18 +1,5 @@ package com.rzdata.web.controller.common; -import java.util.ArrayList; -import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; import com.rzdata.common.config.JaConfig; import com.rzdata.common.constant.Constants; import com.rzdata.common.core.domain.AjaxResult; @@ -20,6 +7,27 @@ import com.rzdata.common.utils.StringUtils; import com.rzdata.common.utils.file.FileUploadUtils; import com.rzdata.common.utils.file.FileUtils; import com.rzdata.framework.config.ServerConfig; +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.domain.FileOperationRequest; +import com.rzdata.web.service.IAttachmentService; +import com.rzdata.web.service.impl.AttachmentServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.util.*; /** * 通用请求处理 @@ -34,9 +42,13 @@ public class CommonController @Autowired private ServerConfig serverConfig; + @Autowired + private IAttachmentService attachmentService; + private static final String FILE_DELIMETER = ","; + /** * 通用下载请求 * @@ -84,7 +96,8 @@ public class CommonController String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); - ajax.put("fileName", fileName); + ajax.put("filePath", fileName); + ajax.put("suffixType", FileUploadUtils.extractSuffix(fileName)); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; @@ -160,4 +173,97 @@ public class CommonController log.error("下载文件失败", e); } } + + + + /** + * 预览下载 + * txt、pdf、word(doc、docx格式) + */ + @PostMapping("/preview/download") + public ResponseEntity resourceDownload(@RequestBody Attachment attachment) + { + byte[] bytes = attachmentService.loadFileAsBytes(attachment); + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/octet-stream")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + attachment.getFileOldName() + "\"") + .body(bytes); + } + + @PostMapping("/initUpload") + public ResponseEntity> initUpload(@RequestParam("fileName") String fileName) { + // 上传文件路径 + String filePath = JaConfig.getUploadPath(); + String uploadId = UUID.randomUUID().toString(); + // 创建临时目录用于存放分片文件 + new File(filePath + "/" + uploadId).mkdirs(); + Map response = new HashMap<>(); + response.put("uploadId", uploadId); + return ResponseEntity.ok(response); + } + + @PostMapping("/uploadChunk") + public ResponseEntity> uploadChunk( + @RequestParam("chunkFile") MultipartFile chunkFile, + @RequestParam("uploadId") String uploadId, + @RequestParam("chunkId") int chunkId) { + String filePath = JaConfig.getUploadPath(); + String chunkFilePath = filePath + "/" + uploadId + "/" + chunkId; + try { + chunkFile.transferTo(new File(chunkFilePath)); + Map response = new HashMap<>(); + response.put("status", "200"); + return ResponseEntity.ok(response); + } catch (IOException e) { + log.error("CommonController-->uploadChunk----e###", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + @PostMapping("/mergeFile") + public ResponseEntity> mergeFile(@RequestParam("uploadId") String uploadId, + @RequestParam("fileName") String fileName) { + String filePath = JaConfig.getUploadPath(); + //String finalFilePath = FileUploadUtils.generateMergedFilePath(filePath, fileName); + String fileNamePath = FileUploadUtils.getFilePath(filePath, fileName); + String finalFilePath = filePath + fileNamePath.replace("profile/upload/", "") ; + File dir = new File(filePath + "/" + uploadId); + File[] chunkFiles = dir.listFiles(); + + + File desc = new File(finalFilePath); + if (!desc.exists()) + { + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } + } + + // 按文件名(即chunkId)排序 + Arrays.sort(chunkFiles, Comparator.comparingInt(f -> Integer.parseInt(f.getName()))); + + try (FileOutputStream fos = new FileOutputStream(finalFilePath)) { + for (File chunk : chunkFiles) { + Files.copy(chunk.toPath(), fos); + } + + Map response = new HashMap<>(); + String url = serverConfig.getUrl() + fileNamePath; + response.put("url", url); + response.put("filePath", fileNamePath); + response.put("suffixType", FileUploadUtils.extractSuffix(fileNamePath)); + response.put("newFileName", FileUtils.getName(fileNamePath)); + response.put("originalFilename", fileName); + return ResponseEntity.ok(response); + } catch (IOException e) { + log.error("CommonController-->uploadChunk----e###", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } finally { + // 清理临时文件 + Arrays.stream(chunkFiles).forEach(File::delete); + dir.delete(); + } + } + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java new file mode 100644 index 0000000..2d34d88 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java @@ -0,0 +1,115 @@ +package com.rzdata.web.controller.document; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.common.core.domain.DocumentCategory; +import com.rzdata.web.service.IDocumentCategoryService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 文档资源分类管理Controller + * + * @author spongepan + * @date 2024-08-27 + */ +@RestController +@RequestMapping("/system/category") +public class DocumentCategoryController extends BaseController +{ + @Autowired + private IDocumentCategoryService documentCategoryService; + + /** + * 查询文档资源分类管理列表 + */ + //@PreAuthorize("@ss.hasPermi('system:category:list')") + @GetMapping("/list") + public TableDataInfo list(DocumentCategory documentCategory) + { + startPage(); + List list = documentCategoryService.selectDocumentCategoryList(documentCategory); + return getDataTable(list); + } + + /** + * 导出文档资源分类管理列表 + */ + //@PreAuthorize("@ss.hasPermi('system:category:export')") + @Log(title = "文档资源分类管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DocumentCategory documentCategory) + { + List list = documentCategoryService.selectDocumentCategoryList(documentCategory); + ExcelUtil util = new ExcelUtil(DocumentCategory.class); + util.exportExcel(response, list, "文档资源分类管理数据"); + } + + /** + * 获取文档资源分类管理详细信息 + */ + //@PreAuthorize("@ss.hasPermi('system:category:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(documentCategoryService.selectDocumentCategoryById(id)); + } + + /** + * 新增文档资源分类管理 + */ + //@PreAuthorize("@ss.hasPermi('system:category:add')") + @Log(title = "文档资源分类管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DocumentCategory documentCategory) + { + return toAjax(documentCategoryService.insertDocumentCategory(documentCategory)); + } + + /** + * 修改文档资源分类管理 + */ + //@PreAuthorize("@ss.hasPermi('system:category:edit')") + @Log(title = "文档资源分类管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DocumentCategory documentCategory) + { + return toAjax(documentCategoryService.updateDocumentCategory(documentCategory)); + } + + /** + * 删除文档资源分类管理 + */ + //@PreAuthorize("@ss.hasPermi('system:category:remove')") + @Log(title = "文档资源分类管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(documentCategoryService.deleteDocumentCategoryByIds(ids)); + } + + + /** + * 获取文档分类树列表 + */ + @GetMapping("/documentTree") + public AjaxResult deptTree(DocumentCategory documentCategory) + { + return success(documentCategoryService.selectDocumentTreeList(documentCategory)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java index 789ed60..8986f4d 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java @@ -32,6 +32,7 @@ public class DocumentController extends BaseController /** * 查询【文档资源信息】列表 */ + @PreAuthorize("@ss.hasPermi('document:list')") @GetMapping("/list") public TableDataInfo list(Document Document) { @@ -44,12 +45,13 @@ public class DocumentController extends BaseController * 导出【文档资源信息】列表 */ @Log(title = "【文档资源信息】", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('document:list')") @PostMapping("/export") - public void export(HttpServletResponse response, Document Document) + public void export(HttpServletResponse response, Document document) { - List list = documentService.selectDocumentList(Document); + List list = documentService.selectDocumentList(document); ExcelUtil util = new ExcelUtil(Document.class); - util.exportExcel(response, list, "【文档资源信息】数据"); + util.exportExcel(response, list, "【文档资源信息】数据", document.getExcludeFields()); } /** @@ -65,6 +67,7 @@ public class DocumentController extends BaseController * 新增【文档资源信息】 */ @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT) + @PreAuthorize("@ss.hasPermi('document:add')") @PostMapping public AjaxResult add(@RequestBody Document Document) { @@ -79,6 +82,7 @@ public class DocumentController extends BaseController * 修改【文档资源信息】 */ @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) + @PreAuthorize("@ss.hasPermi('document:edit')") @PutMapping public AjaxResult edit(@RequestBody Document Document) { @@ -88,10 +92,40 @@ public class DocumentController extends BaseController /** * 删除【文档资源信息】 */ - @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) + @Log(title = "【逻辑删除-文档资源信息】", businessType = BusinessType.DELETE) + @PreAuthorize("@ss.hasPermi('document:remove')") @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(documentService.deleteDocumentByIds(ids)); } + + /** + * 发布文档 + */ + @Log(title = "【发布逻辑】", businessType = BusinessType.UPDATE) + @PreAuthorize("@ss.hasPermi('document:push')") + @PutMapping("/pushDoc/{ids}") + public AjaxResult pushDoc(@PathVariable String[] ids) + { + return toAjax(documentService.pushDoc(ids)); + } + + + /** + * 文档统计,涉及文档类别统计、文档来源统计 + */ + @GetMapping("/statistics") + public AjaxResult statistics() + { + return AjaxResult.success(documentService.statistics()); + } + + + @PostMapping("/export/word/list") + public AjaxResult exportWordList(Document Document) + { + List list = documentService.selectAllList(Document); + return AjaxResult.success(list); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java index c3f989d..091382a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java @@ -43,6 +43,15 @@ public class SysDictTypeController extends BaseController return getDataTable(list); } + + @GetMapping("/bizlist") + public TableDataInfo bizlist(SysDictType dictType) + { + startPage(); + List list = dictTypeService.selectBizDictTypeList(dictType); + return getDataTable(list); + } + @Log(title = "字典类型", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:dict:export')") @PostMapping("/export") diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java index 5993734..5992991 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java @@ -2,6 +2,9 @@ package com.rzdata.web.controller.system; import java.util.List; import java.util.Set; + +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.service.ITzMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -34,6 +37,10 @@ public class SysLoginController @Autowired private SysPermissionService permissionService; + /** 消息中心 **/ + @Autowired + private ITzMessageService tzMessageService; + /** * 登录方法 * @@ -64,9 +71,14 @@ public class SysLoginController Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + + /** 未读消息 **/ + int unMsgNumber = tzMessageService.selectTzMessageByUserCount(String.valueOf(user.getUserId())); + AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); + ajax.put("unMsgNumber", unMsgNumber); ajax.put("permissions", permissions); return ajax; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysUserController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysUserController.java index 3a3c737..70ce37c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysUserController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysUserController.java @@ -55,7 +55,6 @@ public class SysUserController extends BaseController /** * 获取用户列表 */ - @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") public TableDataInfo list(SysUser user) { @@ -246,7 +245,7 @@ public class SysUserController extends BaseController /** * 获取部门树列表 */ - @PreAuthorize("@ss.hasPermi('system:user:list')") + //@PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/deptTree") public AjaxResult deptTree(SysDept dept) { diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java new file mode 100644 index 0000000..1dab487 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java @@ -0,0 +1,99 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.service.IAttachmentService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 附件Controller + * + * @author panchichun + * @date 2024-08-28 + */ +@RestController +@RequestMapping("/system/attachment") +public class AttachmentController extends BaseController +{ + @Autowired + private IAttachmentService attachmentService; + + /** + * 查询附件列表 + */ + @GetMapping("/list") + public TableDataInfo list(Attachment attachment) + { + startPage(); + List list = attachmentService.selectAttachmentList(attachment); + return getDataTable(list); + } + + /** + * 导出附件列表 + */ + @Log(title = "附件", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Attachment attachment) + { + List list = attachmentService.selectAttachmentList(attachment); + ExcelUtil util = new ExcelUtil(Attachment.class); + util.exportExcel(response, list, "附件数据"); + } + + /** + * 获取附件详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(attachmentService.selectAttachmentById(id)); + } + + /** + * 新增附件 + */ + @Log(title = "附件", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Attachment attachment) + { + return toAjax(attachmentService.insertAttachment(attachment)); + } + + /** + * 修改附件 + */ + @Log(title = "附件", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Attachment attachment) + { + return toAjax(attachmentService.updateAttachment(attachment)); + } + + /** + * 删除附件 + */ + @Log(title = "附件", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(attachmentService.deleteAttachmentByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DiscussionsController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DiscussionsController.java new file mode 100644 index 0000000..f82f0e1 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DiscussionsController.java @@ -0,0 +1,102 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.web.domain.Discussions; +import com.rzdata.web.service.IDiscussionsService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 讨论Controller + * + * @author panchichun + * @date 2024-08-30 + */ +@RestController +@RequestMapping("/discussions") +public class DiscussionsController extends BaseController +{ + @Autowired + private IDiscussionsService discussionsService; + + /** + * 查询讨论列表 + */ + @GetMapping("/list") + public TableDataInfo list(Discussions discussions) + { + List list = discussionsService.selectDiscussionsList(discussions); + return getDataTable(list); + } + + /** + * 导出讨论列表 + */ + @PreAuthorize("@ss.hasPermi('system:discussions:export')") + @Log(title = "讨论", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Discussions discussions) + { + List list = discussionsService.selectDiscussionsList(discussions); + ExcelUtil util = new ExcelUtil(Discussions.class); + util.exportExcel(response, list, "讨论数据"); + } + + /** + * 获取讨论详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:discussions:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(discussionsService.selectDiscussionsById(id)); + } + + /** + * 新增讨论 + */ + @Log(title = "讨论", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Discussions discussions) + { + return toAjax(discussionsService.insertDiscussions(discussions)); + } + + /** + * 修改讨论 + */ + @PreAuthorize("@ss.hasPermi('system:discussions:edit')") + @Log(title = "讨论", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Discussions discussions) + { + return toAjax(discussionsService.updateDiscussions(discussions)); + } + + /** + * 删除讨论 + */ + @PreAuthorize("@ss.hasPermi('system:discussions:remove')") + @Log(title = "讨论", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(discussionsService.deleteDiscussionsByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java new file mode 100644 index 0000000..c870af9 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java @@ -0,0 +1,115 @@ +package com.rzdata.web.controller.tool; + +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.page.TableDataInfo; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.web.domain.DownloadCount; +import com.rzdata.web.service.IDownloadCountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 工具下载统计Controller + * + * @author 潘驰春 + * @date 2024-08-31 + */ +@RestController +@RequestMapping("/system/count") +public class DownloadCountController extends BaseController +{ + @Autowired + private IDownloadCountService downloadCountService; + + /** + * 查询工具下载统计列表 + */ + @GetMapping("/list") + public TableDataInfo list(DownloadCount downloadCount) + { + startPage(); + List list = downloadCountService.selectDownloadCountList(downloadCount); + return getDataTable(list); + } + + + /** + * 查询文档下载统计列表 + */ + @GetMapping("/doc/list") + public TableDataInfo docList(DownloadCount downloadCount) + { + startPage(); + List list = downloadCountService.selectDownloadDocCountList(downloadCount); + return getDataTable(list); + } + + /** + * 根据详情统计 + */ + @GetMapping("/user/down/list") + public TableDataInfo userDownList(DownloadCount downloadCount) + { + startPage(); + List list = downloadCountService.userDownList(downloadCount); + return getDataTable(list); + } + + + /** + * 导出工具下载统计列表 + */ + @Log(title = "工具下载统计", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DownloadCount downloadCount) + { + List list = downloadCountService.selectDownloadCountList(downloadCount); + ExcelUtil util = new ExcelUtil(DownloadCount.class); + util.exportExcel(response, list, "工具下载统计数据"); + } + + /** + * 获取工具下载统计详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(downloadCountService.selectDownloadCountById(id)); + } + + /** + * 新增工具下载统计 + */ + @Log(title = "工具下载统计", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DownloadCount downloadCount) + { + return toAjax(downloadCountService.insertDownloadCount(downloadCount)); + } + + /** + * 修改工具下载统计 + */ + @Log(title = "工具下载统计", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DownloadCount downloadCount) + { + return toAjax(downloadCountService.updateDownloadCount(downloadCount)); + } + + /** + * 删除工具下载统计 + */ + @Log(title = "工具下载统计", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(downloadCountService.deleteDownloadCountByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/RepliesController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/RepliesController.java new file mode 100644 index 0000000..8430c7d --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/RepliesController.java @@ -0,0 +1,104 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.web.domain.Replies; +import com.rzdata.web.service.IRepliesService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 回复Controller + * + * @author panchichun + * @date 2024-08-30 + */ +@RestController +@RequestMapping("/replies") +public class RepliesController extends BaseController +{ + @Autowired + private IRepliesService repliesService; + + /** + * 查询回复列表 + */ + @PreAuthorize("@ss.hasPermi('system:replies:list')") + @GetMapping("/list") + public TableDataInfo list(Replies replies) + { + startPage(); + List list = repliesService.selectRepliesList(replies); + return getDataTable(list); + } + + /** + * 导出回复列表 + */ + @PreAuthorize("@ss.hasPermi('system:replies:export')") + @Log(title = "回复", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Replies replies) + { + List list = repliesService.selectRepliesList(replies); + ExcelUtil util = new ExcelUtil(Replies.class); + util.exportExcel(response, list, "回复数据"); + } + + /** + * 获取回复详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:replies:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(repliesService.selectRepliesById(id)); + } + + /** + * 新增回复 + */ + @Log(title = "回复", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Replies replies) + { + return toAjax(repliesService.insertReplies(replies)); + } + + /** + * 修改回复 + */ + @PreAuthorize("@ss.hasPermi('system:replies:edit')") + @Log(title = "回复", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Replies replies) + { + return toAjax(repliesService.updateReplies(replies)); + } + + /** + * 删除回复 + */ + @PreAuthorize("@ss.hasPermi('system:replies:remove')") + @Log(title = "回复", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(repliesService.deleteRepliesByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java new file mode 100644 index 0000000..bebb20e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java @@ -0,0 +1,175 @@ +package com.rzdata.web.controller.tool; + +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.blueland.bpmclient.model.BpmClientInputModel; +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.page.TableDataInfo; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.enums.RecordStatusEnum; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.web.domain.ToolApply; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.service.IToolApplyService; +import com.rzdata.web.service.IUseApplyItemService; +import com.rzdata.web.service.WorkflowService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 申请Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/tool/apply") +public class ToolApplyController extends BaseController +{ + @Autowired + private IToolApplyService toolApplyService; + + @Autowired + private WorkflowService workflowService; + + @Autowired + private IUseApplyItemService useApplyItemService; + + + /** + * 查询使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:list')") + @GetMapping("/list") + public TableDataInfo list(ToolApply toolApply) + { + startPage(); + List list = toolApplyService.selectToolApplyList(toolApply); + return getDataTable(list); + } + + /** + * 获取工具信息详细信息 + */ + @GetMapping(value = "/bpmc/{bpmcId}") + public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) + { + return success(toolApplyService.getInfoByBpmcId(bpmcId)); + } + + /** + * 导出使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:export')") + @Log(title = "使用申请", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ToolApply toolApply) + { + List list = toolApplyService.selectToolApplyList(toolApply); + ExcelUtil util = new ExcelUtil(ToolApply.class); + util.exportExcel(response, list, "使用申请数据"); + } + + /** + * 获取使用申请详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:apply:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(toolApplyService.selectToolApplyById(id)); + } + + /** + * 新增使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ToolApply toolApply) + { + boolean add = false; + if (StringUtils.isEmpty(toolApply.getId())) { + toolApply.setId(IdUtil.simpleUUID()); + add = true; + } + ProcessInstanceModel processInstanceModel = null; + try { + if(StringUtils.equals(toolApply.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ + processInstanceModel = workflowService.saveExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + }else if (StringUtils.equals(toolApply.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ + processInstanceModel = workflowService.cancelExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + }else{ + processInstanceModel = workflowService.nextExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + if (processInstanceModel != null && StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (add) { + BpmClientInputModelBo bpmClientInputModelBo = toolApply.getBpmClientInputModel(); + if(null != bpmClientInputModelBo){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + toolApply.setProcTitle(StrUtil.isNotEmpty(bpmClientInputModel.getWf_procTitle()) ? bpmClientInputModel.getWf_procTitle() : ""); + } + if(toolApply.getItemList().size() > 0){ + toolApply.setToolId(toolApply.getItemList().get(0).getToolId()); + } + toolApply.setApplyType(Constants.TOOL_APPLY_TYPE_USE); + toolApply.setProcInstId(processInstanceModel.getProcInstId()); + toolApplyService.insertToolApply(toolApply); + useApplyItemService.updateItemList(toolApply.getItemList(), toolApply.getId()); + }else if (BooleanUtil.isTrue(toolApply.getEditStatus())){ + toolApplyService.updateToolApply(toolApply); + useApplyItemService.updateItemList(toolApply.getItemList(), toolApply.getId()); + }else { + ToolApply updateStatus = new ToolApply(); + updateStatus.setId(toolApply.getId()); + updateStatus.setRecordStatus(toolApply.getRecordStatus()); + if("done".equals(toolApply.getRecordStatus())){ + toolApply.setEndTime(DateUtils.getNowDate()); + } + toolApplyService.updateToolApply(updateStatus); + } + //办结 + if(RecordStatusEnum.DONE.getCode().equals(toolApply.getRecordStatus())){ + //给消息中心发送消息 + toolApplyService.sendTzMessage(toolApply); + } + return AjaxResult.success("操作成功",processInstanceModel); + }else { + return AjaxResult.error(); + } + } + + /** + * 修改使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ToolApply toolApply) + { + return toAjax(toolApplyService.updateToolApply(toolApply)); + } + + /** + * 删除使用申请 + */ + @PreAuthorize("@ss.hasPermi('system:apply:remove')") + @Log(title = "使用申请", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(toolApplyService.deleteToolApplyByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 7d51e56..c891f71 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -1,15 +1,28 @@ package com.rzdata.web.controller.tool; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.IdUtil; +import com.blueland.bpmclient.model.ProcessInstanceModel; import com.rzdata.common.annotation.Log; +import com.rzdata.common.constant.Constants; import com.rzdata.common.core.controller.BaseController; import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.domain.entity.SysUser; import com.rzdata.common.core.page.TableDataInfo; -import com.rzdata.common.enums.BizExceptionCodeEnum; import com.rzdata.common.enums.BusinessType; -import com.rzdata.common.exception.RestException; +import com.rzdata.common.enums.RecordStatusEnum; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.system.service.ISysDeptService; import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolApply; +import com.rzdata.web.service.IDocumentService; +import com.rzdata.web.service.IToolApplyService; import com.rzdata.web.service.IToolService; +import com.rzdata.web.service.WorkflowService; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -30,14 +43,42 @@ public class ToolController extends BaseController @Autowired private IToolService toolService; + @Autowired + private WorkflowService workflowService; + + @Autowired + private IToolApplyService iToolApplyService; + + @Autowired + private ISysDeptService iSysDeptService; + + @Autowired + private IDocumentService iDocumentService; + + @Autowired + private IToolApplyService toolApplyService; + /** * 查询工具信息列表 */ + @PreAuthorize("@ss.hasPermi('tool:list')") @GetMapping("/list") public TableDataInfo list(Tool tool) { startPage(); List list = toolService.selectToolList(tool); + //前端传传参开启下载权限验证 + if (BooleanUtil.isTrue(tool.getDownloadCheck())) { + String userId = SecurityUtils.getUserId().toString(); + for (Tool vo : list) { + //创建人、下载权限、系统管理员 + //1.已经审核通过、并且有下载权限 + vo.setDownloadStatus(toolService.isDownloadStatus(userId, vo)); + + // 是否已发起使用申请 + vo.setIsHasApplyUse(iToolApplyService.hasToolUseApply(vo.getToolId(), userId)); + } + } return getDataTable(list); } @@ -45,12 +86,27 @@ public class ToolController extends BaseController * 导出工具信息列表 */ @Log(title = "工具信息", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('tool:list')") @PostMapping("/export") public void export(HttpServletResponse response, Tool tTool) { List list = toolService.selectToolList(tTool); ExcelUtil util = new ExcelUtil(Tool.class); - util.exportExcel(response, list, "工具信息数据"); + util.exportExcel(response, list, "工具信息数据",tTool.getExcludeFields()); + } + + + + /** + * 导出工具信息列表 + */ + @Log(title = "工具信息", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('tool:list')") + @PostMapping("/export/word/list") + public AjaxResult exportWordList(Tool tool) + { + List list = toolService.selectAllList(tool); + return AjaxResult.success(list); } /** @@ -59,7 +115,27 @@ public class ToolController extends BaseController @GetMapping(value = "/{toolId}") public AjaxResult getInfo(@PathVariable("toolId") String toolId) { - return success(toolService.selectToolByToolId(toolId)); + Tool tool = toolService.selectToolByToolId(toolId); + String userId = SecurityUtils.getUserId().toString(); + tool.setDownloadStatus(toolService.isDownloadStatus(userId, tool)); + return success(tool); + } + + /** + * 获取工具信息详细信息 + */ + @GetMapping(value = "/bpmc/{bpmcId}") + public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) + { + Tool tool= toolService.getInfoByBpmcId(bpmcId); + tool.setToolRespDeptName(iSysDeptService.getDeptName(tool.getToolRespDept())); + return success(tool); + } + + @ApiOperation("判断文件名称是否存在 true 存在 false 不存在") + @GetMapping("/checkToolExist") + public AjaxResult checkToolExist(Tool tTool) { + return AjaxResult.success(toolService.checkToolExist(tTool)); } /** @@ -69,17 +145,69 @@ public class ToolController extends BaseController @PostMapping public AjaxResult add(@RequestBody Tool tTool) { - if(toolService.checkToolExist(tTool.getToolCode(), tTool.getToolRespDept())){ - throw new RestException(BizExceptionCodeEnum.A400001001.getCode(), BizExceptionCodeEnum.A400001001.getMessage()); + boolean add = false; + if (StringUtils.isEmpty(tTool.getToolId())) { + tTool.setToolId(IdUtil.simpleUUID()); + add = true; + } + ProcessInstanceModel processInstanceModel = null; + try { + if(StringUtils.equals(tTool.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ + processInstanceModel = workflowService.saveExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + }else if (StringUtils.equals(tTool.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ + processInstanceModel = workflowService.cancelExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + }else{ + processInstanceModel = workflowService.nextExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + if (processInstanceModel != null && StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (add) { + tTool.setProcInstId(processInstanceModel.getProcInstId()); + toolService.insertTool(tTool); + /** 保存工具关联关系 **/ + toolService.saveToolRelation(tTool, false); + //保存附件 + toolService.addFileList(tTool); + //记录申请数据 + toolService.recordToolApply(tTool); + } else if (BooleanUtil.isTrue(tTool.getEditStatus())){ + toolService.updateTool(tTool); + /** 保存工具关联关系 **/ + toolService.saveToolRelation(tTool, true); + //删除附件 + toolService.delFile(tTool); + //保存附件 + toolService.addFileList(tTool); + } else { + Tool tool = new Tool(); + tool.setToolId(tTool.getToolId()); + tool.setRecordStatus(tTool.getRecordStatus()); + if("done".equals(tTool.getRecordStatus())){ + ToolApply toolApply = toolApplyService.getInfoByBpmcId(tTool.getProcInstId()); + toolApply.setRecordStatus(tTool.getRecordStatus()); + toolApply.setEndTime(DateUtils.getNowDate()); + toolApplyService.updateToolApply(toolApply); + } + toolService.updateTool(tool); + } + //办结 + if(RecordStatusEnum.DONE.getCode().equals(tTool.getRecordStatus())){ + //给消息中心发送消息 + toolService.sendTzMessage(tTool); + } + return AjaxResult.success("操作成功",processInstanceModel); + }else { + return AjaxResult.error(); } - return toAjax(toolService.insertTool(tTool)); } /** * 修改工具信息 */ @Log(title = "工具信息", businessType = BusinessType.UPDATE) - @PutMapping + @PostMapping("/edit") public AjaxResult edit(@RequestBody Tool tTool) { return toAjax(toolService.updateTool(tTool)); @@ -94,4 +222,15 @@ public class ToolController extends BaseController { return toAjax(toolService.deleteToolByToolIds(toolIds)); } + + + /** + * 工具统计 + */ + @GetMapping("/statistics") + public AjaxResult statistics() + { + return AjaxResult.success(toolService.statistics()); + } + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java new file mode 100644 index 0000000..64510ab --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java @@ -0,0 +1,107 @@ +package com.rzdata.web.controller.tool; + +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.page.TableDataInfo; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.service.IToolRelationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * tool_relationController + * + * @author ja + * @date 2024-09-08 + */ +@RestController +@RequestMapping("/system/relation") +public class ToolRelationController extends BaseController +{ + @Autowired + private IToolRelationService toolRelationService; + + /** + * 查询tool_relation列表 + */ + @PreAuthorize("@ss.hasPermi('system:relation:list')") + @GetMapping("/list") + public TableDataInfo list(ToolRelation toolRelation) + { + startPage(); + List list = toolRelationService.selectToolRelationList(toolRelation); + return getDataTable(list); + } + + /** + * 导出tool_relation列表 + */ + @PreAuthorize("@ss.hasPermi('system:relation:export')") + @Log(title = "tool_relation", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ToolRelation toolRelation) + { + List list = toolRelationService.selectToolRelationList(toolRelation); + ExcelUtil util = new ExcelUtil(ToolRelation.class); + util.exportExcel(response, list, "tool_relation数据"); + } + + /** + * 获取tool_relation详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:relation:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(toolRelationService.selectToolRelationById(id)); + } + + /** + * 新增tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:add')") + @Log(title = "tool_relation", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ToolRelation toolRelation) + { + return toAjax(toolRelationService.insertToolRelation(toolRelation)); + } + + /** + * 修改tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:edit')") + @Log(title = "tool_relation", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ToolRelation toolRelation) + { + return toAjax(toolRelationService.updateToolRelation(toolRelation)); + } + + /** + * 删除tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:remove')") + @Log(title = "tool_relation", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(toolRelationService.deleteToolRelationByIds(ids)); + } + + /** + * three,show展示 + */ + @PostMapping("/get/three") + public AjaxResult getDataThree(@RequestBody ToolRelation toolRelation) + { + return success(toolRelationService.getDataThree(toolRelation)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java new file mode 100644 index 0000000..cda8b68 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java @@ -0,0 +1,121 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.service.ITzMessageService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 消息Controller + * + * @author ja + * @date 2024-08-31 + */ +@RestController +@RequestMapping("/system/message") +public class TzMessageController extends BaseController +{ + @Autowired + private ITzMessageService tzMessageService; + + /** + * 查询消息列表 + */ + @PreAuthorize("@ss.hasPermi('system:message:list')") + @GetMapping("/list") + public TableDataInfo list(TzMessage tzMessage) + { + startPage(); + List list = tzMessageService.selectTzMessageList(tzMessage); + return getDataTable(list); + } + + /** + * 导出消息列表 + */ + @Log(title = "消息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, TzMessage tzMessage) + { + List list = tzMessageService.selectTzMessageList(tzMessage); + ExcelUtil util = new ExcelUtil(TzMessage.class); + util.exportExcel(response, list, "消息数据"); + } + + /** + * 获取消息详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(tzMessageService.selectTzMessageById(id)); + } + + /** + * 新增消息 + */ + @Log(title = "消息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody TzMessage tzMessage) + { + return toAjax(tzMessageService.insertTzMessage(tzMessage)); + } + + /** + * 修改消息 + */ + @Log(title = "消息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody TzMessage tzMessage) + { + return toAjax(tzMessageService.updateTzMessage(tzMessage)); + } + + /** + * 删除消息 + */ + @Log(title = "消息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(tzMessageService.deleteTzMessageByIds(ids)); + } + + + /** + * 全部标记已读 + */ + @Log(title = "全部标记已读", businessType = BusinessType.UPDATE) + @PostMapping("/allMarkedRead") + public AjaxResult allMarkedRead(@RequestBody TzMessage tzMessage) + { + return toAjax(tzMessageService.allMarkedRead(tzMessage)); + } + + + /** + * 获取用户统计 + */ + @GetMapping(value = "/user/msg/count/{id}") + public AjaxResult getUserMessageCount(@PathVariable("id") String id) + { + return success(tzMessageService.selectTzMessageByUserCount(id)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java new file mode 100644 index 0000000..d066d2e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java @@ -0,0 +1,110 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.web.domain.UseApplyItem; +import com.rzdata.web.service.IUseApplyItemService; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 使用申请详情Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/use/apply/item") +public class UseApplyItemController extends BaseController +{ + @Autowired + private IUseApplyItemService useApplyItemService; + + /** + * 查询使用申请详情列表 + */ + @PreAuthorize("@ss.hasPermi('system:item:list')") + @GetMapping("/page") + public TableDataInfo page(UseApplyItem useApplyItem) + { + startPage(); + List list = useApplyItemService.selectUseApplyItemList(useApplyItem); + return getDataTable(list); + } + + @GetMapping("/list") + public AjaxResult list(UseApplyItem useApplyItem) + { + return AjaxResult.success(useApplyItemService.selectUseApplyItemList(useApplyItem)); + } + + /** + * 导出使用申请详情列表 + */ + @PreAuthorize("@ss.hasPermi('system:item:export')") + @Log(title = "使用申请详情", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, UseApplyItem useApplyItem) + { + List list = useApplyItemService.selectUseApplyItemList(useApplyItem); + ExcelUtil util = new ExcelUtil(UseApplyItem.class); + util.exportExcel(response, list, "使用申请详情数据"); + } + + /** + * 获取使用申请详情详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:item:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(useApplyItemService.selectUseApplyItemById(id)); + } + + /** + * 新增使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:add')") + @Log(title = "使用申请详情", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody UseApplyItem useApplyItem) + { + return toAjax(useApplyItemService.insertUseApplyItem(useApplyItem)); + } + + /** + * 修改使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:edit')") + @Log(title = "使用申请详情", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody UseApplyItem useApplyItem) + { + return toAjax(useApplyItemService.updateUseApplyItem(useApplyItem)); + } + + /** + * 删除使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:remove')") + @Log(title = "使用申请详情", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(useApplyItemService.deleteUseApplyItemByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java new file mode 100644 index 0000000..efec991 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java @@ -0,0 +1,634 @@ +package com.rzdata.web.controller.tool; + +import com.blueland.bpmclient.model.*; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.core.domain.model.LoginUser; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.system.service.ISysConfigService; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.core.config.BpmcConfig; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.domain.vo.WorkFlowPageVo; +import com.rzdata.web.service.WorkflowService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Validated +@Slf4j +@RestController +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequestMapping(value = "/workflow") +@Api(value = "流程服务", tags = {"流程服务"}) +public class WorkflowController extends BaseController { + + private final WorkflowService workflowService; + + private final ISysUserService userService; + + private final ISysConfigService sysConfigService; + + private final BpmcConfig bpmcConfig; + + + @CrossOrigin + @ApiOperation(value = "获取流程待选人员展示方式", notes = "获取流程待选人员展示方式") + @GetMapping(value = "selectUserStyle") + @ResponseBody + public AjaxResult selectUserStyle() throws Exception { + String result = "tree"; + String value = this.sysConfigService.selectConfigByKey("DMS_FLOW_SELECT_USER_STYLE"); + if(StringUtils.isNotEmpty(value)) { + result = value; + } + return AjaxResult.success("",result); + } + + @CrossOrigin + @ApiOperation(value = "根据流程定义Key获取流程定义信息", notes = "根据流程定义Key获取流程定义信息") + @ApiImplicitParams({@ApiImplicitParam(name = "procDefKey", value = "流程定义key", dataType = "string", paramType = "path") }) + @GetMapping(value = "process/key/{procDefKey}") + @ResponseBody + public AjaxResult getProcessDefinitionModel(@PathVariable("procDefKey") String procDefKey) throws Exception { + ProcessDefinitionModel processDefinitionModel = workflowService.getProcessDefinitionModel( + procDefKey); + return AjaxResult.success(processDefinitionModel); + + } + + @CrossOrigin + @ApiOperation(value = "获取流程第一个人工环节定义", notes = "获取流程第一个人工环节定义") + @GetMapping(value = "startactdef/{procDefId}") + @ResponseBody + public AjaxResult getStartActdef( + @PathVariable("procDefId") String procDefId) throws Exception{ + ActivityDefinitionModel activityDefinitionModel = workflowService.getStartactDef(procDefId); + return AjaxResult.success(activityDefinitionModel); + + } + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节流程定义信息", notes = "新建流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/new") + @ResponseBody + public AjaxResult getNextActsByNew(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + /** + * 获取下一环节集合,并可以标识已办和自动将未办理环节优先排序 + * + * @param searchQuery + * @return + */ + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节流程定义信息", notes = "新建流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/new2") + @ResponseBody + public AjaxResult getNextActsByNew2(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节流程定义信息", notes = "待办流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/pending") + @ResponseBody + public AjaxResult getNextActsByPending(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节用户定义信息", notes = "新建流程,获取下一环节用户定义信息") + @GetMapping(value = "nextactuser/new") + @ResponseBody + public AjaxResult getNextActUsersByNew( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "procDefId") String procDefId, HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setCurActDefId(curActDefId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setProcDefId(procDefId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节用户定义信息", notes = "新建流程,获取下一环节用户定义信息") + @PostMapping(value = "nextactuser/new") + @ResponseBody + public AjaxResult getNextActUsersByNew( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "procDefId") String procDefId, @RequestBody SearchQuery searchQuery, + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setCurActDefId(curActDefId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setProcDefId(procDefId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节用户定义信息", notes = "待办流程,获取下一环节用户定义信息") + @GetMapping(value = "nextactuser/pending") + @ResponseBody + public AjaxResult getNextActUsersByPending( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActInstId") String curActInstId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "procDefKey") String procDefKey, + @RequestParam(value = "procInstId") String procInstId, + + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setTenantId(bpmcConfig.getTenantId()); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setCurActInstId(curActInstId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节用户定义信息", notes = "待办流程,获取下一环节用户定义信息") + @PostMapping(value = "nextactuser/pending") + @ResponseBody + public AjaxResult getNextActUsersByPending( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActInstId") String curActInstId, + @RequestParam(value = "destActDefId") String destActDefId, @RequestBody SearchQuery searchQuery, + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setCurActInstId(curActInstId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "获取待办实例信息", notes = "获取待办实例信息") + @GetMapping(value = "flowinfo/pending") + @ResponseBody + public AjaxResult getPendingFlowInstance( + @RequestParam(value = "curActInstId") String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setCurActInstId(curActInstId); + searchQuery.setStatus(1); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "获取已办实例信息", notes = "获取已办实例信息") + @GetMapping(value = "flowinfo/yiban") + @ResponseBody + public AjaxResult getYiBanFlowInstance( + @RequestParam(value = "curActInstId") String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setCurActInstId(curActInstId); + searchQuery.setStatus(2); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "获取办结实例信息", notes = "获取办结实例信息") + @GetMapping(value = "flowinfo/banjie") + @ResponseBody + public AjaxResult getBanJieFlowInstance( + @RequestParam(value = "procInstId") String procInstId, + HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setProcInstId(procInstId); + searchQuery.setStatus(3); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "新建页面,判断下一环节是否自动提交", notes = "新建页面,判断下一环节是否自动提交") + @GetMapping(value = "autocommit/new/{procDefId}/{curActDefId}") + @ResponseBody + public AjaxResult checkAutoCommitByNew( + @PathVariable("procDefId") String procDefId, @PathVariable("curActDefId") String curActDefId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setProcDefId(procDefId); + searchQuery.setCurActDefId(curActDefId); + String actDefId = workflowService.checkAutoCommit(searchQuery); + return AjaxResult.success("",actDefId); + + } + + @CrossOrigin + @ApiOperation(value = "待办页面,判断下一环节是否自动提交", notes = "待办页面,判断下一环节是否自动提交") + @GetMapping(value = "autocommit/pending/{curActInstId}") + @ResponseBody + public AjaxResult checkAutoCommitByPending( + @PathVariable("curActInstId") String curActInstId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setCurActInstId(curActInstId); + String actDefId = workflowService.checkAutoCommit(searchQuery); + return AjaxResult.success("",actDefId); + } + + @CrossOrigin + @ApiOperation(value = "待办页面,判断下一环节是否自动跳转", notes = "待办页面,判断下一环节是否自动跳转") + @GetMapping(value = "autoJump/pending/{curActInstId}") + @ResponseBody + public AjaxResult checkAutoJumpByPending( + @PathVariable("curActInstId") String curActInstId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setCurActInstId(curActInstId); + Map actDefId = workflowService.checkAutoJump(searchQuery); + return AjaxResult.success("",actDefId); + } + + @CrossOrigin + @ApiOperation(value = "新建页面,判断下一环节是否自动提交", notes = "新建页面,判断下一环节是否自动提交") + @GetMapping(value = "autoJump/new/{procDefId}/{curActDefId}") + @ResponseBody + public AjaxResult checkAutoJumpByNew( + @PathVariable("procDefId") String procDefId, @PathVariable("curActDefId") String curActDefId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setProcDefId(procDefId); + searchQuery.setCurActDefId(curActDefId); + Map actDefId = workflowService.checkAutoJump(searchQuery); + return AjaxResult.success("",actDefId); + + } + + @CrossOrigin + @ApiOperation(value = "提交流程", notes = "提交流程") + @PostMapping(value = "submit") + @ResponseBody + public AjaxResult submitNewFLowInstance(@RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.submit.name()); + return AjaxResult.success(processInstanceModel); + } + + @CrossOrigin + @ApiOperation(value = "暂存流程", notes = "暂存流程") + @PostMapping(value = "save") + @ResponseBody + public AjaxResult saveFLowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.save.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程作废 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "作废流程", notes = "作废流程") + @PostMapping(value = "cancel") + @ResponseBody + @CrossOrigin + public AjaxResult cancelFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.cancel.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程实例撤回到拟稿人环节 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "流程实例撤回到拟稿人环节", notes = "流程实例撤回到拟稿人环节") + @PostMapping(value = "backtostart") + @ResponseBody + @CrossOrigin + public AjaxResult callBackStartFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.backtostart.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程实例撤回到上一环节 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "流程实例撤回到上一环节", notes = "流程实例撤回到上一环节") + @PostMapping(value = "backtoprev") + @ResponseBody + @CrossOrigin + public AjaxResult backToPrevFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.backtoprev.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 提交流程驳回参数 + * + * @param bpmClientInputModelBo + * @return + */ + @CrossOrigin + @ApiOperation(value = "流程驳回", notes = "流程驳回") + @PostMapping(value = "reject") + @ResponseBody + public AjaxResult rejectFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.reject.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程撤回 + * + * @param bpmClientInputModelBo + * @return + */ + @CrossOrigin + @ApiOperation(value = "流程撤回", notes = "流程撤回") + @PostMapping(value = "back") + @ResponseBody + public AjaxResult backFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.back.name()); + return AjaxResult.success(processInstanceModel); + } + + @ApiOperation(value = "流程转派", notes = "流程转派") + @PostMapping(value = "transfer") + @ResponseBody + @CrossOrigin + public AjaxResult transferFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.transfer.name()); + return AjaxResult.success(processInstanceModel); + } + + @ApiOperation(value = "流程日志", notes = "流程日志") + @PostMapping(value = "getLog") + @ResponseBody + @CrossOrigin + public AjaxResult getProcInstLog( + @RequestBody BpmClientInputModel bpmClientInputModel) { + HashMap procInstLog = workflowService.getProcInstLog(bpmClientInputModel); + return AjaxResult.success(procInstLog); + } + + @ApiOperation(value = "办件阅件列表查询", notes = "办件阅件列表查询") + @PostMapping(value = "/list") + @ResponseBody + @CrossOrigin + public AjaxResult getRecordList(@RequestBody SearchQuery searchQuery) { + PageResultModel pageResult = workflowService.findRecordList(searchQuery); + return AjaxResult.success(pageResult); + } + + @ApiOperation(value = "待办/已办列表查询", notes = "待办/已办列表查询") + @PostMapping(value = "/toDoList") + @ResponseBody + @CrossOrigin + public AjaxResult getToDoList(@RequestBody SearchQuery searchQuery) throws Exception{ + //接收人 + WorkFlowPageVo pageResult = workflowService.findToDoList(searchQuery); + return AjaxResult.success(pageResult); + } + + @ApiOperation(value = "获取流程实例图形监控链接地址", notes = "获取流程实例图形监控链接地址") + @GetMapping(value = "histasklogurl/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getHistasklogurl( @PathVariable String procInstId) throws Exception{ + String url = workflowService.getHistasklogurl(procInstId); + return AjaxResult.success("",url); + } + + @ApiOperation(value = "获取流程实例图形链接地址", notes = "获取流程实例图形监控链接地址") + @GetMapping(value = "getImageUrl/{procDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getProcessImageUrl( @PathVariable String procDefId) throws Exception{ + String url = workflowService.getImageUrl( procDefId); + return AjaxResult.success("",url); + } + + /** + * 获取流程状态 + * + * @param procInstId + * @param curActInstId + * @return + */ + @ApiOperation(value = "获取流程状态", notes = "获取流程状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "procInstId", value = "流程实例id", dataType = "string", paramType = "path"), + @ApiImplicitParam(name = "curActInstId", value = "当前环节实例id", dataType = "string", paramType = "path") }) + @GetMapping(value = "/getFlowStatus/{procInstId}/{curActInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowStatus( @PathVariable String procInstId, + @PathVariable String curActInstId) throws Exception{ + int flowStatus = workflowService.getFlowStatus(procInstId, curActInstId); + return AjaxResult.success(flowStatus); + } + + @ApiOperation(value = "获取流程实例信息,包含当前用户所对应实例状态", notes = "获取流程实例信息,包含当前用户所对应实例状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "procInstId", value = "流程实例id", dataType = "string", paramType = "path"), + @ApiImplicitParam(name = "curActInstId", value = "当前环节实例id", dataType = "string", paramType = "path") }) + @GetMapping(value = "instance/{procInstId}/{curActInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowProcessInstance(@PathVariable String procInstId, @PathVariable String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + ProcessInstanceModel procInst = workflowService.getProcessInstance(procInstId, curActInstId, + userId); + return AjaxResult.success(procInst); + } + + @ApiOperation(value = "获取流程环节定义信息", notes = "获取流程环节定义信息") + @GetMapping(value = "activitydefinition/{procDefId}/{actDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowActDef( + @PathVariable String procDefId, @PathVariable String actDefId) throws Exception{ + ActivityDefinitionModel activityDefinitionModel = workflowService.getActDef( procDefId, actDefId); + return AjaxResult.success(activityDefinitionModel); + } + + @ApiOperation(value = "获取流程环节配置的表单", notes = "获取流程环节配置的表单") + @GetMapping(value = "getFlowActForm/{procDefId}/{actDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowActForm( + @PathVariable String procDefId, @PathVariable String actDefId) throws Exception{ + Map formUrl = workflowService.getFlowActForm( procDefId, actDefId); + return AjaxResult.success(formUrl); + } + + @ApiOperation(value = "根据流程实例id获取流程实例信息", notes = "根据流程实例id获取流程实例信息") + @GetMapping(value = "/procInstInfo/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getProcInstInfo(@PathVariable String procInstId)throws Exception { + Map procInst = workflowService.getProcessInstById( procInstId); + return AjaxResult.success(procInst); + } + + @ApiOperation(value = "根据流程实例id获取流程实例信息和流程状态", notes = "根据流程实例id获取流程实例信息") + @GetMapping(value = "/procInstInfoAndStatus/{procInstId}") + @ResponseBody + @CrossOrigin + public Map procInstInfoAndStatus( @PathVariable String procInstId, + HttpServletRequest request) { + try { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setStatus(1); + searchQuery.setProcInstId(procInstId); + PageResultModel pageResultModel = workflowService.findRecordList(searchQuery); + if (pageResultModel == null || pageResultModel.getTotalCount() == 0) { + return null; + }else { + return pageResultModel.getResult().get(0); + } + } catch (Exception ex) { + log.error("获取流程信息 该用户的流程是待办还是已办", ex); + return null; + } + } + + @ApiOperation(value = "获取当前用户流程实例数量", notes = "获取当前用户流程实例数量。status状态值{1:待办,2:已办,3:办结}") + @GetMapping(value = "/count/{status}") + @ResponseBody + public Map getRecordCount( @PathVariable int status, + HttpServletRequest request) { + try { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setStatus(status); + return workflowService.getRecordCount(searchQuery); + } catch (Exception ex) { + log.error("获取当前用户流程实例数量", ex); + Map result = new HashMap<>(); + result.put("count", 0); + return result; + } + } + + @ApiOperation(value = "根据父流程实例id获取该流程的子流程,从而处理子流程", notes = "根据父流程实例id获取该流程的子流程,从而处理子流程") + @GetMapping(value = "/subprocess/{status}/{procInstId}") + public List> getSubprocess( @PathVariable String status, + @PathVariable String procInstId) { + try { + return workflowService.getSubprocess( status, procInstId); + } catch (Exception ex) { + log.error("根据父流程实例id获取该流程的子流程,从而处理子流程", ex); + return Lists.newArrayList(); + } + } + + @CrossOrigin + @ApiOperation(value = "获取该用户是否处理过该流程", notes = "获取该用户是否处理该流程") + @GetMapping(value = "/flowinfo/user/deal/{procInstId}") + @ResponseBody + public AjaxResult getUserIsDealFlow( @PathVariable String procInstId, + HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setProcInstId(procInstId); + searchQuery.setStatus(1); + Map result = workflowService.getRecordCount(searchQuery); + return AjaxResult.success(Integer.valueOf(result.get("count").toString())); + } + + @CrossOrigin + @ApiOperation(value = "获取扩展属性", notes = "获取扩展属性") + @GetMapping("/getExtAttributeModel") + public AjaxResult getExtAttributeModel(@RequestParam("procDefId") String procDefId, @RequestParam("actDefId") String actDefId){ + return AjaxResult.success(workflowService.getExtAttributeModel(procDefId, actDefId)); + } + + @ApiOperation(value = "待办列表查询", notes = "待办列表查询") + @GetMapping(value = "/getRecord/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getRecordbyPorcInstId(@PathVariable String procInstId) throws Exception{ + return AjaxResult.success(workflowService.getRecordbyPorcInstId(procInstId)); + } + + /** + * 获取用户的消息数量(代办/消息中心) + */ + @GetMapping("/msg/count") + public AjaxResult msgCount() { + AjaxResult ajax = AjaxResult.success(); + LoginUser loginUser = getLoginUser(); + Map resultMap = workflowService.selectUserMsgCount(loginUser.getUser()); + ajax.put("msgCount", resultMap.get("msgCount")); + ajax.put("taskCount", resultMap.get("taskCount")); + ajax.put("totalMsgCount", resultMap.get("totalMsgCount")); + return ajax; + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java new file mode 100644 index 0000000..5511b14 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java @@ -0,0 +1,110 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.service.IWorkflowLogService; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 流程审批记录Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/web/log") +public class WorkflowLogController extends BaseController +{ + @Autowired + private IWorkflowLogService workflowLogService; + + /** + * 查询流程审批记录列表 + */ + @PreAuthorize("@ss.hasPermi('web:log:list')") + @GetMapping("/page") + public TableDataInfo page(WorkflowLog workflowLog) + { + startPage(); + List list = workflowLogService.selectWorkflowLogList(workflowLog); + return getDataTable(list); + } + + @GetMapping("/list") + public AjaxResult list(WorkflowLog workflowLog) + { + return AjaxResult.success(workflowLogService.selectWorkflowLogList(workflowLog)); + } + + /** + * 导出流程审批记录列表 + */ + @PreAuthorize("@ss.hasPermi('web:log:export')") + @Log(title = "流程审批记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WorkflowLog workflowLog) + { + List list = workflowLogService.selectWorkflowLogList(workflowLog); + ExcelUtil util = new ExcelUtil(WorkflowLog.class); + util.exportExcel(response, list, "流程审批记录数据"); + } + + /** + * 获取流程审批记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('web:log:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(workflowLogService.selectWorkflowLogById(id)); + } + + /** + * 新增流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:add')") + @Log(title = "流程审批记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WorkflowLog workflowLog) + { + return toAjax(workflowLogService.insertWorkflowLog(workflowLog)); + } + + /** + * 修改流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:edit')") + @Log(title = "流程审批记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WorkflowLog workflowLog) + { + return toAjax(workflowLogService.updateWorkflowLog(workflowLog)); + } + + /** + * 删除流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:remove')") + @Log(title = "流程审批记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(workflowLogService.deleteWorkflowLogByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java b/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java new file mode 100644 index 0000000..0152475 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java @@ -0,0 +1,34 @@ +package com.rzdata.web.core.config; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 读取项目相关配置 + * + * @author Lion Li + */ + +@Data +@Accessors(chain = true) +@Component +@ConfigurationProperties(prefix = "bpmc") +public class BpmcConfig { + + /** + * 流程平台下应用租户id + */ + private String tenantId; + + /** + * 流程平台服务接口地址 + */ + private String serviceUrl; + + /** + * 待办地址前缀 + */ + private String uniteWorkUrl; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java new file mode 100644 index 0000000..efd3e0b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java @@ -0,0 +1,88 @@ +package com.rzdata.web.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; +import java.util.List; + +/** + * 附件对象 t_attachment + * + * @author panchichun + * @date 2024-08-28 + */ +@Data +public class Attachment extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String fileType; + + /** 业务类型 */ + @Excel(name = "业务类型") + private String bizType; + + /** 文件路径 */ + @Excel(name = "文件路径") + private String filePath; + + /** 文件URL */ + @Excel(name = "文件URL") + private String fileUrl; + + /** 文件源名称 */ + @Excel(name = "文件源名称") + private String fileOldName; + + /** 文件新名称 */ + @Excel(name = "文件新名称") + private String fileNewName; + + /** 文件后缀 */ + @Excel(name = "文件后缀") + private String suffixType; + + /** 文件大小 */ + @Excel(name = "文件大小") + private Long fileSize; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String businessId; + + /** 序号 */ + @Excel(name = "序号") + private Long sorts; + + /** 删除;1是, 0:否 */ + @Excel(name = "删除;1是, 0:否") + private String del; + + /** 创建时间 */ + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date createDate; + + /** 更新时间 */ + @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date updateDate; + + /** 失效时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date failureTime; + + private List businessIds; + + /** 文件名称 **/ + private String fileName; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Discussions.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Discussions.java new file mode 100644 index 0000000..3f3b022 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Discussions.java @@ -0,0 +1,51 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.List; + +/** + * 讨论对象 t_discussions + * + * @author panchichun + * @date 2024-08-30 + */ +@Data +public class Discussions extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 业务id */ + @Excel(name = "业务id") + private String businessId; + + /** 业务类型;(doc:文档,tool:工具) */ + @Excel(name = "业务类型;", readConverterExp = "d=oc:文档,tool:工具") + private String type; + + /** 内容 */ + @Excel(name = "内容") + private String content; + + /** 逻辑删除;(1:删除,0:未删除) */ + @Excel(name = "逻辑删除;", readConverterExp = "1=:删除,0:未删除") + private String isDelete; + + /** 创建人id */ + @Excel(name = "创建人id") + private String createById; + + /** 更新人id */ + @Excel(name = "更新人id") + private String updateById; + + private String nickName; + + + private List repliesList; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index 2d21e0c..bf21870 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -1,17 +1,24 @@ package com.rzdata.web.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.rzdata.common.annotation.Excel; import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; +import java.util.List; + /** * 【请填写功能名称】对象 t_document * * @author ja * @date 2024-07-08 */ +@Data public class Document extends BaseEntity { + private static final long serialVersionUID = 1L; /** 主键 */ @@ -26,129 +33,86 @@ public class Document extends BaseEntity { private String docName; /** 文档类别 */ - @Excel(name = "文档类别") + @Excel(name = "文档类别", dictType="doc_class") private String docType; /** 文档负责人 */ - @Excel(name = "文档负责人") private String docPrincipals; + /** 文档负责人名称 */ + @Excel(name = "负责人") + private String docPrincipalsName; + + /** 归属单位 **/ + @Excel(name = "归属单位") + private String docRespDeptName; + /** 文档归属部门 */ - @Excel(name = "文档归属部门") private String docRespDept; /** 文档来源 */ - @Excel(name = "文档来源") + @Excel(name = "文档来源", dictType="doc_source") private String docSource; + /** + * 工具名称 + */ + private String toolName; + /** 文档状态 */ - @Excel(name = "文档状态") + @Excel(name = "文档状态", dictType="doc_upload_status") private String docStatus; /** 文档地址 */ - @Excel(name = "文档地址") private String docUrl; - public void setDocId(String docId) - { - this.docId = docId; - } + /** 备注 */ + private String remark; - public String getDocId() - { - return docId; - } - public void setDocCode(String docCode) - { - this.docCode = docCode; - } + /** 文档分类id */ + private String docCategoryId; - public String getDocCode() - { - return docCode; - } - public void setDocName(String docName) - { - this.docName = docName; - } + /** 创建人id */ + private String createById; + /** 更新人id */ + private String updateById; + /** 逻辑删除(1:删除,0:未删除) */ + private String isDeleted; - public String getDocName() - { - return docName; - } - public void setDocType(String docType) - { - this.docType = docType; - } + /** 主键 **/ + private List ids; - public String getDocType() - { - return docType; - } - public void setDocPrincipals(String docPrincipals) - { - this.docPrincipals = docPrincipals; - } + /** 附件名称 **/ + private Attachment attachment; - public String getDocPrincipals() - { - return docPrincipals; - } - public void setDocRespDept(String docRespDept) - { - this.docRespDept = docRespDept; - } + /** 关联工具id对象 */ + private String toolId; - public String getDocRespDept() - { - return docRespDept; - } - public void setDocSource(String docSource) - { - this.docSource = docSource; - } + /** 工具信息 **/ + private Tool tool; - public String getDocSource() - { - return docSource; - } + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", dateFormat="yyyy-MM-dd") + private Date createTime; - public void setDocStatus(String docStatus) - { - this.docStatus = docStatus; - } - public String getDocStatus() - { - return docStatus; - } + private List excludeFields; - public void setDocUrl(String docUrl) - { - this.docUrl = docUrl; - } + private Boolean downloadCheck; - public String getDocUrl() - { - return docUrl; - } + private Boolean downloadStatus; - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("docId", getDocId()) - .append("docCode", getDocCode()) - .append("docName", getDocName()) - .append("docType", getDocType()) - .append("docPrincipals", getDocPrincipals()) - .append("docRespDept", getDocRespDept()) - .append("docSource", getDocSource()) - .append("docStatus", getDocStatus()) - .append("docUrl", getDocUrl()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } + private Boolean permissionCheck; + + private Boolean permission; + + private String docTypeName; + private String docSourceName; + private String statusName; + private String createNowTime; + + private List attachmentList; + /** 主键 **/ + private List docIdList; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java new file mode 100644 index 0000000..b568e07 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java @@ -0,0 +1,56 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 工具下载统计对象 t_download_count + * + * @author 潘驰春 + * @date 2024-08-31 + */ +@Data +public class DownloadCount extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 工具id */ + @Excel(name = "业务id") + private String businessId; + /** 业务类型 */ + private String businessType; + /** 附件id */ + private String attId; + /** 附件名称 */ + private String attName; + + /** 创建人id */ + @Excel(name = "创建人id") + private String createById; + + /** 更新人id */ + @Excel(name = "更新人id") + private String updateById; + + /** 工具code */ + private String toolCode; + /** 工具名称 */ + private String toolName; + /** 工具下载数量 */ + private String toolDownNum; + private String nickName; + + /** 文档code */ + private String docCode; + /** 文档名称 */ + private String docName; + /** 文档下载数量 */ + private String docDownNum; + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java new file mode 100644 index 0000000..a9d917b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java @@ -0,0 +1,20 @@ +package com.rzdata.web.domain; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FileOperationRequest { + private String id; + private String name; + private Boolean isLocal; + /** preview:预览,download:下载 **/ + private String type; + /** + * 模板下载类型 + * 1: 导入模板 + * 2:示例请求模板 + */ + private String templateDownloadType; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java new file mode 100644 index 0000000..73c4f7d --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java @@ -0,0 +1,51 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.List; + +/** + * 回复对象 t_replies + * + * @author panchichun + * @date 2024-08-30 + */ +@Data +public class Replies extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 讨论表id */ + @Excel(name = "讨论表id") + private String discussionId; + + @Excel(name = "回复评论ID") + private String repId; + + /** 内容 */ + @Excel(name = "内容") + private String content; + + /** 逻辑删除;(1:删除,0:未删除) */ + @Excel(name = "逻辑删除;", readConverterExp = "1=:删除,0:未删除") + private String isDelete; + + /** 创建人id */ + @Excel(name = "创建人id") + private String createById; + + /** 更新人id */ + @Excel(name = "更新人id") + private String updateById; + + private String nickName; + + private String repTargetNickName; + + private List discussionIdList; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 4c05f75..a025295 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -1,11 +1,13 @@ package com.rzdata.web.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.rzdata.common.annotation.Excel; -import com.rzdata.common.annotation.Excels; import com.rzdata.common.core.domain.BaseEntity; -import com.rzdata.common.core.domain.entity.SysDept; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import lombok.Data; + +import java.util.Date; +import java.util.List; /** * 工具信息对象 t_tool @@ -13,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; * @author ja * @date 2024-07-15 */ +@Data public class Tool extends BaseEntity { private static final long serialVersionUID = 1L; @@ -21,223 +24,104 @@ public class Tool extends BaseEntity private String toolId; /** 工具编号 */ - @Excel(name = "工具编号") private String toolCode; /** 工具名称 */ - @Excel(name = "工具名称") + @Excel(name = "工具名称",sort=1) private String toolName; /** 工具类别 */ - @Excel(name = "工具类别") + @Excel(name = "工具类别",dictType="tool_type",sort=2) private String toolType; /** 来源 */ - @Excel(name = "来源") + @Excel(name = "工具来源",dictType="tool_source",sort=3) private String toolSource; + private String toolSourceName; + /** 用途 */ - @Excel(name = "用途") + //@Excel(name = "工具用途",sort=7) private String toolUse; /** 测试情况 */ - @Excel(name = "测试情况") + //@Excel(name = "测评情况",sort=8) private String testSituation; /** 功能描述 */ - @Excel(name = "功能描述") + //@Excel(name = "功能描述",sort=9) private String functionDesc; /** 适用条件 */ - @Excel(name = "适用条件") + //@Excel(name = "适用条件",sort=10) private String applyCondition; /** 操作说明 */ - @Excel(name = "操作说明") + //@Excel(name = "操作说明",sort=11) private String operateExplain; /** 负责人 */ - @Excel(name = "负责人") private String toolPrincipals; /** 负责人名称 */ - @Excel(name = "负责人") + @Excel(name = "负责人",sort=4) private String toolPrincipalsName; /** 归属单位 */ - @Excel(name = "归属单位") private String toolRespDept; + @Excel(name = "归属单位",sort=5) + private String toolRespDeptName; + /** 状态 */ - @Excel(name = "状态") + @Excel(name = "状态",dictType="tool_status",sort=6) private String status; - /** 部门对象 */ - @Excels({ - @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.EXPORT), - @Excel(name = "部门负责人", targetAttr = "leader", type = Excel.Type.EXPORT) - }) - private SysDept dept; + /** 备注 */ + //@Excel(name = "备注",sort=12) + private String remark; - public void setToolId(String toolId) - { - this.toolId = toolId; - } + /** 关联工具 */ + private String association; - public String getToolId() - { - return toolId; - } + private BpmClientInputModelBo bpmClientInputModel; - public void setToolCode(String toolCode) - { - this.toolCode = toolCode; - } + /** done:办结,doing:进行中**/ + @Excel(name = "流程状态",dictType="flow_status",sort=7) + private String recordStatus; - public String getToolCode() - { - return toolCode; - } - public void setToolName(String toolName) - { - this.toolName = toolName; - } + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", dateFormat="yyyy-MM-dd") + private Date createTime; - public String getToolName() - { - return toolName; - } - public void setToolType(String toolType) - { - this.toolType = toolType; - } + private Boolean editStatus; - public String getToolType() - { - return toolType; - } - public void setToolSource(String toolSource) - { - this.toolSource = toolSource; - } + private String procInstId; - public String getToolSource() - { - return toolSource; - } - public void setToolUse(String toolUse) - { - this.toolUse = toolUse; - } + private Boolean permissionCheck; - public String getToolUse() - { - return toolUse; - } - public void setTestSituation(String testSituation) - { - this.testSituation = testSituation; - } + private Boolean permission; - public String getTestSituation() - { - return testSituation; - } - public void setFunctionDesc(String functionDesc) - { - this.functionDesc = functionDesc; - } + private Boolean downloadCheck; - public String getFunctionDesc() - { - return functionDesc; - } - public void setApplyCondition(String applyCondition) - { - this.applyCondition = applyCondition; - } + private Boolean downloadStatus; - public String getApplyCondition() - { - return applyCondition; - } - public void setOperateExplain(String operateExplain) - { - this.operateExplain = operateExplain; - } + private Boolean isHasApplyUse; - public String getOperateExplain() - { - return operateExplain; - } - public void setToolPrincipals(String toolPrincipals) - { - this.toolPrincipals = toolPrincipals; - } + private List excludeFields; - public String getToolPrincipals() - { - return toolPrincipals; - } + private List documentList; + private List attachmentList; - public void setToolPrincipalsName(String toolPrincipalsName) - { - this.toolPrincipalsName = toolPrincipalsName; - } - public String getToolPrincipalsName() - { - return toolPrincipalsName; - } - public void setToolRespDept(String toolRespDept) - { - this.toolRespDept = toolRespDept; - } - - public String getToolRespDept() - { - return toolRespDept; - } - public void setStatus(String status) - { - this.status = status; - } - - public String getStatus() - { - return status; - } - - public SysDept getDept() - { - return dept; - } - - public void setDept(SysDept dept) - { - this.dept = dept; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("toolId", getToolId()) - .append("toolName", getToolName()) - .append("toolType", getToolType()) - .append("toolSource", getToolSource()) - .append("toolUse", getToolUse()) - .append("testSituation", getTestSituation()) - .append("functionDesc", getFunctionDesc()) - .append("applyCondition", getApplyCondition()) - .append("operateExplain", getOperateExplain()) - .append("toolPrincipals", getToolPrincipals()) - .append("toolRespDept", getToolRespDept()) - .append("status", getStatus()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } + /** 工具类型名称 **/ + private String toolTypeName; + /** 状态名称 **/ + private String statusName; + /** 主键 **/ + private List toolIdList; + /** 需要过滤的主键 **/ + private List filterToolIds; + private String recordStatusName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java new file mode 100644 index 0000000..73bf387 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java @@ -0,0 +1,65 @@ +package com.rzdata.web.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 使用申请对象 t_use_apply + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class ToolApply extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + + @Excel(name = "申请人id") + private String userId; + + @Excel(name = "工具ID") + private String toolId; + + @Excel(name = "流程标题") + private String procTitle; + + @Excel(name = "申请类型") + private String applyType; + + @Excel(name = "申请人名称") + private String nickName; + + /** 申请部门 */ + @Excel(name = "申请部门id") + private String deptId; + + @Excel(name = "申请部门名称") + private String deptName; + + /** 申请理由 */ + @Excel(name = "申请理由") + private String reason; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + + private BpmClientInputModelBo bpmClientInputModel; + + private String recordStatus; + + private Boolean editStatus; + + private String procInstId; + + private List itemList; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java new file mode 100644 index 0000000..7dca3f2 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java @@ -0,0 +1,38 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.List; + +/** + * tool_relation对象 t_tool_relation + * + * @author ja + * @date 2024-09-08 + */ +@Data +public class ToolRelation extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 源id */ + @Excel(name = "源id") + private String resourceId; + + /** 目标id */ + @Excel(name = "目标id") + private String targetId; + + /** 文件编号 */ + private String toolCode; + /** 文件名称 */ + private String toolName; + + /** 资源名称 */ + private List resourceIds; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java new file mode 100644 index 0000000..1a63479 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java @@ -0,0 +1,44 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 消息对象 tz_message + * + * @author ja + * @date 2024-08-31 + */ +@Data +public class TzMessage extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 消息id */ + private String id; + + /** 消息接收者id */ + @Excel(name = "消息接收者id") + private String receiverId; + + /** 状态(2:已读,1:未读) */ + @Excel(name = "状态", readConverterExp = "2=:已读,1:未读") + private Integer states; + + /** 消息推送内容 */ + @Excel(name = "消息推送内容") + private String content; + + /** 业务id */ + private String businessId; + + /** 业务类型;(doc:文档,tool:工具) */ + private String businessType; + + /** 逻辑删除标记:1删除;0未删除 */ + @Excel(name = "逻辑删除标记:1删除;0未删除") + private String deleted; + private String createById; + private String updateById; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java new file mode 100644 index 0000000..9dcdf8b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java @@ -0,0 +1,52 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 使用申请详情对象 t_use_apply_item + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class UseApplyItem extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 申请主键 */ + @Excel(name = "申请主键") + private String applyId; + + /** 工具id */ + @Excel(name = "工具id") + private String toolId; + + /** 工具编号 */ + @Excel(name = "工具编号") + private String toolCode; + + /** 工具名称 */ + @Excel(name = "工具名称") + private String toolName; + + /** 工具类别 */ + @Excel(name = "工具类别") + private String toolType; + + /** 负责人 */ + @Excel(name = "负责人") + private String toolPrincipals; + + /** 负责人名称 */ + @Excel(name = "负责人名称") + private String toolPrincipalsName; + + /** 归属单位 */ + @Excel(name = "归属单位") + private String toolRespDept; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java new file mode 100644 index 0000000..39ac301 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java @@ -0,0 +1,129 @@ +package com.rzdata.web.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @auther xcy + * @create 2021-12-30 15:41 + */ +@Data +public class WorkFlowInfo { + + @ApiModelProperty("主键") + private String id; + + @ApiModelProperty("当前活动定义名称") + private String curActDefName; + + @ApiModelProperty("父流程Id") + private String parentProcInstId; + + @ApiModelProperty("接收人姓名") + private String recUserName; + + @ApiModelProperty("前一活动名称") + private String prevActDefName; + + @ApiModelProperty("流程定义key") + private String procDefKey; + + @ApiModelProperty("接收人Id") + private String recUserId; + + @ApiModelProperty("发送人组织名称") + private String sendOrgName; + + @ApiModelProperty("流程定义Id") + private String procDefId; + + @ApiModelProperty("发送时间") + private String sendTime; + + @ApiModelProperty("处理时间") + private String dealTime; + + @ApiModelProperty("流程定义名称") + private String procDefName; + + private String dataSource; + + @ApiModelProperty("待办:1 已办:2 办结:3 待阅:4 已阅:5 作废:6 删除:7") + private String status; + + @ApiModelProperty("桌面端访问协议") + private String cportalProtocol; + + @ApiModelProperty("发送人组织Id") + private String sendOrgId; + + private String serviceCode; + + @ApiModelProperty("前一活动定义Id") + private String prevActDefId; + + @ApiModelProperty("手机端访问协议") + private String mportalProtocol; + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("手机端URL") + private String mportalUrl; + + @ApiModelProperty("顶级流程Id") + private String topProcInstId; + + @ApiModelProperty("内容") + private String content; + + @ApiModelProperty("发送人Id") + private String sendUserId; + + @ApiModelProperty("流程起草人Id") + private String startUserId; + + @ApiModelProperty("流程起草人姓名") + private String startUserName; + + @ApiModelProperty("当前活动处理时限") + private String curActLimitTime; + + @ApiModelProperty("发送人姓名") + private String sendUserName; + + @ApiModelProperty("当前活动实例Id") + private String curActInstId; + + @ApiModelProperty("起草时间") + private String startTime; + + @ApiModelProperty("前一活动实例Id") + private String prevActInstId; + + @ApiModelProperty("流程实例Id") + private String procInstId; + + @ApiModelProperty("桌面端URL") + private String url; + + private String wportalProtocol; + + @ApiModelProperty("接收人组织名称") + private String recOrgName; + + @ApiModelProperty("接收人组织Id") + private String recOrgId; + + @ApiModelProperty("当前活动定义Id") + private String curActDefId; + + @ApiModelProperty("业务数据") + private Object businessData; + + //是否删除,1:正常 0:删除 + private Integer flag = 1; + + private String docName; +} + diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java new file mode 100644 index 0000000..b3704f3 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java @@ -0,0 +1,88 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 流程审批记录对象 t_workflow_log + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class WorkflowLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 流程实例ID */ + @Excel(name = "流程实例ID") + private String procInstId; + + /** 流程实例key */ + @Excel(name = "流程实例key") + private String procDefKey; + + /** 业务ID */ + @Excel(name = "业务ID") + private String businessId; + + /** 当前环节定义Id */ + @Excel(name = "当前环节定义Id") + private String actDefId; + + /** 当前环节定义名称 */ + @Excel(name = "当前环节定义名称") + private String actDefName; + + /** 下一环节定义Id */ + @Excel(name = "下一环节定义Id") + private String nextDefId; + + /** 下一环节定义名称 */ + @Excel(name = "下一环节定义名称") + private String nextDefName; + + /** 环节实例ID */ + @Excel(name = "环节实例ID") + private String actInstId; + + /** 意见 */ + @Excel(name = "意见") + private String opinion; + + /** 发送人 */ + @Excel(name = "发送人") + private String sender; + + /** 发送人部门 */ + @Excel(name = "发送人部门") + private String senderDeptId; + + /** 接收人 */ + @Excel(name = "接收人") + private String receiver; + + /** 环节处理状态 */ + @Excel(name = "环节处理状态") + private String actStatus; + + /** 是否通过 */ + @Excel(name = "是否通过") + private Boolean pass; + + /** 租户id */ + @Excel(name = "租户id") + private String tenantId; + + /** 是否审核 */ + @Excel(name = "是否审核") + private Boolean review; + + /** 批次 */ + @Excel(name = "批次") + private String batch; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java new file mode 100644 index 0000000..8cc4281 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java @@ -0,0 +1,33 @@ +package com.rzdata.web.domain.bo; + +import com.blueland.bpmclient.model.BpmClientInputModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Author WangYang + * @Date 2022/2/11 15:12 + * @Version 1.0 + * @Description + */ +@Data +public class BpmClientInputModelBo implements Serializable { + + private BpmClientInputModel model; + + /** + * 申请结果 + */ + private Boolean applyStatus; + + private String type; + + /** + * 是否有审核 + */ + private Boolean review; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java new file mode 100644 index 0000000..b35afa7 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java @@ -0,0 +1,28 @@ +package com.rzdata.web.domain.vo; + +import com.rzdata.web.domain.WorkFlowInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @auther xcy + * @create 2021-12-31 10:49 + */ +@Data +public class WorkFlowPageVo { + + @ApiModelProperty("分页大小") + private Integer pageSize; + + @ApiModelProperty("总数") + private Integer totalCount; + + @ApiModelProperty("页码") + private Integer pageNumber; + + @ApiModelProperty("流程详情信息") + private List result; + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java new file mode 100644 index 0000000..f288efc --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java @@ -0,0 +1,74 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.Attachment; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 附件Mapper接口 + * + * @author panchichun + * @date 2024-08-28 + */ +public interface AttachmentMapper +{ + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + public Attachment selectAttachmentById(String id); + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件集合 + */ + public List selectAttachmentList(Attachment attachment); + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int insertAttachment(Attachment attachment); + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int updateAttachment(Attachment attachment); + + /** + * 根据业务id更新附件 + * @param attachment + * @return + */ + public int updateAttachmentByBusinessId(Attachment attachment); + + /** + * 删除附件 + * + * @param id 附件主键 + * @return 结果 + */ + public int deleteAttachmentById(String id); + + /** + * 批量删除附件 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAttachmentByIds(String[] ids); + + public int deleteAttachmentByBusinessId(List list); + + int batchInsert(@Param("attachmentList") List attachmentList); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DiscussionsMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DiscussionsMapper.java new file mode 100644 index 0000000..14aa0e8 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DiscussionsMapper.java @@ -0,0 +1,62 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.Discussions; + +import java.util.List; + +/** + * 讨论Mapper接口 + * + * @author panchichun + * @date 2024-08-30 + */ +public interface DiscussionsMapper +{ + /** + * 查询讨论 + * + * @param id 讨论主键 + * @return 讨论 + */ + public Discussions selectDiscussionsById(String id); + + /** + * 查询讨论列表 + * + * @param discussions 讨论 + * @return 讨论集合 + */ + public List selectDiscussionsList(Discussions discussions); + + /** + * 新增讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + public int insertDiscussions(Discussions discussions); + + /** + * 修改讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + public int updateDiscussions(Discussions discussions); + + /** + * 删除讨论 + * + * @param id 讨论主键 + * @return 结果 + */ + public int deleteDiscussionsById(String id); + + /** + * 批量删除讨论 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDiscussionsByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java new file mode 100644 index 0000000..106574c --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java @@ -0,0 +1,62 @@ +package com.rzdata.web.mapper; + +import com.rzdata.common.core.domain.DocumentCategory; + +import java.util.List; + +/** + * 文档资源分类管理Mapper接口 + * + * @author spongepan + * @date 2024-08-27 + */ +public interface DocumentCategoryMapper +{ + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + public DocumentCategory selectDocumentCategoryById(String id); + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理集合 + */ + public List selectDocumentCategoryList(DocumentCategory documentCategory); + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int insertDocumentCategory(DocumentCategory documentCategory); + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int updateDocumentCategory(DocumentCategory documentCategory); + + /** + * 删除文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + public int deleteDocumentCategoryById(String id); + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDocumentCategoryByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java index 6fb44b1..f42ac8a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java @@ -3,6 +3,7 @@ package com.rzdata.web.mapper; import com.rzdata.web.domain.Document; import java.util.List; +import java.util.Map; /** * 【请填写功能名称】Mapper接口 @@ -53,10 +54,18 @@ public interface DocumentMapper public int deleteDocumentById(String id); /** - * 批量删除【请填写功能名称】 + * 逻辑删除 * - * @param ids 需要删除的数据主键集合 + * @param Document 需要删除的数据主键集合 * @return 结果 */ - public int deleteDocumentByIds(String[] ids); + public int isDeleteDocumentByIds(Document Document); + + public int updatePushDoc(Document doc); + + public int batchDeleteById(List list); + + List> countType(); + + List> countSource(); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java new file mode 100644 index 0000000..8950a2a --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java @@ -0,0 +1,67 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.DownloadCount; + +import java.util.List; + +/** + * 工具下载统计Mapper接口 + * + * @author 潘驰春 + * @date 2024-08-31 + */ +public interface DownloadCountMapper +{ + /** + * 查询工具下载统计 + * + * @param id 工具下载统计主键 + * @return 工具下载统计 + */ + public DownloadCount selectDownloadCountById(String id); + + /** + * 查询工具下载统计列表 + * + * @param downloadCount 工具下载统计 + * @return 工具下载统计集合 + */ + public List selectDownloadCountList(DownloadCount downloadCount); + + /** + * 新增工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + public int insertDownloadCount(DownloadCount downloadCount); + + /** + * 修改工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + public int updateDownloadCount(DownloadCount downloadCount); + + /** + * 删除工具下载统计 + * + * @param id 工具下载统计主键 + * @return 结果 + */ + public int deleteDownloadCountById(String id); + + /** + * 批量删除工具下载统计 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDownloadCountByIds(String[] ids); + + List userDownList(DownloadCount downloadCount); + + /** 文档下载统计 **/ + List selectDownloadDocCountList(DownloadCount downloadCount); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/RepliesMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/RepliesMapper.java new file mode 100644 index 0000000..87896b2 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/RepliesMapper.java @@ -0,0 +1,62 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.Replies; + +import java.util.List; + +/** + * 回复Mapper接口 + * + * @author panchichun + * @date 2024-08-30 + */ +public interface RepliesMapper +{ + /** + * 查询回复 + * + * @param id 回复主键 + * @return 回复 + */ + public Replies selectRepliesById(String id); + + /** + * 查询回复列表 + * + * @param replies 回复 + * @return 回复集合 + */ + public List selectRepliesList(Replies replies); + + /** + * 新增回复 + * + * @param replies 回复 + * @return 结果 + */ + public int insertReplies(Replies replies); + + /** + * 修改回复 + * + * @param replies 回复 + * @return 结果 + */ + public int updateReplies(Replies replies); + + /** + * 删除回复 + * + * @param id 回复主键 + * @return 结果 + */ + public int deleteRepliesById(String id); + + /** + * 批量删除回复 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRepliesByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java new file mode 100644 index 0000000..9b92df4 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java @@ -0,0 +1,69 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.ToolApply; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 使用申请Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface ToolApplyMapper +{ + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + public ToolApply selectToolApplyById(String id); + + ToolApply getInfoByBpmcId(String bpmcId); + + /** + * 查询使用申请列表 + * + * @param toolApply 使用申请 + * @return 使用申请集合 + */ + public List selectToolApplyList(ToolApply toolApply); + + /** + * 新增使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + public int insertToolApply(ToolApply toolApply); + + /** + * 修改使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + public int updateToolApply(ToolApply toolApply); + + /** + * 删除使用申请 + * + * @param id 使用申请主键 + * @return 结果 + */ + public int deleteToolApplyById(String id); + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteToolApplyByIds(String[] ids); + + int hasToolUseApply(@Param("toolId") String toolId, @Param("userId") String userId); + + int checkToolUseApply(@Param("toolId") String toolId, @Param("userId") String userId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java index ad95a89..38fd704 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java @@ -3,6 +3,7 @@ package com.rzdata.web.mapper; import com.rzdata.web.domain.Tool; import java.util.List; +import java.util.Map; /** * 工具信息Mapper接口 @@ -20,6 +21,10 @@ public interface ToolMapper */ public Tool selectToolByToolId(String toolId); + Tool getInfoByBpmcId(String bpmcId); + + int checkToolExist(Tool tool); + /** * 查询工具信息列表 * @@ -59,4 +64,8 @@ public interface ToolMapper * @return 结果 */ public int deleteToolByToolIds(String[] toolIds); + + List> countToolType(); + List> toolSource(); + List> recordStatus(); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java new file mode 100644 index 0000000..8aeaf1b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java @@ -0,0 +1,80 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.domain.TzMessage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * tool_relationMapper接口 + * + * @author ja + * @date 2024-09-08 + */ +public interface ToolRelationMapper +{ + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + public ToolRelation selectToolRelationById(String id); + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation集合 + */ + public List selectToolRelationList(ToolRelation toolRelation); + + public List selectRelationToolList(ToolRelation toolRelation); + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int insertToolRelation(ToolRelation toolRelation); + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int updateToolRelation(ToolRelation toolRelation); + + /** + * 删除tool_relation + * + * @param id tool_relation主键 + * @return 结果 + */ + public int deleteToolRelationById(String id); + + /** 根据资源id和目标id去删除 **/ + public int deleteResourceAndTarget(ToolRelation toolRelation); + + /** 根据目标id和源id去删除 **/ + public int deleteTargetAndResource(ToolRelation toolRelation); + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteToolRelationByIds(String[] ids); + + + /** + * 批量插入 + * @param toolRelationList + * @return + */ + public int batchInsert(@Param("toolRelationList") List toolRelationList); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java new file mode 100644 index 0000000..d272354 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java @@ -0,0 +1,82 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.TzMessage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 消息Mapper接口 + * + * @author ja + * @date 2024-08-31 + */ +public interface TzMessageMapper +{ + /** + * 查询消息 + * + * @param id 消息主键 + * @return 消息 + */ + public TzMessage selectTzMessageById(String id); + + /** + * 查询消息列表 + * + * @param tzMessage 消息 + * @return 消息集合 + */ + public List selectTzMessageList(TzMessage tzMessage); + + /** + * 新增消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + public int insertTzMessage(TzMessage tzMessage); + + /** + * 修改消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + public int updateTzMessage(TzMessage tzMessage); + + /** + * 删除消息 + * + * @param id 消息主键 + * @return 结果 + */ + public int deleteTzMessageById(String id); + + /** + * 批量删除消息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteTzMessageByIds(String[] ids); + + /** + * 更新所有的消息为已读 + * @param tzMessage + * @return + */ + public int updateAllMarkedRead(TzMessage tzMessage); + + /** + * 批量插入 + * @param tzMessageList + * @return + */ + public int batchInsert(@Param("tzMessageList") List tzMessageList); + + /** + * 消息中心未读消息数量查询 + * **/ + int selectTzMessageByUserCount(String userId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java new file mode 100644 index 0000000..bf8e8f6 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java @@ -0,0 +1,63 @@ +package com.rzdata.web.mapper; + +import java.util.List; +import com.rzdata.web.domain.UseApplyItem; + +/** + * 使用申请详情Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface UseApplyItemMapper +{ + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + public UseApplyItem selectUseApplyItemById(String id); + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情集合 + */ + public List selectUseApplyItemList(UseApplyItem useApplyItem); + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int insertUseApplyItem(UseApplyItem useApplyItem); + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int updateUseApplyItem(UseApplyItem useApplyItem); + + /** + * 删除使用申请详情 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + public int deleteUseApplyItemById(String id); + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteUseApplyItemByIds(String[] ids); + + int deleteByApplyId(String applyId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java new file mode 100644 index 0000000..f960455 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java @@ -0,0 +1,61 @@ +package com.rzdata.web.mapper; + +import java.util.List; +import com.rzdata.web.domain.WorkflowLog; + +/** + * 流程审批记录Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface WorkflowLogMapper +{ + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + public WorkflowLog selectWorkflowLogById(String id); + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录集合 + */ + public List selectWorkflowLogList(WorkflowLog workflowLog); + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int insertWorkflowLog(WorkflowLog workflowLog); + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int updateWorkflowLog(WorkflowLog workflowLog); + + /** + * 删除流程审批记录 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + public int deleteWorkflowLogById(String id); + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWorkflowLogByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java new file mode 100644 index 0000000..e7180da --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java @@ -0,0 +1,80 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.domain.FileOperationRequest; + +import java.util.List; + +/** + * 附件Service接口 + * + * @author panchichun + * @date 2024-08-28 + */ +public interface IAttachmentService +{ + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + public Attachment selectAttachmentById(String id); + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件集合 + */ + public List selectAttachmentList(Attachment attachment); + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int insertAttachment(Attachment attachment); + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int updateAttachment(Attachment attachment); + public int updateAttachmentByBusinessId(Attachment attachment); + + /** + * 批量删除附件 + * + * @param ids 需要删除的附件主键集合 + * @return 结果 + */ + public int deleteAttachmentByIds(String[] ids); + + /** + * 根据业务id批量删除 + * @param businessIds + * @return + */ + public int deleteAttachmentByBusinessId(List businessIds); + + /** + * 删除附件信息 + * + * @param id 附件主键 + * @return 结果 + */ + public int deleteAttachmentById(String id); + + /** + * 批量插入 + * @param batch + * @return + */ + public int batchInsert(List batch); + + byte[] loadFileAsBytes(Attachment attachment); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDiscussionsService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDiscussionsService.java new file mode 100644 index 0000000..40acbdf --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDiscussionsService.java @@ -0,0 +1,62 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.Discussions; + +import java.util.List; + +/** + * 讨论Service接口 + * + * @author panchichun + * @date 2024-08-30 + */ +public interface IDiscussionsService +{ + /** + * 查询讨论 + * + * @param id 讨论主键 + * @return 讨论 + */ + public Discussions selectDiscussionsById(String id); + + /** + * 查询讨论列表 + * + * @param discussions 讨论 + * @return 讨论集合 + */ + public List selectDiscussionsList(Discussions discussions); + + /** + * 新增讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + public int insertDiscussions(Discussions discussions); + + /** + * 修改讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + public int updateDiscussions(Discussions discussions); + + /** + * 批量删除讨论 + * + * @param ids 需要删除的讨论主键集合 + * @return 结果 + */ + public int deleteDiscussionsByIds(String[] ids); + + /** + * 删除讨论信息 + * + * @param id 讨论主键 + * @return 结果 + */ + public int deleteDiscussionsById(String id); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java new file mode 100644 index 0000000..b6493f9 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java @@ -0,0 +1,72 @@ +package com.rzdata.web.service; + +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.core.domain.DocumentCategory; + +import java.util.List; + +/** + * 文档资源分类管理Service接口 + * + * @author spongepan + * @date 2024-08-27 + */ +public interface IDocumentCategoryService +{ + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + public DocumentCategory selectDocumentCategoryById(String id); + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理集合 + */ + public List selectDocumentCategoryList(DocumentCategory documentCategory); + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int insertDocumentCategory(DocumentCategory documentCategory); + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int updateDocumentCategory(DocumentCategory documentCategory); + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的文档资源分类管理主键集合 + * @return 结果 + */ + public int deleteDocumentCategoryByIds(String[] ids); + + /** + * 删除文档资源分类管理信息 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + public int deleteDocumentCategoryById(String id); + + + /** + * 获取文档资源树 + * @param documentCategory + * @return + */ + List selectDocumentTreeList(DocumentCategory documentCategory); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java index c101578..352b298 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java @@ -3,6 +3,7 @@ package com.rzdata.web.service; import com.rzdata.web.domain.Document; import java.util.List; +import java.util.Map; /** * 【请填写功能名称】Service接口 @@ -28,6 +29,9 @@ public interface IDocumentService */ public List selectDocumentList(Document document); + + public List selectDocumentListAll(Document document); + /** * 新增【请填写功能名称】 * @@ -62,4 +66,17 @@ public interface IDocumentService * @return 结果 */ public int deleteDocumentById(String id); + + /** + * 发布文档 + * @param ids + * @return + */ + int pushDoc(String[] ids); + + public int batchDeleteById(List docIds); + + Map statistics(); + + List selectAllList(Document document); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java new file mode 100644 index 0000000..1a3be04 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java @@ -0,0 +1,77 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.DownloadCount; + +import java.util.List; + +/** + * 工具下载统计Service接口 + * + * @author 潘驰春 + * @date 2024-08-31 + */ +public interface IDownloadCountService +{ + /** + * 查询工具下载统计 + * + * @param id 工具下载统计主键 + * @return 工具下载统计 + */ + public DownloadCount selectDownloadCountById(String id); + + /** + * 查询工具下载统计列表 + * + * @param downloadCount 工具下载统计 + * @return 工具下载统计集合 + */ + public List selectDownloadCountList(DownloadCount downloadCount); + + /** + * 新增工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + public int insertDownloadCount(DownloadCount downloadCount); + + /** + * 修改工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + public int updateDownloadCount(DownloadCount downloadCount); + + /** + * 批量删除工具下载统计 + * + * @param ids 需要删除的工具下载统计主键集合 + * @return 结果 + */ + public int deleteDownloadCountByIds(String[] ids); + + /** + * 删除工具下载统计信息 + * + * @param id 工具下载统计主键 + * @return 结果 + */ + public int deleteDownloadCountById(String id); + + /** + * 用户下载列表 + * @param downloadCount + * @return + */ + List userDownList(DownloadCount downloadCount); + + /** + * 文档下载统计 + * @param downloadCount + * @return + */ + List selectDownloadDocCountList(DownloadCount downloadCount); + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IRepliesService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IRepliesService.java new file mode 100644 index 0000000..fe1dd09 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IRepliesService.java @@ -0,0 +1,62 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.Replies; + +import java.util.List; + +/** + * 回复Service接口 + * + * @author panchichun + * @date 2024-08-30 + */ +public interface IRepliesService +{ + /** + * 查询回复 + * + * @param id 回复主键 + * @return 回复 + */ + public Replies selectRepliesById(String id); + + /** + * 查询回复列表 + * + * @param replies 回复 + * @return 回复集合 + */ + public List selectRepliesList(Replies replies); + + /** + * 新增回复 + * + * @param replies 回复 + * @return 结果 + */ + public int insertReplies(Replies replies); + + /** + * 修改回复 + * + * @param replies 回复 + * @return 结果 + */ + public int updateReplies(Replies replies); + + /** + * 批量删除回复 + * + * @param ids 需要删除的回复主键集合 + * @return 结果 + */ + public int deleteRepliesByIds(String[] ids); + + /** + * 删除回复信息 + * + * @param id 回复主键 + * @return 结果 + */ + public int deleteRepliesById(String id); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java new file mode 100644 index 0000000..e1d91b5 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java @@ -0,0 +1,69 @@ +package com.rzdata.web.service; + +import java.util.List; +import com.rzdata.web.domain.ToolApply; + +/** + * 使用申请Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IToolApplyService +{ + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + public ToolApply selectToolApplyById(String id); + + ToolApply getInfoByBpmcId(String bpmcId); + + /** + * 查询使用申请列表 + * + * @param toolApply 使用申请 + * @return 使用申请集合 + */ + public List selectToolApplyList(ToolApply toolApply); + + /** + * 新增使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + public int insertToolApply(ToolApply toolApply); + + /** + * 修改使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + public int updateToolApply(ToolApply toolApply); + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的使用申请主键集合 + * @return 结果 + */ + public int deleteToolApplyByIds(String[] ids); + + /** + * 删除使用申请信息 + * + * @param id 使用申请主键 + * @return 结果 + */ + public int deleteToolApplyById(String id); + + boolean hasToolUseApply(String toolId, String userId); + + boolean checkToolUseApply(String toolId, String userId); + + void sendTzMessage(ToolApply toolApply); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java new file mode 100644 index 0000000..66bc29e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java @@ -0,0 +1,78 @@ +package com.rzdata.web.service; + +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.web.domain.ToolRelation; + +import java.util.List; + +/** + * tool_relationService接口 + * + * @author ja + * @date 2024-09-08 + */ +public interface IToolRelationService +{ + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + public ToolRelation selectToolRelationById(String id); + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation集合 + */ + public List selectToolRelationList(ToolRelation toolRelation); + public List selectRelationToolList(ToolRelation toolRelation); + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int insertToolRelation(ToolRelation toolRelation); + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int updateToolRelation(ToolRelation toolRelation); + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的tool_relation主键集合 + * @return 结果 + */ + public int deleteToolRelationByIds(String[] ids); + + /** + * 删除tool_relation信息 + * + * @param id tool_relation主键 + * @return 结果 + */ + public int deleteToolRelationById(String id); + + /** + * 获取数据树 + * @param toolRelation + * @return + */ + List getDataThree(ToolRelation toolRelation); + + public int batchInsert(List toolRelationList); + + /**根据资源id和目标id去删除 **/ + public int deleteResourceAndTarget(ToolRelation toolRelation); + /** 根据目标id和源id去删除 **/ + public int deleteTargetAndResource(ToolRelation toolRelation); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index d24b39f..37e223c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -3,6 +3,7 @@ package com.rzdata.web.service; import com.rzdata.web.domain.Tool; import java.util.List; +import java.util.Map; /** * 工具信息Service接口 @@ -20,6 +21,8 @@ public interface IToolService */ public Tool selectToolByToolId(String toolId); + Tool getInfoByBpmcId(String bpmcId); + /** * 查询工具信息列表 * @@ -28,6 +31,10 @@ public interface IToolService */ public List selectToolList(Tool tool); + + /** 查询所有数据 **/ + public List selectAllNotAuthList(Tool tool); + /** * 新增工具信息 * @@ -36,7 +43,15 @@ public interface IToolService */ public int insertTool(Tool tool); - public boolean checkToolExist(String toolCode, String toolRespDept); + /** + * 新增工具关联关系信息 + * + * @param tool 工具信息 + * @return 结果 + */ + public void saveToolRelation(Tool tool, Boolean isDel); + + public boolean checkToolExist(Tool tTool); /** * 修改工具信息 @@ -61,4 +76,28 @@ public interface IToolService * @return 结果 */ public int deleteToolByToolId(String toolId); + + /** + * 删除文档和附件 + * @param tool + */ + public void delFile(Tool tool); + + /** + * 新增文档和附件 + * @param tool + */ + public void addFileList(Tool tool); + + void recordToolApply(Tool tool); + + void updateDocPushStatus(Tool tTool); + + void sendTzMessage(Tool tTool); + + Map statistics(); + + List selectAllList(Tool tool); + + boolean isDownloadStatus(String userId, Tool tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java new file mode 100644 index 0000000..a1f5bf2 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java @@ -0,0 +1,74 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.TzMessage; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * 消息Service接口 + * + * @author ja + * @date 2024-08-31 + */ +public interface ITzMessageService +{ + /** + * 查询消息 + * + * @param id 消息主键 + * @return 消息 + */ + public TzMessage selectTzMessageById(String id); + + /** + * 查询消息列表 + * + * @param tzMessage 消息 + * @return 消息集合 + */ + public List selectTzMessageList(TzMessage tzMessage); + + /** + * 新增消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + public int insertTzMessage(TzMessage tzMessage); + + /** + * 修改消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + public int updateTzMessage(TzMessage tzMessage); + + /** + * 批量删除消息 + * + * @param ids 需要删除的消息主键集合 + * @return 结果 + */ + public int deleteTzMessageByIds(String[] ids); + + /** + * 删除消息信息 + * + * @param id 消息主键 + * @return 结果 + */ + public int deleteTzMessageById(String id); + + int allMarkedRead(TzMessage tzMessage); + + public int batchInsert(List tzMessageList); + + /** + * 未读消息数量 + * @param userId + * @return + */ + int selectTzMessageByUserCount(String userId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java new file mode 100644 index 0000000..5b431ca --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java @@ -0,0 +1,63 @@ +package com.rzdata.web.service; + +import java.util.List; +import com.rzdata.web.domain.UseApplyItem; + +/** + * 使用申请详情Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IUseApplyItemService +{ + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + public UseApplyItem selectUseApplyItemById(String id); + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情集合 + */ + public List selectUseApplyItemList(UseApplyItem useApplyItem); + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int insertUseApplyItem(UseApplyItem useApplyItem); + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int updateUseApplyItem(UseApplyItem useApplyItem); + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的使用申请详情主键集合 + * @return 结果 + */ + public int deleteUseApplyItemByIds(String[] ids); + + /** + * 删除使用申请详情信息 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + public int deleteUseApplyItemById(String id); + + void updateItemList(List list, String applyId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java new file mode 100644 index 0000000..660d19d --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java @@ -0,0 +1,66 @@ +package com.rzdata.web.service; + +import java.util.List; + +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; + +/** + * 流程审批记录Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IWorkflowLogService +{ + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + public WorkflowLog selectWorkflowLogById(String id); + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录集合 + */ + public List selectWorkflowLogList(WorkflowLog workflowLog); + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int insertWorkflowLog(WorkflowLog workflowLog); + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int updateWorkflowLog(WorkflowLog workflowLog); + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的流程审批记录主键集合 + * @return 结果 + */ + public int deleteWorkflowLogByIds(String[] ids); + + /** + * 删除流程审批记录信息 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + public int deleteWorkflowLogById(String id); + + void saveProcLog(BpmClientInputModelBo bpmClientInputModelBo, ProcessInstanceModel processInst, String action); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java new file mode 100644 index 0000000..d708952 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java @@ -0,0 +1,826 @@ +package com.rzdata.web.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.blueland.bpmclient.BpmClient; +import com.blueland.bpmclient.model.*; +import com.google.common.collect.Maps; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.system.service.ISysConfigService; +import com.rzdata.system.service.ISysDeptService; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.core.config.BpmcConfig; +import com.rzdata.web.domain.WorkFlowInfo; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.domain.vo.WorkFlowPageVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service("workflowService") +public class WorkflowService { + private static int FLOW_STATUS_ERROR = 0;// 异常 + private static int FLOW_STATUS_UNREAD = 1;// 待办 + private static int FLOW_STATUS_READ = 2;// 已办 + private static int FLOW_STATUS_FINISH = 3;// 办结 + private static String END_ACT_NAME = "结束"; + /** + * 是否从通讯录选择下一步人员 + */ + private static String SHOW_TXL_SELECT = "show_txl_select"; + @Autowired + private BpmcConfig bpmcConfig; + + @Autowired + ISysConfigService configService; + + @Autowired + ISysDeptService sysDeptService; + + @Autowired + ISysUserService sysUserService; + + @Autowired + IWorkflowLogService iWorkflowLogService; + + @Autowired + private ITzMessageService tzMessageService; + + private final static String CUR_ACT_DEF_KEY = "curActDef"; + private final static String CUR_ACT_INST_KEY = "curActInst"; + private final static String PROC_INST_KEY = "procInst"; + private final static String PROC_DEF_KEY = "procDef"; + private final static String ACT_OPPOWERS = "actOppowers";// 下一环节显示按钮 + + public enum ENUM_ACTION { + /** + * // 暂存 + */ + save, + /** + * // 提交 + */ + submit, + /** + * // 作废 + */ + cancel, + /** + * // 转派 + */ + transfer, + /** + * // 退回拟稿人 + */ + backtostart, + /** + * // 退回上一步 + */ + backtoprev, + /** + * // 撤回 + */ + back, + /** + * // 驳回 + */ + reject, + } + + ; + + + BpmClient getBpmClient() { + WorkflowConfig workflowConfig = new WorkflowConfig(); + workflowConfig.setTenantId(bpmcConfig.getTenantId()); + workflowConfig.setBaseURL(bpmcConfig.getServiceUrl()); + BpmClient bpmClient = new BpmClient(workflowConfig); + return bpmClient; + } + + + /** + * 暂存流程 + * + * @param bpmClientInputModelBo + * @param businessId 业务id + * @return + * @throws Exception + */ + public ProcessInstanceModel saveExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.save.name()); + } + + /** + * 下一步流程 + * + * @param bpmClientInputModelBo + * @param businessId 业务id + * @return + * @throws Exception + */ + public ProcessInstanceModel nextExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.submit.name()); + } + + public ProcessInstanceModel cancelExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.cancel.name()); + } + + /** + * 处理流程实例 + * + * @param action 处理操作类型 + * @return + */ + public ProcessInstanceModel processProcInst(BpmClientInputModelBo bpmClientInputModelBo, String action) + throws Exception { + ProcessInstanceModel processInst = new ProcessInstanceModel(); + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + // 待办URL + String url = this.bpmcConfig.getUniteWorkUrl()+ "?businessKey=" + bpmClientInputModel.getWf_businessKey()+ "&type=" + bpmClientInputModelBo.getType(); + bpmClientInputModel.setWf_uniteworkUrl(url); + BpmClient bpmClient = getBpmClient(); + switch (ENUM_ACTION.valueOf(action)) { + case cancel:// 作废 + processInst = bpmClient.cancelProcInst(bpmClientInputModel); + break; + case backtostart:// 返回拟稿人 + processInst = bpmClient.callBackStart(bpmClientInputModel); + bpmClientInputModel.setWf_nextActDefName(processInst.getNextActInsts().get(0).getActDefName()); + break; + case backtoprev:// 返回上一步 + processInst = bpmClient.backToPrev(bpmClientInputModel); + break; + case back:// 撤回 + processInst = bpmClient.callBack(bpmClientInputModel); + break; + case transfer:// 转派 + processInst = bpmClient.transfer(bpmClientInputModel); + break; + case reject:// 驳回 + processInst = bpmClient.rejectFlow(bpmClientInputModel); + break; + case save: + processInst = bpmClient.saveFlowInstance(bpmClientInputModel); + break; + case submit: + processInst = bpmClient.submitFlowInstance(bpmClientInputModel); + break; + default: + break; + } + if (processInst!=null&& StringUtils.isNotEmpty(processInst.getProcInstId())) { + iWorkflowLogService.saveProcLog(bpmClientInputModelBo, processInst,action); + } + return processInst; + } + + /** + * 获取流程实例完整信息,包含流程实例、当前环节实例、流程定义等信息 + * + * @return + */ + public HashMap getFLowInfo(SearchQuery searchQuery) throws Exception { + // TODO Auto-generated method stub + HashMap returnDataMap = new HashMap<>(); + BpmClient bpmClient = getBpmClient(); + JSONObject jo = new JSONObject(); + try { + jo = getFlowInfo(searchQuery); + if (jo == null) { + return null; + } + if (!jo.containsKey(CUR_ACT_DEF_KEY) || !jo.containsKey(CUR_ACT_INST_KEY) || !jo.containsKey(PROC_INST_KEY) + || !jo.containsKey(PROC_DEF_KEY)) { + throw new Exception("返回的数据不完整"); + } + returnDataMap.put(CUR_ACT_DEF_KEY, jo.getJSONObject(CUR_ACT_DEF_KEY)); + returnDataMap.put(CUR_ACT_INST_KEY, jo.getJSONObject(CUR_ACT_INST_KEY)); + returnDataMap.put(PROC_INST_KEY, jo.getJSONObject(PROC_INST_KEY)); + returnDataMap.put(PROC_DEF_KEY, jo.getJSONObject(PROC_DEF_KEY)); + returnDataMap.put(ACT_OPPOWERS, jo.getJSONArray(ACT_OPPOWERS)); + /** + * JSONArray ja_log = jo.getJSONArray("procLogs"); ArrayList> list_log = Lists.newArrayList(); for (int i = 0; i < ja_log.size(); + * i++) { HashMap commentMap = Maps.newHashMap(); + * commentMap.put("actDefName", + * ja_log.getJSONObject(i).getString("prevActDefName")); + * commentMap.put("commentTime", ja_log.getJSONObject(i).get("startTime")); + * commentMap.put("actDefId", ja_log.getJSONObject(i).get("prevActDefId")); + * String orgId = ja_log.getJSONObject(i).getString("sendOrgId"); PubOrgEntity + * deptEntry = pubOrgDao.get(orgId); String userName = + * String.format("(%s-%s)%s", deptEntry.getCompanyName(), + * deptEntry.getOrgName(), ja_log.getJSONObject(i).getString("sendUserName")); + * commentMap.put("commentUserName", userName); commentMap.put("userName", + * ja_log.getJSONObject(i).getString("sendUserName")); + * commentMap.put("commentFullMessage", + * ja_log.getJSONObject(i).get("commentFullMessage")); list_log.add(commentMap); + * } returnDataMap.put("procLogs", list_log); + */ + // returnDataMap.put("transferLog", + // projectCommentEntryMapper.findCommentListByParams(params));//获取流程实例转派审批日志 + } catch (Exception ex) { + log.error("getFLowInfo==============" + JSON.toJSONString(searchQuery), ex); + } + return returnDataMap; + } + + JSONObject getFlowInfo(SearchQuery searchQuery) { + String returnData = ""; + BpmClient bpmClient = getBpmClient(); + try { + switch (searchQuery.getStatus()) { + case 1: + returnData = bpmClient.getToDoFlowInfo(searchQuery); + break; + case 2: + returnData = bpmClient.getYibanFlowInfo(searchQuery); + break; + case 3: + returnData = bpmClient.getBanJieFlowInfo(searchQuery); + break; + default: + break; + } + return JSON.parseObject(returnData); + } catch (Exception ex) { + log.error("=======流程平台返回信息:" + JSON.toJSONString(searchQuery), ex); + } + return null; + } + + + /** + * 获取流程实例日志 + * + * @param bpmClientInputModel + * @return + */ + public HashMap getProcInstLog(BpmClientInputModel bpmClientInputModel) { + HashMap returnDataMap = new HashMap<>(); + List> procLog; + BpmClient bpmClient = getBpmClient(); + try { + if (StrUtil.isNotBlank(bpmClientInputModel.getWf_procInstId())) { + String returnData = bpmClient.getProcInstLog(bpmClientInputModel.getWf_procInstId()); + Map procInstLog = JSONObject.parseObject(returnData, Map.class); + if (null != procInstLog && procInstLog.containsKey("procLogs")) { + // 获取日志实例 + procLog = (List>) procInstLog.get("procLogs"); + procLog = dealEchoMap(procLog); + JSONObject jo = JSON.parseObject(returnData); + returnDataMap.put("procInst", jo.getJSONObject("procInst")); + returnDataMap.put("procLogs", procLog); + } + } + } catch (Exception ex) { + log.error("getProcInstLog==============" + JSON.toJSONString(bpmClientInputModel), ex); + } + return returnDataMap; + } + + /** + * 去掉相关部门重复数据 + * + * @param procLog + * @return + */ + private List> dealEchoMap(List> procLog) { + List> newList = new ArrayList>(); + // 去重 + for (int i = 0; i < procLog.size(); i++) { + Map oldMap = procLog.get(i); + if (newList.size() > 0) { + boolean isContain = false; + for (int j = 0; j < newList.size(); j++) { + Map newMap = newList.get(j); + if (newMap.get("prevActInstId").equals(oldMap.get("prevActInstId"))) { + for (String k : oldMap.keySet()) { + newMap.put(k, oldMap.get(k)); + } + isContain = true; + break; + } + } + + if (!isContain) { + newList.add(oldMap); + } + + } else { + newList.add(oldMap); + } + } + return newList; + + } + + /** + * 查询待办列表 + * + * @param searchQuery + * @return + */ + public PageResultModel findRecordList(SearchQuery searchQuery) { + // TODO Auto-generated method stub + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getRecordList(searchQuery); + } catch (Exception ex) { + log.error("findRecordList===" + JSON.toJSONString(searchQuery), ex); + } + return null; + } + + /** + * 查询待办列表 + * + * @param searchQuery + * @return + */ + public WorkFlowPageVo findToDoList(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + WorkFlowPageVo pageVo = new WorkFlowPageVo(); + try { + // 所属流程平台租户 + searchQuery.setTenantId(bpmcConfig.getTenantId()); + searchQuery.setRecUserId(SecurityUtils.getUsername()); + + PageResultModel pageResultModel = bpmClient.getRecordList(searchQuery); + pageVo.setPageSize(pageResultModel.getPageSize()); + pageVo.setPageNumber(pageResultModel.getThisPageNumber()); + pageVo.setTotalCount(pageResultModel.getTotalCount()); + List workFlowInfos = JSONUtil.toList(JSONUtil.toJsonStr(pageResultModel.getResult()), WorkFlowInfo.class); + for(WorkFlowInfo workFlowInfo : workFlowInfos){ + SysUser startSysUser = sysUserService.selectUserByUserName(workFlowInfo.getStartUserId()); + if(null != startSysUser){ + workFlowInfo.setStartUserName(startSysUser.getUserName()); + } + SysUser sendSysUser = sysUserService.selectUserByUserName(workFlowInfo.getSendUserId()); + if(null != sendSysUser){ + workFlowInfo.setSendUserName(sendSysUser.getUserName()); + } + } + pageVo.setResult(workFlowInfos); + return pageVo; + } catch (Exception ex) { + log.error("findRecordList===" + JSON.toJSONString(searchQuery), ex); + } + return pageVo; + } + + /** + * 获取下一环节定义 + * + * @param searchQuery + * @return + */ + public List getNextActs(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + List actDefList = Lists.newArrayList(); + try { + List nextacts = bpmClient.getNextacts(searchQuery); + + for (ActivityDefinitionModel activityDefinitionModel : nextacts) { + activityDefinitionModel.setShowTxlSelect("N"); + // 流程平台如果有输出线名称 返回当前环节名称自动为输出线名称 由于其他业务系统已经使用 该处做特殊处理 (不读输出线名称) + /* + * if (StrUtil.isNotBlank(activityDefinitionModel.getDescription())) { + * // 描述名称 为流程平台返回的当前环节名称 + * activityDefinitionModel.setActDefName(activityDefinitionModel.getDescription( + * )); + * } + */ + if (END_ACT_NAME.equalsIgnoreCase(activityDefinitionModel.getActDefName())) { + actDefList.add(activityDefinitionModel); + continue; + } + List extAttrlist = bpmClient.getActDefExtAttrs(searchQuery.getProcDefId(), + activityDefinitionModel.getActDefId()); + for (ExtAttributeModel extMap : extAttrlist) { + // 根据流程环节自定义标签判断是否显示“通讯录选择人员”按钮 + if (SHOW_TXL_SELECT.equalsIgnoreCase(extMap.getObjKey().trim())) { + activityDefinitionModel.setShowTxlSelect(extMap.getObjValue()); + break; + } + } + actDefList.add(activityDefinitionModel); + } + + } catch (Exception e) { + log.error("获取下一步环节定义列表失败,参数:" + JSON.toJSONString(searchQuery), e); + } + + return actDefList; + } + + /** + * 获取下一环节用户信息 + * + * @param searchQuery + * @return + */ + public List getNextActUsers(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + List nextactUsers = Lists.newArrayList(); + try { + nextactUsers = bpmClient.getNextactUsers(searchQuery); + } catch (Exception e) { + log.error("获取下一步环节用户列表失败,参数:" + JSON.toJSONString(searchQuery), e); + } + return nextactUsers; + } + + + public List getExtAttributeModel(String procDefId, String actDefId) { + BpmClient bpmClient = getBpmClient(); + List list = Lists.newArrayList(); + try { + list = bpmClient.getActDefExtAttrs(procDefId, actDefId); + } catch (Exception e) { + log.error("获取扩展属性失败", e); + } + return list; + } + + /** + * 判断下一环节是否支持自动提交 + * + * @param searchQuery + * @return + */ + public String checkAutoCommit(SearchQuery searchQuery) throws Exception { + + BpmClient bpmClient = getBpmClient(); + + try { + String actDefId = ""; + String procDefId = ""; + // 待办提交 + if (StrUtil.isNotBlank(searchQuery.getCurActInstId())) { + ActivitiInstanceModel activitiInstanceModel = bpmClient + .getActivityInstance(searchQuery.getCurActInstId()); + actDefId = activitiInstanceModel.getActDefId(); + procDefId = activitiInstanceModel.getProcDefId(); + } else { // 新建提交 + ActivityDefinitionModel activityDefinitionModel = bpmClient.getActDef(searchQuery.getProcDefId(), + searchQuery.getCurActDefId()); + actDefId = activityDefinitionModel.getActDefId(); + procDefId = activityDefinitionModel.getProcDefId(); + } + List netxtActDefList = bpmClient.getNextacts(searchQuery); + if (netxtActDefList != null && netxtActDefList.size() == 1) { + ActivityDefinitionModel netxtActDef = netxtActDefList.get(0); + ActivityDefinitionModel actDef = bpmClient.getActDef(procDefId, actDefId); + if (("auto".equalsIgnoreCase(actDef.getJumpType()) || netxtActDef.isNotSelectReceiver() + || "endEvent".equals(netxtActDef.getActDefType()))) { + return netxtActDef.getActDefId(); + } + } + } catch (Exception ex) { + log.error("checkAutoCommit==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + + return ""; + } + + /** + * 获取第一个环节定义信息 + * + * @param procDefId + * @return + */ + public ActivityDefinitionModel getStartactDef(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getStartactDef(procDefId); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getStartactDef==" + procDefId, ex); + throw new Exception(ex); + } + } + + /** + * 获取环节定义信息 + * @param procDefId 流程定义Id + * @param actDefId 环节定义Id + * @return + * @throws Exception + */ + public ActivityDefinitionModel getActDef(String procDefId,String actDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getActDef(procDefId, actDefId); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getActDef==" + procDefId+"===="+actDefId, ex); + throw new Exception(ex); + } + } + + /** + * 获取环节定义信息 + * @param procDefId 流程定义Id + * @return + * @throws Exception + */ + public List getActDef(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getActDef(procDefId); + } catch (Exception ex) { + log.error("getActDef==" + procDefId, ex); + throw new Exception(ex); + } + } + + /** + * 根据流程定义Key获取流程定义信息 + * + * @param procDefKey + * @return + */ + public ProcessDefinitionModel getProcessDefinitionModel(String procDefKey) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getProcessDef(procDefKey); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getProcessDefinitionModel==" + procDefKey, ex); + throw new Exception(ex); + } + } + + public String getHistasklogurl(String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + Map param = bpmClient.getHistoryUrl(procInstId); + return param.get("url"); + } catch (Exception ex) { + log.error("getHistasklogurl==" + ex); + throw new Exception(ex); + } + } + + public String getImageUrl(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + Map param = bpmClient.getImageUrl(procDefId); + return param.get("url"); + } catch (Exception ex) { + log.error("getImageUrl==" + ex); + throw new Exception(ex); + } + } + + /** + * 查询流程实例状态 + * + * @param procInstId + * @param curActInstId + * @return + */ + public int getFlowStatus(String procInstId, String curActInstId) { + BpmClient bpmClient = getBpmClient(); + try { + ActivitiInstanceModel actInstMap = bpmClient.getActivityInstance(curActInstId); + if (actInstMap != null && actInstMap.getFinishTime() != null && actInstMap.getFinishTime().length() > 0) { + ProcessInstanceModel procInst = bpmClient.getProcessInstById(procInstId); + if (procInst != null && procInst.getFinishTime() != null) { + return FLOW_STATUS_FINISH; + } + return FLOW_STATUS_READ; + } + return FLOW_STATUS_UNREAD; + } catch (Exception ex) { + log.error("getFlowStatus===procInstId=" + procInstId + ",curActInstId==" + curActInstId, ex); + } + return FLOW_STATUS_ERROR; + } + + /** + * 查询流程实例状态,并判断当前用户是否有权限打开待办 + * + * @param procInstId + * @param curActInstId + * @param userId + * @return + */ + public ProcessInstanceModel getProcessInstance(String procInstId, String curActInstId, + String userId) throws Exception { + BpmClient bpmClient = getBpmClient(); + ProcessInstanceModel procInst = null; + ActivitiInstanceModel actInst = bpmClient.getActivityInstance(curActInstId); + if (actInst == null || !StrUtil.equals(actInst.getReceiverUserId(), userId)) { + throw new Exception("没有找到环节实例"); + } + procInst = bpmClient.getProcessInstById(procInstId); + procInst.setCurrentActivitiInstance(actInst); + Map formUrlMap = getFlowActForm(procInst.getProcDefId(), actInst.getActDefId()); + if (formUrlMap.containsKey("formUrl")) { + procInst.setFormUrl(formUrlMap.get("formUrl")); + } + procInst.setProcInstState(FLOW_STATUS_ERROR + ""); + if (actInst.getFinishTime() == null || actInst.getFinishTime().length() == 0) { + procInst.setProcInstState(FLOW_STATUS_UNREAD + ""); + return procInst; + } + if (procInst.getFinishTime() != null) { + procInst.setProcInstState(FLOW_STATUS_FINISH + ""); + } else { + procInst.setProcInstState(FLOW_STATUS_READ + ""); + } + return procInst; + } + + public Map getFlowActForm(String procDefId, String actDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + Map result = new HashMap<>(); + try { + ActivityDefinitionModel act = bpmClient.getActDef(procDefId, actDefId); + result.put("formUrl", act.getPageUrl()); + result.put("appFormUrl", act.getMportalUrl()); + } catch (Exception ex) { + log.error("getFlowActForm==" + ex); + throw new Exception(ex); + } + return result; + } + + public Map getProcessInstById(String procInstId) { + BpmClient bpmClient = getBpmClient(); + ProcessInstanceModel procInst = null; + Map result = new HashMap<>(); + try { + procInst = bpmClient.getProcessInstById(procInstId); + result = BeanUtil.beanToMap(procInst); + Map curActInfo = this.getCurActInfo(procInstId); + result.put("curActInstId", curActInfo.get("curActInstId").toString()); + result.put("curActDefId", curActInfo.get("curActDefId").toString()); + result.put("curActDefName", curActInfo.get("curActDefName").toString()); + result.put("prevActDefId", curActInfo.get("prevActDefId").toString()); + + result.put("sendUserId", curActInfo.get("receiveUserId").toString()); + result.put("sendUserOrgId", curActInfo.get("receiveOrgId").toString()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; + } + + private Map getCurActInfo(String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + Map result = new HashMap(); + // 根据流程实例id获取流程实例日志 + String logStr = bpmClient.getProcInstLog(procInstId); + List> procLog = new ArrayList>(); + Map procInstLog = JSONObject.parseObject(logStr, Map.class); + if (null != procInstLog && procInstLog.containsKey("procLogs")) { + // 获取日志实例 + procLog = (List>) procInstLog.get("procLogs"); + for (Map map : procLog) { + if (null == map.get("endTime")) { + if ("pms_zhsqlc-03".equals(map.get("prevActDefId"))) { + result = map; + } else { + result = map; + break; + } + } + } + } + return result; + } + + public Map procInstInfoAndStatus(String procInstId) { + Map procInst = this.getProcessInstById(procInstId); + int status = 0; + try { + status = this.getFlowStatus(procInstId, procInst.get("curActInstId").toString()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + procInst.put("status", status + ""); + return procInst; + } + + public Map checkAutoJump(SearchQuery searchQuery) throws Exception { + BpmClient bpmClient = getBpmClient(); + ActivityDefinitionModel actDef = new ActivityDefinitionModel(); + try { + String actDefId = ""; + String procDefId = ""; + // 待办提交 + if (StrUtil.isNotBlank(searchQuery.getCurActInstId())) { + ActivitiInstanceModel activitiInstanceModel = bpmClient + .getActivityInstance(searchQuery.getCurActInstId()); + actDefId = activitiInstanceModel.getActDefId(); + procDefId = activitiInstanceModel.getProcDefId(); + actDef = bpmClient.getActDef(procDefId, actDefId); + } else { // 新建提交 + actDef = bpmClient.getActDef(searchQuery.getProcDefId(), searchQuery.getCurActDefId()); + } + Map result = new HashMap(); + if ("auto".equalsIgnoreCase(actDef.getJumpType())) { + result.put("flag", true); + } else { + result.put("flag", false); + } + return result; + } catch (Exception ex) { + log.error("checkAutoCommit==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + } + + public Map getRecordCount(SearchQuery searchQuery) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getRecordCount(searchQuery); + } catch (Exception ex) { + log.error("getRecordCount==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + } + + /** + * 根据父流程实例id获取该流程的子流程,从而处理子流程。 + * + * @param procInstId 父流程实例id + * @return + * @throws Exception + */ + public List> getSubprocess(String status, String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getSubprocess(status, procInstId); + } catch (Exception ex) { + log.error("getSubprocess==" + procInstId, ex); + throw new Exception(ex); + } + } + + public boolean isYiBanTaskByTopId(String procInstId, String sourceActId, String targerActId) throws Exception { + return getBpmClient().isYiBanTaskByTopId(procInstId,sourceActId,targerActId); + } + + public boolean isYiBanTask(String procInstId, String sourceActId, String targerActId) throws Exception { + return getBpmClient().isYiBanTask(procInstId,sourceActId,targerActId); + } + + + public JSONArray getRecordbyPorcInstId(String porcInstId) throws Exception { + WorkflowConfig workflowConfig = new WorkflowConfig(); + String url = String.format("%s/%s?procInstId=%s", bpmcConfig.getServiceUrl(), workflowConfig.getRecordQueryUrl(), porcInstId); + return JSONArray.parseArray(getBpmClient().get(url)); + } + + public Map selectUserMsgCount(SysUser user) { + Map resultMap = Maps.newHashMap(); + int totalMsgCount = 0; + int msgCount = 0; + int taskCount = 0; + try { + msgCount = tzMessageService.selectTzMessageByUserCount(String.valueOf(user.getUserId())); + totalMsgCount = msgCount; + resultMap.put("msgCount", msgCount); + } catch (Exception e){ + log.error("查询消息中心未读消息数量异常", e); + } + try { + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(user.getUserName()); + searchQuery.setStatus(1); + Map resultRecordCount = getRecordCount(searchQuery); + taskCount = resultRecordCount.get("count"); + totalMsgCount += taskCount; + } catch (Exception e){ + log.error("查询待办消息数量异常", e); + } + resultMap.put("msgCount", msgCount); + resultMap.put("taskCount", taskCount); + resultMap.put("totalMsgCount", totalMsgCount); + return resultMap; + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java new file mode 100644 index 0000000..3fb63ad --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java @@ -0,0 +1,192 @@ +package com.rzdata.web.service.impl; + +import com.documents4j.api.DocumentType; +import com.documents4j.api.IConverter; +import com.documents4j.job.LocalConverter; +import com.rzdata.common.config.JaConfig; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.exception.ServiceException; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.mapper.AttachmentMapper; +import com.rzdata.web.service.IAttachmentService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.util.List; + +/** + * 附件Service业务层处理 + * + * @author panchichun + * @date 2024-08-28 + */ +@Slf4j +@Service +public class AttachmentServiceImpl implements IAttachmentService +{ + @Autowired + private AttachmentMapper attachmentMapper; + + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + @Override + public Attachment selectAttachmentById(String id) + { + return attachmentMapper.selectAttachmentById(id); + } + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件 + */ + @Override + public List selectAttachmentList(Attachment attachment) + { + return attachmentMapper.selectAttachmentList(attachment); + } + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int insertAttachment(Attachment attachment) + { + return attachmentMapper.insertAttachment(attachment); + } + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int updateAttachment(Attachment attachment) + { + return attachmentMapper.updateAttachment(attachment); + } + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int updateAttachmentByBusinessId(Attachment attachment) + { + return attachmentMapper.updateAttachmentByBusinessId(attachment); + } + + /** + * 批量删除附件 + * + * @param ids 需要删除的附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentByIds(String[] ids) + { + return attachmentMapper.deleteAttachmentByIds(ids); + } + + /** + * 批量删除附件 + * + * @param businessIds 需要删除的附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentByBusinessId(List businessIds) + { + return attachmentMapper.deleteAttachmentByBusinessId(businessIds); + } + + /** + * 删除附件信息 + * + * @param id 附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentById(String id) + { + return attachmentMapper.deleteAttachmentById(id); + } + + @Override + public int batchInsert(List batch) { + return attachmentMapper.batchInsert(batch); + } + + @Override + public byte[] loadFileAsBytes(Attachment attachment) { + // 本地资源路径 + String localPath = JaConfig.getProfile(); + // 全路径 + String uploadPath = localPath + StringUtils.substringAfter(attachment.getFilePath(), Constants.RESOURCE_PREFIX); + String fileName = attachment.getFileOldName(); + File file = null; + + if (fileName.endsWith(Constants.FILE_TYPE_DOC)) { + //获取doc名称转换为pdf名称 + String fileNameDocx = fileName.substring(0, fileName.lastIndexOf(Constants.SYMBOL_POINT)); + fileNameDocx += Constants.FILE_TYPE_PDF; + //获取转换的路径 + String pathDocx = uploadPath.substring(0, uploadPath.lastIndexOf('/') + 1) + fileNameDocx; + file = new File(pathDocx); + if (!file.exists()) { + convertDocToPdf(uploadPath,pathDocx); + // 再次检查转换后的文件是否存在 + if (!file.exists()) { + throw new ServiceException("转换后的文件不存在"); + } + } + }else{ + file = new File(uploadPath); + } + + byte[] result = null; + try (FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);) { + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + result = bos.toByteArray(); + } catch (Exception ex) { + log.error("AttachmentServiceImpl-->loadFileAsBytes----ex###", ex); + } + return result; + } + + /** + * word文件doc格式转换为pdf文件 + * @param docPath + * @param pdfPath + */ + public static void convertDocToPdf(String docPath, String pdfPath){ + File file = new File(docPath); + File outputFile = new File(pdfPath); + try (InputStream docxInputStream = new FileInputStream(file); + OutputStream outputStream = new FileOutputStream(outputFile)) { + IConverter converter = LocalConverter.builder().build(); + converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); + } catch (IOException e) { + log.error("AttachmentServiceImpl-->convertDocToPdf----e###", e); + throw new ServiceException("转换异常"); + } + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java new file mode 100644 index 0000000..ddef10c --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java @@ -0,0 +1,147 @@ +package com.rzdata.web.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.StrUtil; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.Discussions; +import com.rzdata.web.domain.Replies; +import com.rzdata.web.mapper.DiscussionsMapper; +import com.rzdata.web.service.IDiscussionsService; +import com.rzdata.web.service.IRepliesService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 讨论Service业务层处理 + * + * @author panchichun + * @date 2024-08-30 + */ +@Service +public class DiscussionsServiceImpl implements IDiscussionsService +{ + @Autowired + private DiscussionsMapper discussionsMapper; + + @Autowired + private Snowflake snowflake; + + @Autowired + private IRepliesService iRepliesService; + + /** + * 查询讨论 + * + * @param id 讨论主键 + * @return 讨论 + */ + @Override + public Discussions selectDiscussionsById(String id) + { + return discussionsMapper.selectDiscussionsById(id); + } + + /** + * 查询讨论列表 + * + * @param discussions 讨论 + * @return 讨论 + */ + @Override + public List selectDiscussionsList(Discussions discussions) + { + List discussionsList = discussionsMapper.selectDiscussionsList(discussions); + //组装回复对象数据 + assembleReplies(discussionsList); + return discussionsList; + } + + /** + * 组装回复对象数据 + * @param discussionsList + */ + private void assembleReplies(List discussionsList) { + List idList = discussionsList.stream().map(Discussions::getId).collect(Collectors.toList()); + Replies replies = new Replies(); + replies.setDiscussionIdList(idList); + List repliesList = iRepliesService.selectRepliesList(replies); + if(CollUtil.isNotEmpty(repliesList)){ + for (Discussions disItem : discussionsList) { + List addList = new ArrayList<>(); + for (Replies repItem : repliesList) { + if(repItem.getDiscussionId().equals(disItem.getId())){ + if(StrUtil.isNotEmpty(repItem.getRepId())){ + Replies repliesTarget = iRepliesService.selectRepliesById(repItem.getRepId()); + repItem.setRepTargetNickName(repliesTarget.getNickName()); + } + addList.add(repItem); + } + } + if(CollUtil.isNotEmpty(addList)){ + disItem.setRepliesList(addList); + } + } + } + } + + /** + * 新增讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + @Override + public int insertDiscussions(Discussions discussions) + { + discussions.setId(String.valueOf(snowflake.nextId())); + discussions.setCreateTime(DateUtils.getNowDate()); + discussions.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + discussions.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + discussions.setIsDelete(Constants.STR_ZERO); + return discussionsMapper.insertDiscussions(discussions); + } + + /** + * 修改讨论 + * + * @param discussions 讨论 + * @return 结果 + */ + @Override + public int updateDiscussions(Discussions discussions) + { + discussions.setUpdateTime(DateUtils.getNowDate()); + return discussionsMapper.updateDiscussions(discussions); + } + + /** + * 批量删除讨论 + * + * @param ids 需要删除的讨论主键 + * @return 结果 + */ + @Override + public int deleteDiscussionsByIds(String[] ids) + { + return discussionsMapper.deleteDiscussionsByIds(ids); + } + + /** + * 删除讨论信息 + * + * @param id 讨论主键 + * @return 结果 + */ + @Override + public int deleteDiscussionsById(String id) + { + return discussionsMapper.deleteDiscussionsById(id); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java new file mode 100644 index 0000000..f2ecb40 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java @@ -0,0 +1,184 @@ +package com.rzdata.web.service.impl; + +import cn.hutool.core.lang.Snowflake; +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.common.core.domain.DocumentCategory; +import com.rzdata.web.mapper.DocumentCategoryMapper; +import com.rzdata.web.service.IDocumentCategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 文档资源分类管理Service业务层处理 + * + * @author spongepan + * @date 2024-08-27 + */ +@Service +public class DocumentCategoryServiceImpl implements IDocumentCategoryService +{ + @Autowired + private DocumentCategoryMapper documentCategoryMapper; + + @Autowired + private Snowflake snowflake; + + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + @Override + public DocumentCategory selectDocumentCategoryById(String id) + { + return documentCategoryMapper.selectDocumentCategoryById(id); + } + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理 + */ + @Override + public List selectDocumentCategoryList(DocumentCategory documentCategory) + { + return documentCategoryMapper.selectDocumentCategoryList(documentCategory); + } + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + @Override + public int insertDocumentCategory(DocumentCategory documentCategory) + { + documentCategory.setId(String.valueOf(snowflake.nextId())); + documentCategory.setCreateTime(DateUtils.getNowDate()); + documentCategory.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + documentCategory.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + return documentCategoryMapper.insertDocumentCategory(documentCategory); + } + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + @Override + public int updateDocumentCategory(DocumentCategory documentCategory) + { + documentCategory.setUpdateTime(DateUtils.getNowDate()); + return documentCategoryMapper.updateDocumentCategory(documentCategory); + } + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的文档资源分类管理主键 + * @return 结果 + */ + @Override + public int deleteDocumentCategoryByIds(String[] ids) + { + return documentCategoryMapper.deleteDocumentCategoryByIds(ids); + } + + /** + * 删除文档资源分类管理信息 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + @Override + public int deleteDocumentCategoryById(String id) + { + return documentCategoryMapper.deleteDocumentCategoryById(id); + } + + @Override + public List selectDocumentTreeList(DocumentCategory documentCategory) { + List documentCategoryList = documentCategoryMapper.selectDocumentCategoryList(documentCategory); + return buildDeptTreeSelect(documentCategoryList); + } + + public List buildDeptTreeSelect(List documentCategory) + { + List docCategoryTree = buildDeptTree(documentCategory); + return docCategoryTree.stream().map(ToolTreeSelect::new).collect(Collectors.toList()); + } + + public List buildDeptTree(List documentCategoryList) + { + List returnList = new ArrayList(); + List tempList = documentCategoryList.stream().map(DocumentCategory::getId).collect(Collectors.toList()); + for (DocumentCategory documentCategory : documentCategoryList) + { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(documentCategory.getParentId())) + { + recursionFn(documentCategoryList, documentCategory); + returnList.add(documentCategory); + } + } + if (returnList.isEmpty()) + { + returnList = documentCategoryList; + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, DocumentCategory t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (DocumentCategory tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + private List getChildList(List list, DocumentCategory t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + DocumentCategory n = (DocumentCategory) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().equals(t.getId())) + { + tlist.add(n); + } + } + return tlist; + } + + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, DocumentCategory t) + { + return getChildList(list, t).size() > 0; + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index e21dbf1..abe2aa7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -1,14 +1,37 @@ package com.rzdata.web.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.rzdata.common.annotation.DataScope; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.domain.entity.SysDictData; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.exception.ServiceException; import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.system.service.ISysDeptService; +import com.rzdata.system.service.ISysDictTypeService; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.domain.Attachment; import com.rzdata.web.domain.Document; +import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.TzMessage; import com.rzdata.web.mapper.DocumentMapper; import com.rzdata.web.service.IDocumentService; +import com.rzdata.web.service.IToolApplyService; +import com.rzdata.web.service.ITzMessageService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * 【请填写功能名称】Service业务层处理 @@ -16,11 +39,36 @@ import java.util.List; * @author ja * @date 2024-07-09 */ +@Slf4j @Service public class DocumentServiceImpl implements IDocumentService { @Autowired private DocumentMapper documentMapper; + @Autowired + private AttachmentServiceImpl attachmentService; + @Autowired + private ToolServiceImpl toolService; + + @Autowired + private IToolApplyService iUseApplyService; + + @Autowired + private ISysDictTypeService sysDictTypeService; + + + @Autowired + private ISysDeptService sysDeptService; + + @Autowired + private Snowflake snowflake; + + @Autowired + private ISysUserService iSysUserService; + + + @Autowired + private ITzMessageService tzMessageService; /** * 查询【请填写功能名称】 @@ -31,19 +79,93 @@ public class DocumentServiceImpl implements IDocumentService @Override public Document selectDocumentById(String docId) { - return documentMapper.selectDocumentById(docId); + Document document = documentMapper.selectDocumentById(docId); + if(StrUtil.isNotBlank(document.getToolId())){ + Tool tool = toolService.selectToolByToolId(document.getToolId()); + document.setToolName(tool.getToolName()); + } + document.setDocRespDeptName(sysDeptService.getDeptName(document.getDocRespDept())); + Attachment attachment = new Attachment(); + attachment.setBusinessId(document.getDocId()); + attachment.setDel(Constants.STR_ZERO); + List attachments = attachmentService.selectAttachmentList(attachment); + if(CollUtil.isNotEmpty(attachments)){ + document.setAttachment(attachments.get(0)); + } + String userId = SecurityUtils.getUserId().toString(); + document.setDownloadStatus(isDownloadStatus(userId, document)); + return document; } /** * 查询【请填写功能名称】列表 * - * @param Document 【请填写功能名称】 + * @param document 【请填写功能名称】 * @return 【请填写功能名称】 */ @Override - public List selectDocumentList(Document Document) + @DataScope(deptAlias = "sd", userAlias = "su") + public List selectDocumentList(Document document) { - return documentMapper.selectDocumentList(Document); + if (BooleanUtil.isTrue(document.getPermissionCheck())) { + if(!SysUser.isAdmin(SecurityUtils.getUserId())){ + document.setPermission(SecurityUtils.hasPermi(Constants.DOC_VIEW_PERMISSION)); + } + } + List documents = documentMapper.selectDocumentList(document); + if(CollUtil.isEmpty(documents)){ + return documents; + } + List docIds = documents.stream().map(Document::getDocId).collect(Collectors.toList()); + Attachment attachment = new Attachment(); + attachment.setBusinessIds(docIds); + attachment.setDel(Constants.STR_ZERO); + List attachments = attachmentService.selectAttachmentList(attachment); + if(CollUtil.isEmpty(attachments)){ + return documents; + } + for (Document doc : documents) { + for (Attachment att : attachments) { + if(doc.getDocId().equals(att.getBusinessId())){ + doc.setAttachment(att); + break; + } + } + } + + //前端传传参开启下载权限验证 + if (BooleanUtil.isTrue(document.getDownloadCheck())) { + String userId = SecurityUtils.getUserId().toString(); + for (Document dc: documents) { + dc.setDownloadStatus(isDownloadStatus(userId, dc)); + } + } + return documents; + } + + private boolean isDownloadStatus(String userId, Document dc){ + //文档中 是创建人 或者 配置了下载权限 + boolean downStatus = false; + if(SecurityUtils.hasPermi(Constants.DOC_DOWNLOAD_PERMISSION) || userId.equals(dc.getCreateById()) || SysUser.isAdmin(SecurityUtils.getUserId())){ + downStatus = true; + }else if(StrUtil.isNotBlank(dc.getToolId()) && iUseApplyService.checkToolUseApply(dc.getToolId(), userId)){ + downStatus = true; + } + return downStatus; + } + + + /** + * 查询【请填写功能名称】列表 + * + * @param document 【请填写功能名称】 + * @return 【请填写功能名称】 + */ + @Override + public List selectDocumentListAll(Document document) + { + List documents = documentMapper.selectDocumentList(document); + return documents; } /** @@ -60,28 +182,72 @@ public class DocumentServiceImpl implements IDocumentService return documentMapper.insertDocument(document); } + @Override + @Transactional(rollbackFor = Exception.class) public String saveDocument(Document document){ - document.setCreateTime(DateUtils.getNowDate()); String docId = IdUtil.simpleUUID(); document.setDocId(docId); + document.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + document.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + document.setIsDeleted(Constants.STR_ZERO); + document.setCreateTime(new Date()); int result = documentMapper.insertDocument(document); + addFileList(document); if(result > 0){ return docId; } return null; } + + @Transactional(rollbackFor = Exception.class) + public void delFile(Document document) { + List toolIds = Collections.singletonList(document.getDocId()); + attachmentService.deleteAttachmentByBusinessId(toolIds); + } + + @Transactional(rollbackFor = Exception.class) + public void addFileList(Document document) { + List attachmentList = document.getAttachmentList(); + if(CollUtil.isEmpty(attachmentList)){ + return; + } + for (Attachment attachment : attachmentList) { + attachment.setId(String.valueOf(snowflake.nextId())); + attachment.setBusinessId(document.getDocId()); + attachment.setBizType(Constants.DOC_TYPE_DOC); + attachment.setDel(Constants.STR_ZERO); + attachment.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + attachment.setCreateDate(new Date()); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = attachmentList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> attachmentService.batchInsert(batch)); + } + /** * 修改【请填写功能名称】 * - * @param Document 【请填写功能名称】 + * @param document 【请填写功能名称】 * @return 结果 */ @Override - public int updateDocument(Document Document) + @Transactional(rollbackFor = Exception.class) + public int updateDocument(Document document) { - Document.setUpdateTime(DateUtils.getNowDate()); - return documentMapper.updateDocument(Document); + document.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + document.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + document.setUpdateTime(new Date()); + int result = documentMapper.updateDocument(document); + delFile(document); + addFileList(document); + return result; } /** @@ -93,7 +259,12 @@ public class DocumentServiceImpl implements IDocumentService @Override public int deleteDocumentByIds(String[] ids) { - return documentMapper.deleteDocumentByIds(ids); + Document doc = new Document(); + doc.setIds(Arrays.asList(ids)); + doc.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + doc.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + doc.setUpdateTime(new Date()); + return documentMapper.isDeleteDocumentByIds(doc); } /** @@ -107,5 +278,188 @@ public class DocumentServiceImpl implements IDocumentService { return documentMapper.deleteDocumentById(id); } + + /** + * 发布文档 + * @param ids + * @return + */ + @Override + public int pushDoc(String[] ids) { + List docIdList = Arrays.asList(ids); + if(CollUtil.isEmpty(docIdList)){ + throw new ServiceException("请选择需发布的文档"); + } + Document doc = new Document(); + doc.setIds(docIdList); + doc.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + doc.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + doc.setDocStatus(Constants.DOC_STATUS_YFB); + doc.setUpdateTime(new Date()); + int result = documentMapper.updatePushDoc(doc); + //发送消息 + Document document = new Document(); + document.setDocIdList(docIdList); + List documents = documentMapper.selectDocumentList(document); + + SysUser sysUser = new SysUser(); + sysUser.setStatus("0"); + sysUser.setDelFlag("0"); + List sysUsers = iSysUserService.selectUserList(sysUser); + for (Document docItem : documents) { + sendTzMessage(docItem, sysUsers); + } + + + return result; + } + + /** + * 给消息中心发送消息 + */ + public void sendTzMessage(Document doc, List sysUsers) { + try{ + String content = doc.getDocName() + "已发布"; + List addList = new ArrayList<>(); + for (SysUser user : sysUsers) { + TzMessage tzMessage = new TzMessage(); + //雪花 + tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(doc.getDocId()); + tzMessage.setBusinessType(Constants.DOC_TYPE_DOC); + tzMessage.setReceiverId(String.valueOf(user.getUserId())); + tzMessage.setStates(1); + tzMessage.setContent(content); + tzMessage.setDeleted("0"); + tzMessage.setCreateTime(DateUtils.getNowDate()); + tzMessage.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + addList.add(tzMessage); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = addList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> tzMessageService.batchInsert(batch)); + }catch (Exception e){ + log.error("UseApplyServiceImpl-->sendTzMessage--发送消息中心异常--e###", e); + } + } + + /** + * 删除附件 + * @param docIds + * @return + */ + @Override + public int batchDeleteById(List docIds){ + return documentMapper.batchDeleteById(docIds); + } + + @Override + public Map statistics() { + Map result = new HashMap<>(); + List> countType = this.documentMapper.countType(); + List> countSource = this.documentMapper.countSource(); + //组织数据 + assembleData(countType, countSource); + result.put("countType", countType); + result.put("countSource", countSource); + return result; + } + + private void assembleData(List> countType, List> countSource) { + // + List docClassList = sysDictTypeService.selectDictDataByType("doc_class"); + List docSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + + //初始化数据 + initDictData(docClassList,countType); + initDictData(docSourceList, countSource); + + if(CollUtil.isNotEmpty(countType)){ + for (Map map : countType) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : docClassList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + if(CollUtil.isNotEmpty(countSource)){ + for (Map map : countSource) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : docSourceList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + } + + private void initDictData(List dictDataList, List> mapTypeList) { + for (SysDictData sysDictData : dictDataList) { + boolean flag = false; + for (Map map : mapTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + flag = true; + break; + } + } + if(!flag){ + Map map = new HashMap<>(); + map.put("value", "0"); + map.put("name", sysDictData.getDictLabel()); + map.put("types", sysDictData.getDictValue()); + map.put("statistics", "0"); + mapTypeList.add(map); + } + } + } + + + @Override + public List selectAllList(Document document) { + List documents = documentMapper.selectDocumentList(document); + List docClassList = sysDictTypeService.selectDictDataByType("doc_class"); + List docSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + List docStatusList = sysDictTypeService.selectDictDataByType("doc_upload_status"); + for (Document item : documents) { + for (SysDictData sysDictData : docClassList) { + if(sysDictData.getDictValue().equals(item.getDocType())){ + item.setDocTypeName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : docSourceList) { + if(sysDictData.getDictValue().equals(item.getDocSource())){ + item.setDocSourceName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : docStatusList) { + if(sysDictData.getDictValue().equals(item.getDocStatus())){ + item.setStatusName(sysDictData.getDictLabel()); + break; + } + } + + if( StrUtil.isNotBlank(item.getDocRespDept())){ + item.setDocRespDeptName(sysDeptService.getDeptName(item.getDocRespDept())); + } + item.setCreateNowTime(DateUtil.format(item.getCreateTime(), "yyyy-MM-dd hh:mm")); + } + return documents; + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java new file mode 100644 index 0000000..602f444 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java @@ -0,0 +1,115 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import cn.hutool.core.lang.Snowflake; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.DownloadCount; +import com.rzdata.web.mapper.DownloadCountMapper; +import com.rzdata.web.service.IDownloadCountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 工具下载统计Service业务层处理 + * + * @author 潘驰春 + * @date 2024-08-31 + */ +@Service +public class DownloadCountServiceImpl implements IDownloadCountService +{ + @Autowired + private DownloadCountMapper downloadCountMapper; + + @Autowired + private Snowflake snowflake; + + /** + * 查询工具下载统计 + * + * @param id 工具下载统计主键 + * @return 工具下载统计 + */ + @Override + public DownloadCount selectDownloadCountById(String id) + { + return downloadCountMapper.selectDownloadCountById(id); + } + + /** + * 查询工具下载统计列表 + * + * @param downloadCount 工具下载统计 + * @return 工具下载统计 + */ + @Override + public List selectDownloadCountList(DownloadCount downloadCount) + { + return downloadCountMapper.selectDownloadCountList(downloadCount); + } + + /** + * 新增工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + @Override + public int insertDownloadCount(DownloadCount downloadCount) + { + downloadCount.setId(String.valueOf(snowflake.nextId())); + downloadCount.setCreateTime(DateUtils.getNowDate()); + downloadCount.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + downloadCount.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + return downloadCountMapper.insertDownloadCount(downloadCount); + } + + /** + * 修改工具下载统计 + * + * @param downloadCount 工具下载统计 + * @return 结果 + */ + @Override + public int updateDownloadCount(DownloadCount downloadCount) + { + downloadCount.setUpdateTime(DateUtils.getNowDate()); + return downloadCountMapper.updateDownloadCount(downloadCount); + } + + /** + * 批量删除工具下载统计 + * + * @param ids 需要删除的工具下载统计主键 + * @return 结果 + */ + @Override + public int deleteDownloadCountByIds(String[] ids) + { + return downloadCountMapper.deleteDownloadCountByIds(ids); + } + + /** + * 删除工具下载统计信息 + * + * @param id 工具下载统计主键 + * @return 结果 + */ + @Override + public int deleteDownloadCountById(String id) + { + return downloadCountMapper.deleteDownloadCountById(id); + } + + @Override + public List userDownList(DownloadCount downloadCount) { + return downloadCountMapper.userDownList(downloadCount); + } + + @Override + public List selectDownloadDocCountList(DownloadCount downloadCount) { + return downloadCountMapper.selectDownloadDocCountList(downloadCount); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/RepliesServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/RepliesServiceImpl.java new file mode 100644 index 0000000..42c39e3 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/RepliesServiceImpl.java @@ -0,0 +1,108 @@ +package com.rzdata.web.service.impl; + +import java.util.Date; +import java.util.List; + +import cn.hutool.core.lang.Snowflake; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.Replies; +import com.rzdata.web.mapper.RepliesMapper; +import com.rzdata.web.service.IRepliesService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 回复Service业务层处理 + * + * @author panchichun + * @date 2024-08-30 + */ +@Service +public class RepliesServiceImpl implements IRepliesService +{ + @Autowired + private RepliesMapper repliesMapper; + + @Autowired + private Snowflake snowflake; + + /** + * 查询回复 + * + * @param id 回复主键 + * @return 回复 + */ + @Override + public Replies selectRepliesById(String id) + { + return repliesMapper.selectRepliesById(id); + } + + /** + * 查询回复列表 + * + * @param replies 回复 + * @return 回复 + */ + @Override + public List selectRepliesList(Replies replies) + { + return repliesMapper.selectRepliesList(replies); + } + + /** + * 新增回复 + * + * @param replies 回复 + * @return 结果 + */ + @Override + public int insertReplies(Replies replies) + { + replies.setId(String.valueOf(snowflake.nextId())); + replies.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + replies.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + replies.setCreateTime(new Date()); + replies.setIsDelete(Constants.STR_ZERO); + return repliesMapper.insertReplies(replies); + } + + /** + * 修改回复 + * + * @param replies 回复 + * @return 结果 + */ + @Override + public int updateReplies(Replies replies) + { + replies.setUpdateTime(DateUtils.getNowDate()); + return repliesMapper.updateReplies(replies); + } + + /** + * 批量删除回复 + * + * @param ids 需要删除的回复主键 + * @return 结果 + */ + @Override + public int deleteRepliesByIds(String[] ids) + { + return repliesMapper.deleteRepliesByIds(ids); + } + + /** + * 删除回复信息 + * + * @param id 回复主键 + * @return 结果 + */ + @Override + public int deleteRepliesById(String id) + { + return repliesMapper.deleteRepliesById(id); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java new file mode 100644 index 0000000..5597f51 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -0,0 +1,166 @@ +package com.rzdata.web.service.impl; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.BooleanUtil; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.domain.ToolApply; +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.domain.UseApplyItem; +import com.rzdata.web.mapper.ToolApplyMapper; +import com.rzdata.web.service.IToolApplyService; +import com.rzdata.web.service.ITzMessageService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 使用申请Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Slf4j +@Service +public class ToolApplyServiceImpl implements IToolApplyService +{ + @Autowired + private ToolApplyMapper toolApplyMapper; + + + @Autowired + private ISysUserService sysUserService; + + + @Autowired + private Snowflake snowflake; + + @Autowired + private ITzMessageService tzMessageService; + + + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + @Override + public ToolApply selectToolApplyById(String id) + { + return toolApplyMapper.selectToolApplyById(id); + } + + @Override + public ToolApply getInfoByBpmcId(String bpmcId){ + return toolApplyMapper.getInfoByBpmcId(bpmcId); + } + /** + * 查询使用申请列表 + * + * @param toolApply 使用申请 + * @return 使用申请 + */ + @Override + public List selectToolApplyList(ToolApply toolApply) + { + if(!SysUser.isAdmin(SecurityUtils.getUserId())){ + if(!SecurityUtils.hasPermi(Constants.APPLY_VIEW_ALL_PERMISSION)){ + toolApply.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + } + } + return toolApplyMapper.selectToolApplyList(toolApply); + } + + /** + * 新增使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + @Override + public int insertToolApply(ToolApply toolApply) + { + toolApply.setCreateBy(SecurityUtils.getUserId().toString()); + toolApply.setCreateTime(DateUtils.getNowDate()); + return toolApplyMapper.insertToolApply(toolApply); + } + + /** + * 修改使用申请 + * + * @param toolApply 使用申请 + * @return 结果 + */ + @Override + public int updateToolApply(ToolApply toolApply) + { + toolApply.setUpdateBy(SecurityUtils.getUserId().toString()); + toolApply.setUpdateTime(DateUtils.getNowDate()); + return toolApplyMapper.updateToolApply(toolApply); + } + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的使用申请主键 + * @return 结果 + */ + @Override + public int deleteToolApplyByIds(String[] ids) + { + return toolApplyMapper.deleteToolApplyByIds(ids); + } + + /** + * 删除使用申请信息 + * + * @param id 使用申请主键 + * @return 结果 + */ + @Override + public int deleteToolApplyById(String id) + { + return toolApplyMapper.deleteToolApplyById(id); + } + + @Override + public boolean checkToolUseApply(String toolId, String userId){ + return toolApplyMapper.checkToolUseApply(toolId, userId)>0; + } + + @Override + public boolean hasToolUseApply(String toolId, String userId){ + return toolApplyMapper.hasToolUseApply(toolId, userId) > 0; + } + + @Override + public void sendTzMessage(ToolApply toolApply) { + try{ + SysUser sysUser = sysUserService.selectUserById(Long.valueOf(toolApply.getUserId())); + + UseApplyItem useApplyItem = toolApply.getItemList().get(0); + String toolName = useApplyItem.getToolName(); + + String content = toolName + "下载权限已通过"; + + TzMessage tzMessage = new TzMessage(); + //雪花 + tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(toolApply.getToolId()); + tzMessage.setBusinessType(Constants.ATT_TYPE_TOOL); + tzMessage.setReceiverId(String.valueOf(sysUser.getUserId())); + tzMessage.setStates(1); + tzMessage.setContent(content); + tzMessage.setDeleted("0"); + tzMessageService.insertTzMessage(tzMessage); + }catch (Exception e){ + log.error("UseApplyServiceImpl-->sendTzMessage--发送消息中心异常--e###", e); + } + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java new file mode 100644 index 0000000..85b1c07 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java @@ -0,0 +1,302 @@ +package com.rzdata.web.service.impl; + +import java.sql.Struct; +import java.util.*; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.mapper.ToolRelationMapper; +import com.rzdata.web.service.IToolRelationService; +import com.rzdata.web.service.IToolService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * tool_relationService业务层处理 + * + * @author ja + * @date 2024-09-08 + */ +@Service +public class ToolRelationServiceImpl implements IToolRelationService +{ + @Autowired + private ToolRelationMapper toolRelationMapper; + + @Autowired + private IToolService toolService; + + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + @Override + public ToolRelation selectToolRelationById(String id) + { + return toolRelationMapper.selectToolRelationById(id); + } + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation + */ + @Override + public List selectToolRelationList(ToolRelation toolRelation) + { + return toolRelationMapper.selectToolRelationList(toolRelation); + } + + @Override + public List selectRelationToolList(ToolRelation toolRelation) + { + return toolRelationMapper.selectRelationToolList(toolRelation); + } + + + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + @Override + public int insertToolRelation(ToolRelation toolRelation) + { + return toolRelationMapper.insertToolRelation(toolRelation); + } + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + @Override + public int updateToolRelation(ToolRelation toolRelation) + { + return toolRelationMapper.updateToolRelation(toolRelation); + } + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的tool_relation主键 + * @return 结果 + */ + @Override + public int deleteToolRelationByIds(String[] ids) + { + return toolRelationMapper.deleteToolRelationByIds(ids); + } + + /** + * 批量删除 + */ + @Override + public int batchInsert(List toolRelationList) + { + return toolRelationMapper.batchInsert(toolRelationList); + } + + /** + * 删除tool_relation信息 + * + * @param id tool_relation主键 + * @return 结果 + */ + @Override + public int deleteToolRelationById(String id) + { + return toolRelationMapper.deleteToolRelationById(id); + } + + /** + * 获取数据树权限 + * @param toolRelation + * @return + */ + @Override + public List getDataThree(ToolRelation toolRelation) { + if(CollUtil.isEmpty(toolRelation.getResourceIds())){ + return null; + } + + List toolRelations = this.selectRelationToolList(toolRelation); + //拿到C的数据 + ToolRelation toolRelation1 = toolRelations.get(0); + // 查询数据库中的所有工具关系 + List allToolRelations = this.selectRelationToolList(null); + return getDataThree(toolRelation1.getResourceId()); + + /*//查询所有关联的数据,最后在组装起来 + List toolRelations = this.selectRelationToolList(toolRelation); + //查询所有数据 + List allToolRelation = this.selectRelationToolList(null);*/ + + // 查询所有与 C 相关的工具关系 + //List relatedToolRelations = this.selectRelationToolList(toolRelation); + +/* + + // 从 C 开始构建树形结构 + List treeSelects = relatedToolRelations.stream() + .map(tr -> buildChildren(tr, allToolRelations, new HashSet<>())) + .filter(Objects::nonNull) + .collect(Collectors.toList()); +*/ + + // 构建树形结构(从 C 向上递归查找父节点) + /* ToolTreeSelect treeSelect = buildParentTree(toolRelation, allToolRelations, new HashSet<>()); + + return treeSelect != null ? Collections.singletonList(treeSelect) : new ArrayList<>();*/ + } + + public List getDataThree(String toolResourceId) { + // 创建链条列表用于存储递归结果 + List toolChain = new ArrayList<>(); + + // 从工具 resourceId 开始递归查找 + buildToolChain(toolResourceId, toolChain); + + return toolChain; + } + + // 递归构建工具链 + private void buildToolChain(String resourceId, List toolChain) { + // 根据 resourceId 查找当前工具关联关系 + ToolRelation currentToolRelation = this.findToolRelationByResourceId(resourceId); + + if (currentToolRelation != null) { + // 将当前工具加入链条 + ToolTreeSelect currentTool = new ToolTreeSelect(); + currentTool.setId(currentToolRelation.getId()); + currentTool.setLabel(currentToolRelation.getToolName()); // 假设有工具名称字段 + toolChain.add(currentTool); + + // 如果当前工具的 target_id 不为空,则继续向上递归 + if (currentToolRelation.getTargetId() != null) { + buildToolChain(currentToolRelation.getTargetId(), toolChain); + } + } + } + + // 根据 resourceId 查找 ToolRelation + private ToolRelation findToolRelationByResourceId(String resourceId) { + // 在数据库中查询 toolRelation 记录 + ToolRelation queryToolRelation = new ToolRelation(); + queryToolRelation.setResourceId(resourceId); + List toolRelations = this.selectRelationToolList(queryToolRelation); + return toolRelations.isEmpty() ? null : toolRelations.get(0); + } + + + // 递归向上构建父节点 + private ToolTreeSelect buildParentTree(ToolRelation currentToolRelation, List allToolRelation, Set visited) { + // 检查是否已经访问过该节点,避免死循环 + if (visited.contains(currentToolRelation.getId())) { + return null; // 如果已访问,直接返回 null + } + visited.add(currentToolRelation.getId()); // 记录已访问的节点 + + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(currentToolRelation.getResourceId()); // 设置节点 ID 为 resourceId + node.setLabel(currentToolRelation.getToolName()); // 假设 ToolRelation 中有工具名称 + + // 查找父节点(向上递归查找与当前节点的 resource_id 对应的 target_id) + List parents = allToolRelation.stream() + .filter(t -> currentToolRelation.getResourceId().equals(t.getTargetId())) // 找到父节点 + .map(t -> buildParentTree(t, allToolRelation, visited)) // 递归处理父节点 + .filter(Objects::nonNull) // 过滤掉 null 的父节点 + .collect(Collectors.toList()); + + // 如果有父节点,则将父节点设置为 children + node.setChildren(parents); + + return node; + } + + private List buildTwoTreeSelect(List tools) { + List treeSelectList = new ArrayList<>(); + for (Tool tool : tools) { + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(tool.getToolId()); + node.setLabel(tool.getToolName()); // 你可能有其他字段,例如 types,可在此处设置 + node.setChildren(new ArrayList<>()); // 你可能有其他字段,例如 types,可在此处设置 + treeSelectList.add(node); + } + return treeSelectList; + } + + + // 递归构建树形结构 + private List buildToolTreeSelect(List tools, List allToolRelation) { + // 找到根节点:没有父节点的工具关系 + List treeSelectList = tools.stream() + .filter(t -> allToolRelation.stream().noneMatch(r -> r.getTargetId().equals(t.getResourceId()))) // 根节点判定:targetId 没有匹配 resourceId + .map(t -> buildChildren(t, allToolRelation, new HashSet<>())) + .filter(Objects::nonNull) // 过滤掉空的节点 + .collect(Collectors.toList()); + return treeSelectList; + } + + // 构建子节点 + private ToolTreeSelect buildChildren(ToolRelation toolRelation, List allToolRelation, Set visited) { + // 检查是否已经访问过该节点,避免死循环 + if (visited.contains(toolRelation.getId())) { + return null; // 如果已访问,直接返回 null + } + visited.add(toolRelation.getId()); // 记录已访问的节点 + + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(toolRelation.getResourceId()); // 设置节点 ID 为 resourceId + node.setLabel(toolRelation.getToolName()); // 假设 toolName 是工具名称 + + // 查找子节点,递归构建 + List children = allToolRelation.stream() + .filter(t -> toolRelation.getTargetId().equals(t.getResourceId())) // 找到当前节点的子节点 + .map(t -> buildChildren(t, allToolRelation, visited)) // 递归处理子节点 + .filter(Objects::nonNull) // 过滤掉 null 的子节点 + .collect(Collectors.toList()); + + node.setChildren(children); // 设置子节点 + return node; + } + + /** + * 根据资源id和目标id去删除 + * @param toolRelation + * @return + */ + @Override + public int deleteResourceAndTarget(ToolRelation toolRelation) + { + return toolRelationMapper.deleteResourceAndTarget(toolRelation); + } + + /** + * 根据目标id和源id去删除 + * @param toolRelation + * @return + */ + @Override + public int deleteTargetAndResource(ToolRelation toolRelation) + { + return toolRelationMapper.deleteTargetAndResource(toolRelation); + } + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index cb4e7df..20449e2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -1,14 +1,35 @@ package com.rzdata.web.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.blueland.bpmclient.model.BpmClientInputModel; +import com.rzdata.common.annotation.DataScope; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.core.domain.entity.SysDictData; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.enums.RecordStatusEnum; import com.rzdata.common.utils.DateUtils; -import com.rzdata.web.domain.Tool; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.system.service.ISysDeptService; +import com.rzdata.system.service.ISysDictTypeService; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.domain.*; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; import com.rzdata.web.mapper.ToolMapper; -import com.rzdata.web.service.IToolService; +import com.rzdata.web.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * 工具信息Service业务层处理 @@ -16,12 +37,45 @@ import java.util.List; * @author ja * @date 2024-07-15 */ +@Slf4j @Service public class ToolServiceImpl implements IToolService { @Autowired private ToolMapper toolMapper; + @Autowired + private IAttachmentService iAttachmentService; + + @Autowired + private IDocumentService documentService; + + @Autowired + private ISysUserService sysUserService; + + @Autowired + private Snowflake snowflake; + + @Autowired + private ITzMessageService tzMessageService; + + @Autowired + private ISysDictTypeService sysDictTypeService; + + + @Autowired + private IToolApplyService toolApplyService; + + @Autowired + private ISysDeptService sysDeptService; + + /** 工具管理表 **/ + @Autowired + private IToolRelationService iToolRelationService; + + @Autowired + private IToolApplyService iToolApplyService; + /** * 查询工具信息 * @@ -31,7 +85,14 @@ public class ToolServiceImpl implements IToolService @Override public Tool selectToolByToolId(String toolId) { - return toolMapper.selectToolByToolId(toolId); + Tool tool = toolMapper.selectToolByToolId(toolId); + tool.setToolRespDeptName(sysDeptService.getDeptName(tool.getToolRespDept())); + return tool; + } + + @Override + public Tool getInfoByBpmcId(String bpmcId){ + return toolMapper.getInfoByBpmcId(bpmcId); } /** @@ -41,8 +102,21 @@ public class ToolServiceImpl implements IToolService * @return 工具信息 */ @Override + @DataScope(deptAlias = "d", userAlias = "su") public List selectToolList(Tool tool) { + if (BooleanUtil.isTrue(tool.getPermissionCheck())) { + tool.setPermission(SecurityUtils.hasPermi(Constants.VIEW_TOOL_PERMISSION)); + } + return toolMapper.selectToolList(tool); + } + + /** + * 查询所有数据不走任何 + * @return + */ + @Override + public List selectAllNotAuthList(Tool tool){ return toolMapper.selectToolList(tool); } @@ -55,19 +129,48 @@ public class ToolServiceImpl implements IToolService @Override public int insertTool(Tool tool) { + tool.setCreateBy(SecurityUtils.getUserId().toString()); tool.setCreateTime(DateUtils.getNowDate()); - tool.setToolId(IdUtil.simpleUUID()); return toolMapper.insertTool(tool); } + /** + * 保存关联关系 + * @param tool + */ @Override - public boolean checkToolExist(String toolCode, String toolRespDept) + public void saveToolRelation(Tool tool, Boolean isDel) { + if(StrUtil.isNotBlank(tool.getAssociation())){ + List tools = JSONUtil.toList(tool.getAssociation(), Tool.class); + //关联 + List associationToolList = new ArrayList<>(); + //被关联的数据 + for (Tool toolItem : tools) { + ToolRelation toolRelation = new ToolRelation(); + toolRelation.setId(String.valueOf(snowflake.nextId())); + toolRelation.setResourceId(tool.getToolId()); + toolRelation.setTargetId(toolItem.getToolId()); + associationToolList.add(toolRelation); + if(isDel){ + iToolRelationService.deleteResourceAndTarget(toolRelation); + } + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = associationToolList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> iToolRelationService.batchInsert(batch)); + } + } + + @Override + public boolean checkToolExist(Tool tTool) { - Tool tool = new Tool(); - tool.setToolCode(toolCode); - tool.setToolRespDept(toolRespDept); - List toolList = toolMapper.selectToolList(tool); - return toolList.size() > 0; + return toolMapper.checkToolExist(tTool)> 0; } /** @@ -77,10 +180,76 @@ public class ToolServiceImpl implements IToolService * @return 结果 */ @Override + @Transactional(rollbackFor = Exception.class) public int updateTool(Tool tool) { + tool.setUpdateBy(SecurityUtils.getUserId().toString()); tool.setUpdateTime(DateUtils.getNowDate()); - return toolMapper.updateTool(tool); + int result = toolMapper.updateTool(tool); + /* delFile(tool); + addFileList(tool);*/ + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delFile(Tool tool) { + List toolIds = Collections.singletonList(tool.getToolId()); + iAttachmentService.deleteAttachmentByBusinessId(toolIds); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addFileList(Tool tool) { + List attachmentList = tool.getAttachmentList(); + if(CollUtil.isEmpty(attachmentList)){ + return; + } + for (Attachment attachment : attachmentList) { + attachment.setId(String.valueOf(snowflake.nextId())); + attachment.setBusinessId(tool.getToolId()); + attachment.setBizType(Constants.ATT_TYPE_TOOL); + attachment.setDel(Constants.STR_ZERO); + attachment.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + attachment.setCreateDate(new Date()); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = attachmentList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> iAttachmentService.batchInsert(batch)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void recordToolApply(Tool tool) { + ToolApply toolApply = new ToolApply(); + toolApply.setId(IdUtil.simpleUUID()); + toolApply.setApplyType(Constants.TOOL_APPLY_TYPE_PUBLISH); + toolApply.setToolId(tool.getToolId()); + toolApply.setDeptId(String.valueOf(SecurityUtils.getDeptId())); + toolApply.setProcInstId(tool.getProcInstId()); + toolApply.setRecordStatus(tool.getRecordStatus()); + toolApply.setUserId(String.valueOf(SecurityUtils.getUserId())); + + BpmClientInputModelBo bpmClientInputModelBo = tool.getBpmClientInputModel(); + if(null != bpmClientInputModelBo){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + toolApply.setProcTitle(StrUtil.isNotEmpty(bpmClientInputModel.getWf_procTitle()) ? bpmClientInputModel.getWf_procTitle() : ""); + } + SysDept sysDept = sysDeptService.selectDeptById(SecurityUtils.getDeptId()); + if(null != sysDept){ + toolApply.setDeptName(sysDept.getDeptName()); + } + SysUser sysUser = sysUserService.selectUserById(SecurityUtils.getUserId()); + if(null != sysUser){ + toolApply.setNickName(sysUser.getNickName()); + } + toolApplyService.insertToolApply(toolApply); } /** @@ -106,4 +275,198 @@ public class ToolServiceImpl implements IToolService { return toolMapper.deleteToolByToolId(toolId); } + + @Override + public void updateDocPushStatus(Tool tTool) { + Document document = new Document(); + document.setToolId(tTool.getToolId()); + List documents = documentService.selectDocumentListAll(document); + if(CollUtil.isEmpty(documents)){ + return; + } + List ids = documents.stream().map(Document::getDocId).collect(Collectors.toList()); + String[] idsArray = ids.stream().toArray(String[]::new); + documentService.pushDoc(idsArray); + } + + /** + * 给消息中心发送消息 + */ + @Override + public void sendTzMessage(Tool tTool) { + try{ + SysUser sysUser = new SysUser(); + sysUser.setStatus("0"); + sysUser.setDelFlag("0"); + String content = tTool.getToolName() + "已发布"; + List sysUsers = sysUserService.selectUserList(sysUser); + List addList = new ArrayList<>(); + for (SysUser user : sysUsers) { + TzMessage tzMessage = new TzMessage(); + //雪花 + tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(tTool.getToolId()); + tzMessage.setBusinessType(Constants.ATT_TYPE_TOOL); + tzMessage.setReceiverId(String.valueOf(user.getUserId())); + tzMessage.setStates(1); + tzMessage.setContent(content); + tzMessage.setDeleted("0"); + tzMessage.setCreateTime(DateUtils.getNowDate()); + tzMessage.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + addList.add(tzMessage); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = addList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> tzMessageService.batchInsert(batch)); + }catch (Exception e){ + log.error("UseApplyServiceImpl-->sendTzMessage--发送消息中心异常--e###", e); + } + } + + @Override + public Map statistics() { + Map result = new HashMap<>(); + List> countToolType = toolMapper.countToolType(); + List> toolSource = toolMapper.toolSource(); + List> recordStatus = toolMapper.recordStatus(); + //组装数据 + assembleData(countToolType, toolSource, recordStatus); + + result.put("countToolType", countToolType); + result.put("toolSource", toolSource); + result.put("recordStatus", recordStatus); + return result; + } + + private void assembleData(List> countToolType, List> toolSource, List> recordStatus) { + + List toolTypeList = sysDictTypeService.selectDictDataByType("tool_type"); + List flowStatusList = sysDictTypeService.selectDictDataByType("flow_status").stream().filter(item -> !item.getDictValue().equals("cancel")).collect(Collectors.toList()); + List toolSourceList = sysDictTypeService.selectDictDataByType("tool_source"); + + //初始化数据 + initDictData(toolTypeList, countToolType); + initDictData(toolSourceList, toolSource); + initDictData(flowStatusList, recordStatus); + + if(CollUtil.isNotEmpty(countToolType)){ + for (Map map : countToolType) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : toolTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + + + if(CollUtil.isNotEmpty(toolSource)){ + for (Map map : toolSource) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : toolSourceList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + + + if(CollUtil.isNotEmpty(recordStatus)){ + for (Map map : recordStatus) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : flowStatusList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + } + + private void initDictData(List dictDataList, List> mapTypeList) { + for (SysDictData sysDictData : dictDataList) { + boolean flag = false; + for (Map map : mapTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + flag = true; + break; + } + } + if(!flag){ + Map map = new HashMap<>(); + map.put("value", "0"); + map.put("name", sysDictData.getDictLabel()); + map.put("types", sysDictData.getDictValue()); + map.put("statistics", "0"); + mapTypeList.add(map); + } + } + } + + + @Override + public List selectAllList(Tool tool) { + List tools = toolMapper.selectToolList(tool); + List toolSource = sysDictTypeService.selectDictDataByType("tool_source"); + List toolTypeList = sysDictTypeService.selectDictDataByType("tool_type"); + List toolStatus = sysDictTypeService.selectDictDataByType("tool_status"); + List flowStatusList = sysDictTypeService.selectDictDataByType("flow_status"); + + for (Tool item : tools) { + for (SysDictData sysDictData : toolSource) { + if(sysDictData.getDictValue().equals(item.getToolSource())){ + item.setToolSourceName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : toolTypeList) { + if(sysDictData.getDictValue().equals(item.getToolType())){ + item.setToolTypeName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : toolStatus) { + if(sysDictData.getDictValue().equals(item.getStatus())){ + item.setStatusName(sysDictData.getDictLabel()); + break; + } + } + for (SysDictData sysDictData : flowStatusList) { + if(sysDictData.getDictValue().equals(item.getRecordStatus())){ + item.setRecordStatusName(sysDictData.getDictLabel()); + break; + } + } + if( StrUtil.isNotBlank(tool.getToolRespDept())){ + item.setToolRespDeptName(sysDeptService.getDeptName(tool.getToolRespDept())); + } + + } + return tools; + } + + @Override + public boolean isDownloadStatus(String userId, Tool tool){ + //创建人、下载权限、系统管理员 + //1.已经审核通过、并且有下载权限 + return userId.equals(tool.getCreateBy()) || + SysUser.isAdmin(SecurityUtils.getUserId()) || + SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION) || + ( RecordStatusEnum.DONE.getCode().equals(tool.getRecordStatus())&& + iToolApplyService.checkToolUseApply(tool.getToolId(), userId)); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java new file mode 100644 index 0000000..e04d890 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java @@ -0,0 +1,129 @@ +package com.rzdata.web.service.impl; + +import java.util.Date; +import java.util.List; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.mapper.TzMessageMapper; +import com.rzdata.web.service.ITzMessageService; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 消息Service业务层处理 + * + * @author ja + * @date 2024-08-31 + */ +@Service +public class TzMessageServiceImpl implements ITzMessageService +{ + @Autowired + private TzMessageMapper tzMessageMapper; + + /** + * 查询消息 + * + * @param id 消息主键 + * @return 消息 + */ + @Override + public TzMessage selectTzMessageById(String id) + { + return tzMessageMapper.selectTzMessageById(id); + } + + /** + * 查询消息列表 + * + * @param tzMessage 消息 + * @return 消息 + */ + @Override + public List selectTzMessageList(TzMessage tzMessage) + { + return tzMessageMapper.selectTzMessageList(tzMessage); + } + + /** + * 新增消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + @Override + public int insertTzMessage(TzMessage tzMessage) + { + tzMessage.setCreateTime(DateUtils.getNowDate()); + tzMessage.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + return tzMessageMapper.insertTzMessage(tzMessage); + } + + /** + * 修改消息 + * + * @param tzMessage 消息 + * @return 结果 + */ + @Override + public int updateTzMessage(TzMessage tzMessage) + { + tzMessage.setUpdateTime(DateUtils.getNowDate()); + tzMessage.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + return tzMessageMapper.updateTzMessage(tzMessage); + } + + /** + * 批量删除消息 + * + * @param ids 需要删除的消息主键 + * @return 结果 + */ + @Override + public int deleteTzMessageByIds(String[] ids) + { + return tzMessageMapper.deleteTzMessageByIds(ids); + } + + /** + * 删除消息信息 + * + * @param id 消息主键 + * @return 结果 + */ + @Override + public int deleteTzMessageById(String id) + { + return tzMessageMapper.deleteTzMessageById(id); + } + + + /** + * 全部标记已读 + * @param tzMessage + * @return + */ + @Override + public int allMarkedRead( TzMessage tzMessage) { + tzMessage.setReceiverId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + tzMessage.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + tzMessage.setUpdateTime(new Date()); + return tzMessageMapper.updateAllMarkedRead(tzMessage); + } + + @Override + public int batchInsert(List tzMessageList) { + return tzMessageMapper.batchInsert(tzMessageList); + } + + @Override + public int selectTzMessageByUserCount(String userId) { + return tzMessageMapper.selectTzMessageByUserCount(userId); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java new file mode 100644 index 0000000..e7da81b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java @@ -0,0 +1,110 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import cn.hutool.core.util.IdUtil; +import com.rzdata.web.mapper.UseApplyItemMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.rzdata.web.mapper.UseApplyItemMapper; +import com.rzdata.web.domain.UseApplyItem; +import com.rzdata.web.service.IUseApplyItemService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 使用申请详情Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Service +public class UseApplyItemServiceImpl implements IUseApplyItemService +{ + @Autowired + private UseApplyItemMapper useApplyItemMapper; + + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + @Override + public UseApplyItem selectUseApplyItemById(String id) + { + return useApplyItemMapper.selectUseApplyItemById(id); + } + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情 + */ + @Override + public List selectUseApplyItemList(UseApplyItem useApplyItem) + { + return useApplyItemMapper.selectUseApplyItemList(useApplyItem); + } + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + @Override + public int insertUseApplyItem(UseApplyItem useApplyItem) + { + return useApplyItemMapper.insertUseApplyItem(useApplyItem); + } + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + @Override + public int updateUseApplyItem(UseApplyItem useApplyItem) + { + return useApplyItemMapper.updateUseApplyItem(useApplyItem); + } + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的使用申请详情主键 + * @return 结果 + */ + @Override + public int deleteUseApplyItemByIds(String[] ids) + { + return useApplyItemMapper.deleteUseApplyItemByIds(ids); + } + + /** + * 删除使用申请详情信息 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + @Override + public int deleteUseApplyItemById(String id) + { + return useApplyItemMapper.deleteUseApplyItemById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateItemList(List list, String applyId){ + useApplyItemMapper.deleteByApplyId(applyId); + if (list!=null&&list.size()>0) { + for (UseApplyItem item: list) { + item.setApplyId(applyId); + item.setId(IdUtil.simpleUUID()); + useApplyItemMapper.insertUseApplyItem(item); + } + } + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java new file mode 100644 index 0000000..22640b9 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java @@ -0,0 +1,125 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import com.blueland.bpmclient.model.BpmClientInputModel; +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.rzdata.web.mapper.WorkflowLogMapper; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.service.IWorkflowLogService; + +/** + * 流程审批记录Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Service +public class WorkflowLogServiceImpl implements IWorkflowLogService +{ + @Autowired + private WorkflowLogMapper workflowLogMapper; + + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + @Override + public WorkflowLog selectWorkflowLogById(String id) + { + return workflowLogMapper.selectWorkflowLogById(id); + } + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录 + */ + @Override + public List selectWorkflowLogList(WorkflowLog workflowLog) + { + return workflowLogMapper.selectWorkflowLogList(workflowLog); + } + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + @Override + public int insertWorkflowLog(WorkflowLog workflowLog) + { + workflowLog.setCreateTime(DateUtils.getNowDate()); + return workflowLogMapper.insertWorkflowLog(workflowLog); + } + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + @Override + public int updateWorkflowLog(WorkflowLog workflowLog) + { + workflowLog.setUpdateTime(DateUtils.getNowDate()); + return workflowLogMapper.updateWorkflowLog(workflowLog); + } + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的流程审批记录主键 + * @return 结果 + */ + @Override + public int deleteWorkflowLogByIds(String[] ids) + { + return workflowLogMapper.deleteWorkflowLogByIds(ids); + } + + /** + * 删除流程审批记录信息 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + @Override + public int deleteWorkflowLogById(String id) + { + return workflowLogMapper.deleteWorkflowLogById(id); + } + + @Override + public void saveProcLog(BpmClientInputModelBo bpmClientInputModelBo, ProcessInstanceModel processInst, String action){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + WorkflowLog workflowLog = new WorkflowLog(); + workflowLog.setId(IdUtil.simpleUUID()); + workflowLog.setPass(bpmClientInputModelBo.getApplyStatus()); + workflowLog.setProcInstId(processInst.getProcInstId()); + workflowLog.setBusinessId(processInst.getBusinessKey()); + workflowLog.setActDefId(bpmClientInputModel.getWf_curActDefId()); + workflowLog.setActDefName(bpmClientInputModel.getWf_curActDefName()); + workflowLog.setNextDefId(bpmClientInputModel.getWf_nextActDefId()); + workflowLog.setNextDefName(bpmClientInputModel.getWf_nextActDefName()); + workflowLog.setActInstId(bpmClientInputModel.getWf_curActInstId()); + workflowLog.setOpinion(bpmClientInputModel.getWf_curComment()); + workflowLog.setSender(bpmClientInputModel.getWf_sendUserId()); + workflowLog.setSenderDeptId(bpmClientInputModel.getWf_sendUserOrgId()); + workflowLog.setReceiver(JSONUtil.toJsonStr(bpmClientInputModel.getWf_receivers())); + workflowLog.setActStatus(action); + workflowLog.setProcDefKey(bpmClientInputModel.getWf_procDefKey()); + workflowLog.setReview(bpmClientInputModelBo.getReview()); + workflowLogMapper.insertWorkflowLog(workflowLog); + } +} diff --git a/tool-tech-admin/src/main/resources/application-test.yml b/tool-tech-admin/src/main/resources/application-test.yml index d426f47..2e8d050 100644 --- a/tool-tech-admin/src/main/resources/application-test.yml +++ b/tool-tech-admin/src/main/resources/application-test.yml @@ -58,4 +58,9 @@ spring: merge-sql: true wall: config: - multi-statement-allow: true \ No newline at end of file + multi-statement-allow: true + +bpmc: + tenantId: TLTC_SYS + serviceUrl: http://124.223.108.21:9081/ebpm-process-rest/ + uniteWorkUrl: https://www.rzdata.net/tool-tech/workflowRouter diff --git a/tool-tech-admin/src/main/resources/application.yml b/tool-tech-admin/src/main/resources/application.yml index 5c36a18..b42c837 100644 --- a/tool-tech-admin/src/main/resources/application.yml +++ b/tool-tech-admin/src/main/resources/application.yml @@ -15,6 +15,7 @@ ja: # 开发环境配置 server: + address: 0.0.0.0 # 服务器的HTTP端口,默认为8080 port: 8080 servlet: @@ -127,3 +128,13 @@ xss: excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +# 用于雪花算法生成id +application: + datacenterId: 2 + workerId: 1 + +bpmc: + tenantId: TLTC_SYS + serviceUrl: http://124.223.108.21:9081/ebpm-process-rest/ + uniteWorkUrl: http://localhost/tool-tech/workflowRouter diff --git a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml new file mode 100644 index 0000000..d55df7f --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, biz_type, file_path, file_url, file_old_name, file_new_name, suffix_type, + file_size, business_id, sorts, remark, del, create_by, create_date, + update_by, update_date, failure_time, file_old_name as file_name + from t_attachment + + + + + + + + insert into t_attachment + + id, + biz_type, + file_path, + file_url, + file_old_name, + file_new_name, + suffix_type, + file_size, + business_id, + sorts, + remark, + del, + create_by, + create_date, + update_by, + update_date, + failure_time, + + + #{id}, + #{bizType}, + #{filePath}, + #{fileUrl}, + #{fileOldName}, + #{fileNewName}, + #{suffixType}, + #{fileSize}, + #{businessId}, + #{sorts}, + #{remark}, + #{del}, + #{createBy}, + #{createDate}, + #{updateBy}, + #{updateDate}, + #{failureTime}, + + + + + update t_attachment + + biz_type = #{bizType}, + file_url = #{fileUrl}, + file_path = #{filePath}, + file_old_name = #{fileOldName}, + file_new_name = #{fileNewName}, + suffix_type = #{suffixType}, + file_size = #{fileSize}, + business_id = #{businessId}, + sorts = #{sorts}, + remark = #{remark}, + del = #{del}, + create_by = #{createBy}, + create_date = #{createDate}, + update_by = #{updateBy}, + update_date = #{updateDate}, + failure_time = #{failureTime}, + + where id = #{id} + + + + + update t_attachment + + biz_type = #{bizType}, + file_url = #{fileUrl}, + file_path = #{filePath}, + file_old_name = #{fileOldName}, + file_new_name = #{fileNewName}, + suffix_type = #{suffixType}, + file_size = #{fileSize}, + sorts = #{sorts}, + remark = #{remark}, + del = #{del}, + create_by = #{createBy}, + create_date = #{createDate}, + update_by = #{updateBy}, + update_date = #{updateDate}, + failure_time = #{failureTime}, + + where business_id = #{businessId} + + + + delete from t_attachment where id = #{id} + + + + delete from t_attachment where id in + + #{id} + + + + + delete from t_attachment where business_id in + + #{id} + + + + + + INSERT INTO t_attachment (id, biz_type, file_path, file_url, file_old_name, file_new_name, suffix_type, file_size, business_id, sorts, remark, del, create_by, create_date) + VALUES + + #{item.id}, #{item.bizType}, #{item.filePath}, #{item.fileUrl}, #{item.fileOldName}, #{item.fileNewName}, #{item.suffixType}, #{item.fileSize}, #{item.businessId}, #{item.sorts}, #{item.remark}, #{item.del}, #{item.createBy}, #{item.createDate} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DiscussionsMapper.xml b/tool-tech-admin/src/main/resources/mapper/DiscussionsMapper.xml new file mode 100644 index 0000000..7e833ad --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/DiscussionsMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + select id, business_id, type, content, is_delete, create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_discussions + + + + + + + + insert into t_discussions + + id, + business_id, + type, + content, + is_delete, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{businessId}, + #{type}, + #{content}, + #{isDelete}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_discussions + + business_id = #{businessId}, + type = #{type}, + content = #{content}, + is_delete = #{isDelete}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_discussions where id = #{id} + + + + delete from t_discussions where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml new file mode 100644 index 0000000..5685bec --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + select id, category_name, category_description, parent_id, create_by, create_by_id, create_time, + update_by, update_by_id, update_time, types from t_document_category + + + + + + + + insert into t_document_category + + id, + category_name, + category_description, + parent_id, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + types, + + + #{id}, + #{categoryName}, + #{categoryDescription}, + #{parentId}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + #{types}, + + + + + update t_document_category + + category_name = #{categoryName}, + category_description = #{categoryDescription}, + parent_id = #{parentId}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + types = #{types}, + + where id = #{id} + + + + delete from t_document_category where id = #{id} + + + + delete from t_document_category where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index d4673b3..5a9176d 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -10,6 +10,7 @@ + @@ -18,23 +19,59 @@ + + + + + + + + - select doc_id, doc_code, doc_name, doc_type, doc_principals, doc_resp_dept, doc_source, doc_status, doc_url, create_by, create_time, update_by, update_time from t_document + select doc_id, doc_code, doc_name, doc_type, doc_principals, doc_resp_dept, + doc_source, doc_status, doc_url, create_by, create_time,doc_principals_name, + update_by, update_time, remark, doc_category_id,is_deleted,tool_id from t_document + select t.doc_type as types, sum(1) as statistics from t_document t where t.is_deleted = '0' group by t.doc_type; + + + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml new file mode 100644 index 0000000..7f086ee --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, business_id,business_type,att_id,att_name + create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_download_count + + + + + + + + insert into t_download_count + + id, + business_id, + business_type, + att_id, + att_name, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{businessId}, + #{businessType}, + #{attId}, + #{attName}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_download_count + + business_id = #{businessId}, + business_type = #{businessType}, + att_id = #{attId}, + att_name = #{attName}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_download_count where id = #{id} + + + + delete from t_download_count where id in + + #{id} + + + + + + + + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml new file mode 100644 index 0000000..a10ffab --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + select id, discussion_id, rep_id, content, is_delete, create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_replies + + + + + + + + insert into t_replies + + id, + discussion_id, + rep_id, + content, + is_delete, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{discussionId}, + #{repId}, + #{content}, + #{isDelete}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_replies + + discussion_id = #{discussionId}, + rep_id = #{repId}, + content = #{content}, + is_delete = #{isDelete}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_replies where id = #{id} + + + + delete from t_replies where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml new file mode 100644 index 0000000..11349b1 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, user_id, nick_name, tool_id, apply_type, proc_title, proc_inst_id, end_time, dept_id, record_status, dept_name, reason, create_by, create_time, update_by, update_time from t_tool_apply + + + + + + + + + + insert into t_tool_apply + + id, + user_id, + tool_id, + proc_title, + apply_type, + nick_name, + dept_id, + dept_name, + reason, + create_by, + create_time, + update_by, + update_time, + proc_inst_id, + end_time, + record_status, + + + #{id}, + #{userId}, + #{toolId}, + #{procTitle}, + #{applyType}, + #{nickName}, + #{deptId}, + #{deptName}, + #{reason}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{endTime}, + #{procInstId}, + #{recordStatus}, + + + + + update t_tool_apply + + user_id = #{userId}, + nick_name = #{nickName}, + tool_id = #{toolId}, + proc_title = #{procTitle}, + apply_type = #{applyType}, + dept_id = #{deptId}, + dept_name = #{deptName}, + reason = #{reason}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + end_time = #{endTime}, + record_status = #{recordStatus}, + + where id = #{id} + + + + delete from t_tool_apply where id = #{id} + + + + delete from t_tool_apply where id in + + #{id} + + + + + + + diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index 6482e69..143b10a 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -18,13 +18,15 @@ + - + + @@ -38,7 +40,7 @@ - select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time from t_tool + select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time,proc_inst_id,record_status,association from t_tool + + insert into t_tool @@ -68,6 +75,9 @@ create_time, update_by, update_time, + proc_inst_id, + record_status, + association, #{toolId}, @@ -89,12 +99,16 @@ #{createTime}, #{updateBy}, #{updateTime}, + #{procInstId}, + #{recordStatus}, + #{association}, update t_tool + tool_code = #{toolCode}, tool_name = #{toolName}, tool_type = #{toolType}, tool_source = #{toolSource}, @@ -112,24 +126,49 @@ create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, + record_status = #{recordStatus}, + association = #{association}, where tool_id = #{toolId} + + @@ -154,4 +213,14 @@ #{toolId} - \ No newline at end of file + + + + + diff --git a/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml new file mode 100644 index 0000000..681c0e4 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + select id, resource_id, target_id from t_tool_relation + + + + + + + + + + + insert into t_tool_relation + + id, + resource_id, + target_id, + + + #{id}, + #{resourceId}, + #{targetId}, + + + + + update t_tool_relation + + resource_id = #{resourceId}, + target_id = #{targetId}, + + where id = #{id} + + + + delete from t_tool_relation where id = #{id} + + + + delete from t_tool_relation where resource_id = #{resourceId} and target_id = #{targetId} + + + + delete from t_tool_relation where target_id = #{targetId} and resource_id = #{resourceId} + + + + delete from t_tool_relation where id in + + #{id} + + + + + + + insert into t_tool_relation (id, resource_id, target_id) + values + + #{item.id}, #{item.resourceId}, #{item.targetId} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml new file mode 100644 index 0000000..b5f34a4 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, business_id, business_type, receiver_id, states, content, deleted, create_by, + create_time, update_by, update_time, + remark,create_by_id,update_by_id from tz_message + + + + + + + + insert into tz_message + + id, + receiver_id, + business_id, + business_type, + states, + content, + deleted, + create_by, + create_time, + update_by, + update_time, + remark, + create_by_id, + update_by_id, + + + #{id}, + #{receiverId}, + #{businessId}, + #{businessType}, + #{states}, + #{content}, + #{deleted}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{createById}, + #{updateById}, + + + + + update tz_message + + receiver_id = #{receiverId}, + business_id = #{businessId}, + business_type = #{businessType}, + states = #{states}, + content = #{content}, + deleted = #{deleted}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + create_by_id = #{createById}, + update_by_id = #{updateById}, + + where id = #{id} + + + + delete from tz_message where id = #{id} + + + + delete from tz_message where id in + + #{id} + + + + + update tz_message set states = '2',update_by = #{updateBy},update_time = #{updateTime},update_by_id = #{updateById} where receiver_id = #{receiverId} + + + + + insert into tz_message (id, business_id, business_type, receiver_id, states, content, deleted, create_by, create_by_id, create_time) + values + + #{item.id}, #{item.businessId}, #{item.businessType}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime} + + + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml b/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml new file mode 100644 index 0000000..0ffa7f9 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + select id, apply_id, tool_id, tool_code, tool_name, tool_type, tool_principals, tool_principals_name, tool_resp_dept from t_use_apply_item + + + + + + + + insert into t_use_apply_item + + id, + apply_id, + tool_id, + tool_code, + tool_name, + tool_type, + tool_principals, + tool_principals_name, + tool_resp_dept, + + + #{id}, + #{applyId}, + #{toolId}, + #{toolCode}, + #{toolName}, + #{toolType}, + #{toolPrincipals}, + #{toolPrincipalsName}, + #{toolRespDept}, + + + + + update t_use_apply_item + + apply_id = #{applyId}, + tool_id = #{toolId}, + tool_code = #{toolCode}, + tool_name = #{toolName}, + tool_type = #{toolType}, + tool_principals = #{toolPrincipals}, + tool_principals_name = #{toolPrincipalsName}, + tool_resp_dept = #{toolRespDept}, + + where id = #{id} + + + + delete from t_use_apply_item where id = #{id} + + + + delete from t_use_apply_item where id in + + #{id} + + + + + delete from t_use_apply_item where apply_id = #{applyId} + + diff --git a/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml b/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml new file mode 100644 index 0000000..a856b3d --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, proc_inst_id, proc_def_key, business_id, act_def_id, act_def_name, next_def_id, next_def_name, act_inst_id, opinion, sender, sender_dept_id, receiver, act_status, create_time, update_time, pass, tenant_id, review, batch from t_workflow_log + + + + + + + + insert into t_workflow_log + + id, + proc_inst_id, + proc_def_key, + business_id, + act_def_id, + act_def_name, + next_def_id, + next_def_name, + act_inst_id, + opinion, + sender, + sender_dept_id, + receiver, + act_status, + create_time, + update_time, + pass, + tenant_id, + review, + batch, + + + #{id}, + #{procInstId}, + #{procDefKey}, + #{businessId}, + #{actDefId}, + #{actDefName}, + #{nextDefId}, + #{nextDefName}, + #{actInstId}, + #{opinion}, + #{sender}, + #{senderDeptId}, + #{receiver}, + #{actStatus}, + #{createTime}, + #{updateTime}, + #{pass}, + #{tenantId}, + #{review}, + #{batch}, + + + + + update t_workflow_log + + proc_inst_id = #{procInstId}, + proc_def_key = #{procDefKey}, + business_id = #{businessId}, + act_def_id = #{actDefId}, + act_def_name = #{actDefName}, + next_def_id = #{nextDefId}, + next_def_name = #{nextDefName}, + act_inst_id = #{actInstId}, + opinion = #{opinion}, + sender = #{sender}, + sender_dept_id = #{senderDeptId}, + receiver = #{receiver}, + act_status = #{actStatus}, + create_time = #{createTime}, + update_time = #{updateTime}, + pass = #{pass}, + tenant_id = #{tenantId}, + review = #{review}, + batch = #{batch}, + + where id = #{id} + + + + delete from t_workflow_log where id = #{id} + + + + delete from t_workflow_log where id in + + #{id} + + + diff --git a/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java b/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java new file mode 100644 index 0000000..9d5239f --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java @@ -0,0 +1,26 @@ +package com.rzdata.common.config; + +import cn.hutool.core.lang.Snowflake; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 雪花算法订单号生成 + * @author lanhai + */ +@Configuration +public class SnowflakeConfig { + + @Value("${application.datacenterId}") + private Long datacenterId; + + @Value("${application.workerId}") + private Long workerId; + + @Bean + public Snowflake snowflake() { + return new Snowflake(workerId, datacenterId); + } + +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java index 8c0c291..4527b92 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java @@ -10,7 +10,7 @@ public class CacheConstants /** * 登录用户 redis key */ - public static final String LOGIN_TOKEN_KEY = "ja_login_tokens:"; + public static final String LOGIN_TOKEN_KEY = "ja_tool_login_tokens:"; /** * 验证码 redis key diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index b540865..612835f 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -5,7 +5,7 @@ import io.jsonwebtoken.Claims; /** * 通用常量信息 - * + * * @author jian */ public class Constants @@ -170,4 +170,58 @@ public class Constants */ public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.rzdata.common.utils.file", "com.rzdata.common.config", "com.rzdata.generator" }; + + /** + * 查看审批中的工具权限 + */ + public static final String VIEW_TOOL_PERMISSION = "view:doing:tool"; + + /** + * 查看审批中的工具权限 + */ + public static final String DOWNLOAD_TOOL_PERMISSION = "download:done:tool"; + + + + /** 文档-状态-已发布 **/ + public static final String DOC_STATUS_YFB = "yfb"; + /** 文档-状态-已上传 **/ + public static final String DOC_STATUS_YSC = "ysc"; + /** 文档-状态-审核中 **/ + public static final String DOC_STATUS_SHZ = "shz"; + + /** 文档-doc **/ + public static final String DOC_TYPE_DOC = "doc"; + /** 工具状态 **/ + public static final String ATT_TYPE_TOOL = "tool"; + + + public static final String STR_ZERO = "0"; + public static final String STR_ONE = "1"; + + /** + * 申请类型-发布申请 + */ + public static final String TOOL_APPLY_TYPE_PUBLISH = "publish"; + + /** + * 申请类型-使用申请 + */ + public static final String TOOL_APPLY_TYPE_USE = "use"; + + public static final String DOC_DOWNLOAD_PERMISSION = "document:download"; + public static final String DOC_VIEW_PERMISSION = "document:query:data:all"; + + /** 申请查看素哟偶数据 **/ + public static final String APPLY_VIEW_ALL_PERMISSION = "system:apply:all:view"; + + public static final String FILE_DOWNLOAD = "download"; + public static final String FILE_PREVIEW = "preview"; + public static final String FILE_TYPE_DOC = ".doc"; + public static final String FILE_TYPE_PDF = ".pdf"; + public static final String SYMBOL_POINT = "."; + /** + * URL路径符 + */ + public final static String SEPARATOR ="/"; } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java new file mode 100644 index 0000000..ce7ff3a --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java @@ -0,0 +1,54 @@ +package com.rzdata.common.core.domain; + +import com.rzdata.common.annotation.Excel; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 文档资源分类管理对象 t_document_category + * + * @author spongepan + * @date 2024-08-27 + */ +@Data +public class DocumentCategory extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private String id; + + /** 分类名称 */ + @Excel(name = "分类名称") + private String categoryName; + + /** 分类描述 */ + @Excel(name = "分类描述") + private String categoryDescription; + + /** 父分类ID,如果是一级分类,则为空 */ + @Excel(name = "父分类ID,如果是一级分类,则为空") + private String parentId; + + /** 创建人id */ + @Excel(name = "创建人id") + private String createById; + + /** 更新人id */ + @Excel(name = "更新人id") + private String updateById; + + /** 类型(system:系统,user:用户创建) */ + @Excel(name = "类型") + private String types; + + /** 文档分类id */ + @Excel(name = "文档分类id") + private String docCategoryId; + + /** 子分类 */ + private List children = new ArrayList(); + +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java new file mode 100644 index 0000000..2612b7a --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java @@ -0,0 +1,48 @@ +package com.rzdata.common.core.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.core.domain.entity.SysMenu; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author ruoyi + */ +@Data +public class ToolTreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private String id; + + /** 节点名称 */ + private String label; + + /** 类型 */ + private String types; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public ToolTreeSelect() + { + + } + + + public ToolTreeSelect(DocumentCategory docCategory) + { + this.id = docCategory.getId(); + this.label = docCategory.getCategoryName(); + this.types = docCategory.getTypes(); + this.children = docCategory.getChildren().stream().map(ToolTreeSelect::new).collect(Collectors.toList()); + } +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java index 952babf..fc7282d 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java @@ -6,22 +6,27 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonInclude; import com.rzdata.common.core.domain.entity.SysDept; import com.rzdata.common.core.domain.entity.SysMenu; +import lombok.Data; /** * Treeselect树结构实体类 * * @author ruoyi */ +@Data public class TreeSelect implements Serializable { private static final long serialVersionUID = 1L; /** 节点ID */ private Long id; - + private String categoryId; /** 节点名称 */ private String label; + /** 类型 */ + private String types; + /** 子节点 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; @@ -45,33 +50,15 @@ public class TreeSelect implements Serializable this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } - public Long getId() + + public TreeSelect(DocumentCategory docCategory) { - return id; + this.id = Long.valueOf(docCategory.getId()); + this.categoryId = docCategory.getId(); + this.label = docCategory.getCategoryName(); + this.types = docCategory.getTypes(); + this.children = docCategory.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } - public void setId(Long id) - { - this.id = id; - } - public String getLabel() - { - return label; - } - - public void setLabel(String label) - { - this.label = label; - } - - public List getChildren() - { - return children; - } - - public void setChildren(List children) - { - this.children = children; - } } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/entity/SysDept.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/entity/SysDept.java index 2a87bda..0a27333 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/entity/SysDept.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/entity/SysDept.java @@ -31,6 +31,8 @@ public class SysDept extends BaseEntity /** 部门名称 */ private String deptName; + private String deptType; + /** 显示顺序 */ private Integer orderNum; @@ -97,6 +99,16 @@ public class SysDept extends BaseEntity this.deptName = deptName; } + public String getDeptType() + { + return deptType; + } + + public void setDeptType(String deptType) + { + this.deptType = deptType; + } + @NotNull(message = "显示顺序不能为空") public Integer getOrderNum() { diff --git a/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java b/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java new file mode 100644 index 0000000..9b3db38 --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java @@ -0,0 +1,49 @@ +package com.rzdata.common.enums; + + +public enum RecordStatusEnum { + + /** + * 草稿 + */ + DRAFT("draft","草稿"), + + /** + * 进行中 + */ + DOING("doing","进行中"), + + /** + * 已完成 + */ + DONE("done","已办结"), + + /** + * 作废 + */ + CANCEL("cancel","已撤销"); + + RecordStatusEnum(String code, String msg) { + this.code = code; + this.msg = msg; + } + private String code; + private String msg; + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } + + public static String getMsg(String code){ + for (RecordStatusEnum recordStatusEnum : RecordStatusEnum.values()){ + if(recordStatusEnum.getCode().equals(code)){ + return recordStatusEnum.getMsg(); + } + } + return ""; + } +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java b/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java index d18b825..09504aa 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java @@ -5,6 +5,8 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.Objects; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.rzdata.common.listener.PutObjectProgressListener; import org.apache.commons.io.FilenameUtils; import org.springframework.util.Assert; @@ -280,4 +282,58 @@ public class FileUploadUtils } return extension; } + + /** + * 生成合并后的文件路径 + * + * @param baseDir 文件存储根目录 + * @param fileName 上传的文件名 + * @return 合并后文件的完整路径 + */ + public static String generateMergedFilePath(String baseDir, String fileName) { + // 获取当前日期路径 + String datePath = DateUtil.today().replace("-", "/"); + + // 获取文件的基本名称和扩展名 + String baseName = StrUtil.subBefore(fileName, ".", true); + String extension = StrUtil.subAfter(fileName, ".", true); + + // 生成唯一文件名,使用时间戳 + String uniqueFileName = baseName + "_" + System.currentTimeMillis() + "." + extension; + + // 合并文件路径: baseDir/yyyy/MM/dd/uploadId/uniqueFileName + String mergedFilePath = Paths.get(baseDir, datePath, uniqueFileName).toString(); + + return mergedFilePath; + } + + + /** + * 获取文件名称 + * + * @param baseDir 文件存储根目录 + * @param fileNames 上传的文件名 + * @return 合并后文件的完整路径 + */ + public static String getFilePath(String baseDir, String fileNames) { + String extension = StrUtil.subAfter(fileNames, ".", true); + + String fileName = StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), + FilenameUtils.getBaseName(fileNames), Seq.getId(Seq.uploadSeqType), extension);; + + try { + return getPathFileName(baseDir, fileName); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public static String extractSuffix(String filePath) { + int lastDotIndex = filePath.lastIndexOf('.'); + if (lastDotIndex == -1) { + return ""; // 没有后缀 + } + return filePath.substring(lastDotIndex + 1); // 去掉点(.) + } } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java b/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java index a5efc45..8232a9d 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java @@ -88,7 +88,7 @@ import com.rzdata.common.utils.reflect.ReflectUtils; /** * Excel相关处理 - * + * * @author ruoyi */ public class ExcelUtil @@ -210,9 +210,11 @@ public class ExcelUtil * @param fields 列属性名 示例[单个"name"/多个"id","name"] * @throws Exception */ - public void hideColumn(String... fields) + public void hideColumn(List fields) { - this.excludeFields = fields; + if (fields!=null) { + this.excludeFields = fields.toArray(new String[0]); + } } public void init(List list, String sheetName, String title, Type type) @@ -285,7 +287,7 @@ public class ExcelUtil /** * 对excel表单默认第一个索引名转换成list - * + * * @param is 输入流 * @return 转换后集合 */ @@ -310,7 +312,7 @@ public class ExcelUtil /** * 对excel表单默认第一个索引名转换成list - * + * * @param is 输入流 * @param titleNum 标题占用行数 * @return 转换后集合 @@ -322,7 +324,7 @@ public class ExcelUtil /** * 对excel表单指定表格索引名转换成list - * + * * @param sheetName 表格索引名 * @param titleNum 标题占用行数 * @param is 输入流 @@ -506,7 +508,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param list 导出数据集合 * @param sheetName 工作表的名称 * @return 结果 @@ -518,7 +520,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param list 导出数据集合 * @param sheetName 工作表的名称 * @param title 标题 @@ -532,7 +534,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param response 返回数据 * @param list 导出数据集合 * @param sheetName 工作表的名称 @@ -545,7 +547,21 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @return 结果 + */ + public void exportExcel(HttpServletResponse response, List list, String sheetName,List excludeFields) + { + hideColumn(excludeFields); + exportExcel(response, list, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * * @param response 返回数据 * @param list 导出数据集合 * @param sheetName 工作表的名称 @@ -562,7 +578,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -573,7 +589,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @param title 标题 * @return 结果 @@ -586,7 +602,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -597,7 +613,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @param title 标题 * @return 结果 @@ -612,7 +628,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public void exportExcel(HttpServletResponse response) @@ -634,7 +650,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public AjaxResult exportExcel() @@ -702,7 +718,7 @@ public class ExcelUtil /** * 填充excel数据 - * + * * @param index 序号 * @param row 单元格行 */ @@ -773,7 +789,7 @@ public class ExcelUtil /** * 创建表格样式 - * + * * @param wb 工作薄对象 * @return 样式列表 */ @@ -828,7 +844,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格头样式 - * + * * @param wb 工作薄对象 * @return 自定义样式列表 */ @@ -864,7 +880,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格列样式 - * + * * @param wb 工作薄对象 * @return 自定义样式列表 */ @@ -896,7 +912,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格列样式 - * + * * @param styles 自定义样式列表 * @param field 属性列信息 * @param excel 注解信息 @@ -958,7 +974,7 @@ public class ExcelUtil /** * 设置单元格信息 - * + * * @param value 单元格值 * @param attr 注解相关 * @param cell 单元格信息 @@ -1138,7 +1154,7 @@ public class ExcelUtil /** * 设置 POI XSSFSheet 单元格提示或选择框 - * + * * @param sheet 表单 * @param textlist 下拉框显示的内容 * @param promptContent 提示内容 @@ -1175,7 +1191,7 @@ public class ExcelUtil /** * 设置某些列的值只能输入预制的数据,显示下拉框(兼容超出一定数量的下拉框). - * + * * @param sheet 要设置的sheet. * @param textlist 下拉框显示的内容 * @param promptContent 提示内容 @@ -1227,7 +1243,7 @@ public class ExcelUtil /** * 解析导出值 0=男,1=女,2=未知 - * + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -1264,7 +1280,7 @@ public class ExcelUtil /** * 反向解析值 男=0,女=1,未知=2 - * + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -1301,7 +1317,7 @@ public class ExcelUtil /** * 解析字典值 - * + * * @param dictValue 字典值 * @param dictType 字典类型 * @param separator 分隔符 @@ -1314,7 +1330,7 @@ public class ExcelUtil /** * 反向解析值字典值 - * + * * @param dictLabel 字典标签 * @param dictType 字典类型 * @param separator 分隔符 @@ -1327,7 +1343,7 @@ public class ExcelUtil /** * 数据处理器 - * + * * @param value 数据值 * @param excel 数据注解 * @return @@ -1404,7 +1420,7 @@ public class ExcelUtil /** * 获取下载路径 - * + * * @param filename 文件名称 */ public String getAbsoluteFile(String filename) @@ -1420,7 +1436,7 @@ public class ExcelUtil /** * 获取bean中的属性值 - * + * * @param vo 实体对象 * @param field 字段 * @param excel 注解 @@ -1451,7 +1467,7 @@ public class ExcelUtil /** * 以类的属性的get方法方法形式获取值 - * + * * @param o * @param name * @return value @@ -1557,7 +1573,7 @@ public class ExcelUtil /** * 创建工作表 - * + * * @param sheetNo sheet数量 * @param index 序号 */ @@ -1574,7 +1590,7 @@ public class ExcelUtil /** * 获取单元格值 - * + * * @param row 获取的行 * @param column 获取单元格列号 * @return 单元格值 @@ -1634,7 +1650,7 @@ public class ExcelUtil /** * 判断是否是空行 - * + * * @param row 判断的行 * @return */ @@ -1722,7 +1738,7 @@ public class ExcelUtil /** * 格式化不同类型的日期对象 - * + * * @param dateFormat 日期格式 * @param val 被格式化的日期对象 * @return 格式化后的日期字符 @@ -1788,7 +1804,7 @@ public class ExcelUtil /** * 获取对象的子列表方法 - * + * * @param name 名称 * @param pojoClass 类对象 * @return 子列表方法 diff --git a/tool-tech-file-view/src/main/bin/showlog.sh b/tool-tech-file-view/src/main/bin/showlog.sh index 5f32596..a28138b 100644 --- a/tool-tech-file-view/src/main/bin/showlog.sh +++ b/tool-tech-file-view/src/main/bin/showlog.sh @@ -1,2 +1,2 @@ #!/bin/bash -tail -fn 300 ../log/kkFileView.log \ No newline at end of file +tail -fn 300 ../log/toolTechFileView.log \ No newline at end of file diff --git a/tool-tech-file-view/src/main/bin/shutdown.sh b/tool-tech-file-view/src/main/bin/shutdown.sh index a505923..a8cacb3 100644 --- a/tool-tech-file-view/src/main/bin/shutdown.sh +++ b/tool-tech-file-view/src/main/bin/shutdown.sh @@ -1,21 +1,13 @@ #!/bin/bash -# -# -############################# -# Author: sanxi -# Version: 1.0 -# Date: 2021/09/17 -# Description: v1.0:修改kkFileView关闭进程机制 -############################# -# -KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) -PID_FILE_NAME="kkFileView.pid" -PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" -export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER + +TTFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) +PID_FILE_NAME="toolTechFileView.pid" +PID_FILE="${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" +export TTFILEVIEW_BIN_FOLDER=$TTFILEVIEW_BIN_FOLDER # ## pid文件是否存在 if [ ! -e "$PID_FILE" ]; then - echo "kkFileView.pid文件不存在!" + echo "toolTechFileView.pid文件不存在!" exit 1 else ## 文件不为空代表程序正在运行,则循环关闭进程。 @@ -31,6 +23,6 @@ else # 关闭所有进程后,重置pid。 cat /dev/null > "$PID_FILE" else - echo "kkFileView进程尚未运行!" + echo "toolTechFileView进程尚未运行!" fi fi diff --git a/tool-tech-file-view/src/main/bin/startup.bat b/tool-tech-file-view/src/main/bin/startup.bat index 13a1452..e6588f8 100644 --- a/tool-tech-file-view/src/main/bin/startup.bat +++ b/tool-tech-file-view/src/main/bin/startup.bat @@ -1,10 +1,7 @@ @echo off -set "KKFILEVIEW_BIN_FOLDER=%cd%" -cd "%KKFILEVIEW_BIN_FOLDER%" -echo Using KKFILEVIEW_BIN_FOLDER %KKFILEVIEW_BIN_FOLDER% -echo Starting kkFileView... -echo Please check log file in ../log/kkFileView.log for more information -echo You can get help in our official home site: https://kkview.cn -echo If you need further help, please join our kk opensource community: https://t.zsxq.com/09ZHSXbsQ -echo If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers -java -Dspring.config.location=..\config\application.properties -jar kkFileView-4.4.0-beta.jar -> ..\log\kkFileView.log +set "TTFILEVIEW_BIN_FOLDER=%cd%" +cd "%TTFILEVIEW_BIN_FOLDER%" +echo Using TTFILEVIEW_BIN_FOLDER %TTFILEVIEW_BIN_FOLDER% +echo Starting toolTechFileView... +echo Please check log file in ../log/toolTechFileView.log for more information +java -Dspring.config.location=..\config\application.properties -jar tool-tech-file-view-4.4.0.jar -> ..\log\toolTechFileView.log diff --git a/tool-tech-file-view/src/main/bin/startup.sh b/tool-tech-file-view/src/main/bin/startup.sh index 1a7f129..d0927ba 100644 --- a/tool-tech-file-view/src/main/bin/startup.sh +++ b/tool-tech-file-view/src/main/bin/startup.sh @@ -1,25 +1,16 @@ #!/bin/bash -# -# -############################# -# First_Author: 凯京科技 -# Second_Author: sanxi -# Version: 1.1 -# Date: 2021/09/17 -# Description: v1.1:修改进程启动机制为pid形式。 -############################# -# + DIR_HOME=("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1" "/opt/libreoffice7.2" "/opt/libreoffice7.3" "/opt/libreoffice7.4" "/opt/libreoffice7.5" "/opt/libreoffice7.6" "/opt/openoffice4" "/usr/lib/openoffice" "/usr/lib/libreoffice") FLAG= OFFICE_HOME= -KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) -PID_FILE_NAME="kkFileView.pid" -PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" -export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER +TTFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) +PID_FILE_NAME="toolTechFileView.pid" +PID_FILE="${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" +export TTFILEVIEW_BIN_FOLDER=$TTFILEVIEW_BIN_FOLDER # ## 如pid文件不存在则自动创建 if [ ! -f ${PID_FILE_NAME} ]; then - touch "${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" + touch "${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" fi ## 判断当前是否有进程处于运行状态 if [ -s "${PID_FILE}" ]; then @@ -27,8 +18,8 @@ if [ -s "${PID_FILE}" ]; then echo "进程已处于运行状态,进程号为:${PID}" exit 1 else - cd "$KKFILEVIEW_BIN_FOLDER" || exit 1 - echo "Using KKFILEVIEW_BIN_FOLDER $KKFILEVIEW_BIN_FOLDER" + cd "$TTFILEVIEW_BIN_FOLDER" || exit 1 + echo "Using TTFILEVIEW_BIN_FOLDER $TTFILEVIEW_BIN_FOLDER" grep 'office\.home' ../config/application.properties | grep '!^#' if [ $? -eq 0 ]; then echo "Using customized office.home" @@ -50,12 +41,9 @@ else fi ## 启动kkFileView - echo "Starting kkFileView..." - nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.4.0-beta.jar > ../log/kkFileView.log 2>&1 & + echo "Starting ToolTechFileView..." + nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar tool-tech-file-view-4.4.0.jar > ../log/toolTechFileView.log 2>&1 & echo "Please execute ./showlog.sh to check log for more information" - echo "You can get help in our official home site: https://kkview.cn" - echo "If you need further help, please join our kk opensource community: https://t.zsxq.com/09ZHSXbsQ" - echo "If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers" PROCESS=$(ps -ef | grep -v grep | grep java | grep kkFileView | awk 'NR==1{print $2}') # 启动成功后将进程号写入pid文件 echo "$PROCESS" > "$PID_FILE" diff --git a/tool-tech-file-view/src/main/resources/banner.txt b/tool-tech-file-view/src/main/resources/banner.txt index 043fb51..ad7fab2 100644 --- a/tool-tech-file-view/src/main/resources/banner.txt +++ b/tool-tech-file-view/src/main/resources/banner.txt @@ -1,14 +1,9 @@ - _ _ ______ _ _ __ __ _ - | | | | | ____| (_) | | \ \ / / (_) - | | __ | | __ | |__ _ | | ___ \ \ / / _ ___ __ __ - | |/ / | |/ / | __| | | | | / _ \ \ \/ / | | / _ \ \ \ /\ / / - | < | < | | | | | | | __/ \ / | | | __/ \ V V / - |_|\_\ |_|\_\ |_| |_| |_| \___| \/ |_| \___| \_/\_/ + ______ _ _ __ __ _ +| ____| (_) | | \ \ / / (_) +| |__ _ | | ___ \ \ / / _ ___ __ __ +| __| | | | | / _ \ \ \/ / | | / _ \ \ \ /\ / / +| | | | | | | __/ \ / | | | __/ \ V V / +|_| |_| |_| \___| \/ |_| \___| \_/\_/ => Spring Boot :: ${spring-boot.version} - => kkFileView :: 4.4.0-beta - => Home site :: https://kkview.cn - => Github :: https://github.com/kekingcn/kkFileView - => Gitee :: https://gitee.com/kekingcn/file-online-preview - => kk opensource community :: https://t.zsxq.com/09ZHSXbsQ diff --git a/tool-tech-file-view/src/main/resources/web/code.ftl b/tool-tech-file-view/src/main/resources/web/code.ftl index 454eb7c..e1f0ce3 100644 --- a/tool-tech-file-view/src/main/resources/web/code.ftl +++ b/tool-tech-file-view/src/main/resources/web/code.ftl @@ -44,7 +44,7 @@ * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); loadText(); } diff --git a/tool-tech-file-view/src/main/resources/web/csv.ftl b/tool-tech-file-view/src/main/resources/web/csv.ftl index d3a3a59..c4698b2 100644 --- a/tool-tech-file-view/src/main/resources/web/csv.ftl +++ b/tool-tech-file-view/src/main/resources/web/csv.ftl @@ -76,7 +76,7 @@ reader.readAsArrayBuffer(file); if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/dcm.ftl b/tool-tech-file-view/src/main/resources/web/dcm.ftl index 4d8d24f..7a74daf 100644 --- a/tool-tech-file-view/src/main/resources/web/dcm.ftl +++ b/tool-tech-file-view/src/main/resources/web/dcm.ftl @@ -96,7 +96,7 @@ ); /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/drawio.ftl b/tool-tech-file-view/src/main/resources/web/drawio.ftl index 377a97e..7eb3c54 100644 --- a/tool-tech-file-view/src/main/resources/web/drawio.ftl +++ b/tool-tech-file-view/src/main/resources/web/drawio.ftl @@ -34,7 +34,7 @@ /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/eml.ftl b/tool-tech-file-view/src/main/resources/web/eml.ftl index 5c6336d..1c9458f 100644 --- a/tool-tech-file-view/src/main/resources/web/eml.ftl +++ b/tool-tech-file-view/src/main/resources/web/eml.ftl @@ -38,7 +38,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/epub.ftl b/tool-tech-file-view/src/main/resources/web/epub.ftl index 42f0c14..52948bf 100644 --- a/tool-tech-file-view/src/main/resources/web/epub.ftl +++ b/tool-tech-file-view/src/main/resources/web/epub.ftl @@ -153,7 +153,7 @@ function blobToArrayBuffer(blob) { if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl b/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl index 78a3d5e..3cebfc2 100644 --- a/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl +++ b/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl @@ -38,7 +38,6 @@ 该(${fileType})文件,系统暂不支持在线预览,具体原因如下:

${msg}

-

有任何疑问,请加入kk开源社区知识星球咨询:https://t.zsxq.com/09ZHSXbsQ

diff --git a/tool-tech-file-view/src/main/resources/web/html.ftl b/tool-tech-file-view/src/main/resources/web/html.ftl index f4da55b..925dea9 100644 --- a/tool-tech-file-view/src/main/resources/web/html.ftl +++ b/tool-tech-file-view/src/main/resources/web/html.ftl @@ -27,7 +27,7 @@ } /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/main/index.ftl b/tool-tech-file-view/src/main/resources/web/main/index.ftl index c4ebb5f..5fcb1f0 100644 --- a/tool-tech-file-view/src/main/resources/web/main/index.ftl +++ b/tool-tech-file-view/src/main/resources/web/main/index.ftl @@ -4,7 +4,7 @@ - kkFileView演示首页 + tool-tech-file-view演示首页 @@ -64,13 +64,11 @@ @@ -79,7 +77,6 @@ <#-- 接入说明 -->
    diff --git a/tool-tech-file-view/src/main/resources/web/main/integrated.ftl b/tool-tech-file-view/src/main/resources/web/main/integrated.ftl index 5ca1115..bbce769 100644 --- a/tool-tech-file-view/src/main/resources/web/main/integrated.ftl +++ b/tool-tech-file-view/src/main/resources/web/main/integrated.ftl @@ -17,13 +17,11 @@ @@ -32,7 +30,7 @@ <#-- 接入说明 -->
    diff --git a/tool-tech-file-view/src/main/resources/web/markdown.ftl b/tool-tech-file-view/src/main/resources/web/markdown.ftl index cfd882e..b3869a3 100644 --- a/tool-tech-file-view/src/main/resources/web/markdown.ftl +++ b/tool-tech-file-view/src/main/resources/web/markdown.ftl @@ -42,7 +42,7 @@ */ window.onload = function () { $("#markdown_btn").hide() - initWaterMark(); + //initWaterMark(); loadMarkdown(); } function htmlEscape(str){ diff --git a/tool-tech-file-view/src/main/resources/web/media.ftl b/tool-tech-file-view/src/main/resources/web/media.ftl index c16d030..2d50af1 100644 --- a/tool-tech-file-view/src/main/resources/web/media.ftl +++ b/tool-tech-file-view/src/main/resources/web/media.ftl @@ -102,7 +102,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/notTrustDir.html b/tool-tech-file-view/src/main/resources/web/notTrustDir.html index 18049af..ea8f438 100644 --- a/tool-tech-file-view/src/main/resources/web/notTrustDir.html +++ b/tool-tech-file-view/src/main/resources/web/notTrustDir.html @@ -35,7 +35,6 @@

    预览源文件来自未授信的目录,请停止访问!
    - 有任何疑问,请加入kk开源社区知识星球咨询:https://t.zsxq.com/09ZHSXbsQ

    diff --git a/tool-tech-file-view/src/main/resources/web/notTrustHost.html b/tool-tech-file-view/src/main/resources/web/notTrustHost.html index acdbee8..0ac4d37 100644 --- a/tool-tech-file-view/src/main/resources/web/notTrustHost.html +++ b/tool-tech-file-view/src/main/resources/web/notTrustHost.html @@ -33,10 +33,6 @@
    -

    - 预览源文件来自不受信任的站点:${current_host} 请联系管理员!
    - 有任何疑问,请加入kk开源社区知识星球咨询:https://t.zsxq.com/09ZHSXbsQ
    -

    diff --git a/tool-tech-file-view/src/main/resources/web/ofd.ftl b/tool-tech-file-view/src/main/resources/web/ofd.ftl index d05ea30..0370305 100644 --- a/tool-tech-file-view/src/main/resources/web/ofd.ftl +++ b/tool-tech-file-view/src/main/resources/web/ofd.ftl @@ -45,7 +45,7 @@ } /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/officePicture.ftl b/tool-tech-file-view/src/main/resources/web/officePicture.ftl index e9d6903..b46fedc 100644 --- a/tool-tech-file-view/src/main/resources/web/officePicture.ftl +++ b/tool-tech-file-view/src/main/resources/web/officePicture.ftl @@ -43,7 +43,7 @@ \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/pdf.ftl b/tool-tech-file-view/src/main/resources/web/pdf.ftl index 845ac8c..756355e 100644 --- a/tool-tech-file-view/src/main/resources/web/pdf.ftl +++ b/tool-tech-file-view/src/main/resources/web/pdf.ftl @@ -55,7 +55,7 @@ /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/picture.ftl b/tool-tech-file-view/src/main/resources/web/picture.ftl index 39ea6b6..53b85ab 100644 --- a/tool-tech-file-view/src/main/resources/web/picture.ftl +++ b/tool-tech-file-view/src/main/resources/web/picture.ftl @@ -40,7 +40,7 @@ /*初始化水印*/ window.onload = function() { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/ppt.ftl b/tool-tech-file-view/src/main/resources/web/ppt.ftl index 5709205..d343aa5 100644 --- a/tool-tech-file-view/src/main/resources/web/ppt.ftl +++ b/tool-tech-file-view/src/main/resources/web/ppt.ftl @@ -138,7 +138,7 @@ } window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/svg.ftl b/tool-tech-file-view/src/main/resources/web/svg.ftl index 82f4f9a..3865d5b 100644 --- a/tool-tech-file-view/src/main/resources/web/svg.ftl +++ b/tool-tech-file-view/src/main/resources/web/svg.ftl @@ -46,7 +46,7 @@ createNewEmbed(url); /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/tiff.ftl b/tool-tech-file-view/src/main/resources/web/tiff.ftl index fa1daaf..13e0e9a 100644 --- a/tool-tech-file-view/src/main/resources/web/tiff.ftl +++ b/tool-tech-file-view/src/main/resources/web/tiff.ftl @@ -105,7 +105,6 @@ html += " "; html += " 该(tif)文件,系统解析错误,具体原因如下:"; html += "

    文件[${file.name}]解析失败,请联系系统管理员

    "; html += "
    "; -html += "

    有任何疑问,请加入kk开源社区知识星球咨询:https://t.zsxq.com/09ZHSXbsQ

    "; html += "
"; html += ""; html += ""; @@ -139,7 +138,7 @@ html += ""; /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/txt.ftl b/tool-tech-file-view/src/main/resources/web/txt.ftl index bb7167a..c5a3239 100644 --- a/tool-tech-file-view/src/main/resources/web/txt.ftl +++ b/tool-tech-file-view/src/main/resources/web/txt.ftl @@ -288,7 +288,7 @@ background-color:#000000 * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); } <#else/> @@ -322,7 +322,7 @@ background-color:#000000 * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); loadText(); } diff --git a/tool-tech-file-view/src/main/resources/web/xmind.ftl b/tool-tech-file-view/src/main/resources/web/xmind.ftl index 3912e34..f7dedea 100644 --- a/tool-tech-file-view/src/main/resources/web/xmind.ftl +++ b/tool-tech-file-view/src/main/resources/web/xmind.ftl @@ -47,7 +47,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/xml.ftl b/tool-tech-file-view/src/main/resources/web/xml.ftl index dd7a277..c05938b 100644 --- a/tool-tech-file-view/src/main/resources/web/xml.ftl +++ b/tool-tech-file-view/src/main/resources/web/xml.ftl @@ -43,7 +43,7 @@ */ window.onload = function () { $("#xml_btn").hide() - initWaterMark(); + //initWaterMark(); loadXmlData() } diff --git a/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java b/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java index a4a3d01..af163f3 100644 --- a/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java +++ b/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java @@ -131,7 +131,12 @@ public class DataScopeAspect } else if (DATA_SCOPE_DEPT.equals(dataScope)) { - sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + if (StringUtils.isNotBlank(userAlias)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id = {} Or {}.user_id = {}", deptAlias, user.getDeptId() , userAlias, user.getUserId())); + }else{ + sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + } } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { diff --git a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java index 4852a4f..7c688aa 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java @@ -6,14 +6,14 @@ import com.rzdata.common.core.domain.entity.SysDept; /** * 部门管理 数据层 - * + * * @author jian */ public interface SysDeptMapper { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +21,7 @@ public interface SysDeptMapper /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 @@ -30,7 +30,7 @@ public interface SysDeptMapper /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -38,7 +38,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门 - * + * * @param deptId 部门ID * @return 部门列表 */ @@ -46,7 +46,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -54,7 +54,7 @@ public interface SysDeptMapper /** * 是否存在子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -62,7 +62,7 @@ public interface SysDeptMapper /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 */ @@ -70,7 +70,7 @@ public interface SysDeptMapper /** * 校验部门名称是否唯一 - * + * * @param deptName 部门名称 * @param parentId 父部门ID * @return 结果 @@ -79,7 +79,7 @@ public interface SysDeptMapper /** * 新增部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -87,7 +87,7 @@ public interface SysDeptMapper /** * 修改部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -95,14 +95,14 @@ public interface SysDeptMapper /** * 修改所在部门正常状态 - * + * * @param deptIds 部门ID组 */ public void updateDeptStatusNormal(Long[] deptIds); /** * 修改子元素关系 - * + * * @param depts 子元素 * @return 结果 */ @@ -110,9 +110,11 @@ public interface SysDeptMapper /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ public int deleteDeptById(Long deptId); + + String getDeptNameByDeptId(String deptId); } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java index d9a5e66..059ba8c 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java @@ -18,6 +18,14 @@ public interface SysDictTypeMapper */ public List selectDictTypeList(SysDictType dictType); + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectBizDictTypeList(SysDictType dictType); + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java index 35b3528..9910372 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java @@ -6,14 +6,14 @@ import com.rzdata.common.core.domain.entity.SysDept; /** * 部门管理 服务层 - * + * * @author jian */ public interface ISysDeptService { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +21,7 @@ public interface ISysDeptService /** * 查询部门树结构信息 - * + * * @param dept 部门信息 * @return 部门树信息集合 */ @@ -29,7 +29,7 @@ public interface ISysDeptService /** * 构建前端所需要树结构 - * + * * @param depts 部门列表 * @return 树结构列表 */ @@ -37,7 +37,7 @@ public interface ISysDeptService /** * 构建前端所需要下拉树结构 - * + * * @param depts 部门列表 * @return 下拉树结构列表 */ @@ -45,7 +45,7 @@ public interface ISysDeptService /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @return 选中部门列表 */ @@ -53,7 +53,7 @@ public interface ISysDeptService /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -61,7 +61,7 @@ public interface ISysDeptService /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -69,7 +69,7 @@ public interface ISysDeptService /** * 是否存在部门子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -77,7 +77,7 @@ public interface ISysDeptService /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 true 存在 false 不存在 */ @@ -85,7 +85,7 @@ public interface ISysDeptService /** * 校验部门名称是否唯一 - * + * * @param dept 部门信息 * @return 结果 */ @@ -93,14 +93,14 @@ public interface ISysDeptService /** * 校验部门是否有数据权限 - * + * * @param deptId 部门id */ public void checkDeptDataScope(Long deptId); /** * 新增保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -108,7 +108,7 @@ public interface ISysDeptService /** * 修改保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -116,9 +116,11 @@ public interface ISysDeptService /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ public int deleteDeptById(Long deptId); + + String getDeptName(String deptId); } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java index fc3d69c..d88c228 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java @@ -19,6 +19,14 @@ public interface ISysDictTypeService */ public List selectDictTypeList(SysDictType dictType); + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectBizDictTypeList(SysDictType dictType); + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java index 2f28bf0..4a83908 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java @@ -1,6 +1,7 @@ package com.rzdata.system.service.impl; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -23,7 +24,7 @@ import com.rzdata.system.service.ISysDeptService; /** * 部门管理 服务实现 - * + * * @author ruoyi */ @Service @@ -37,12 +38,11 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @Override - @DataScope(deptAlias = "d") public List selectDeptList(SysDept dept) { return deptMapper.selectDeptList(dept); @@ -50,20 +50,20 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门树结构信息 - * + * * @param dept 部门信息 * @return 部门树信息集合 */ @Override public List selectDeptTreeList(SysDept dept) { - List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + List depts = this.selectDeptList(dept); return buildDeptTreeSelect(depts); } /** * 构建前端所需要树结构 - * + * * @param depts 部门列表 * @return 树结构列表 */ @@ -90,7 +90,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 构建前端所需要下拉树结构 - * + * * @param depts 部门列表 * @return 下拉树结构列表 */ @@ -103,7 +103,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @return 选中部门列表 */ @@ -116,7 +116,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -128,7 +128,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -140,7 +140,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 是否存在子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -153,7 +153,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 true 存在 false 不存在 */ @@ -166,7 +166,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 校验部门名称是否唯一 - * + * * @param dept 部门信息 * @return 结果 */ @@ -184,7 +184,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 校验部门是否有数据权限 - * + * * @param deptId 部门id */ @Override @@ -194,7 +194,7 @@ public class SysDeptServiceImpl implements ISysDeptService { SysDept dept = new SysDept(); dept.setDeptId(deptId); - List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + List depts = deptMapper.selectDeptList(dept); if (StringUtils.isEmpty(depts)) { throw new ServiceException("没有权限访问部门数据!"); @@ -204,7 +204,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 新增保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -218,12 +218,21 @@ public class SysDeptServiceImpl implements ISysDeptService throw new ServiceException("部门停用,不允许新增"); } dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); + handleDeptType(dept); return deptMapper.insertDept(dept); } + private void handleDeptType(SysDept dept){ + String ancestors = dept.getAncestors(); + List ancestorList = Arrays.asList(ancestors.split(",")); + List ancestorFilterList = ancestorList.stream().filter(e -> + !"0".equals(e)).collect(Collectors.toList()); + dept.setDeptType(String.valueOf(ancestorFilterList.size())); + } + /** * 修改保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -251,7 +260,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改该部门的父级部门状态 - * + * * @param dept 当前部门 */ private void updateParentDeptStatusNormal(SysDept dept) @@ -263,7 +272,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改子元素关系 - * + * * @param deptId 被修改的部门ID * @param newAncestors 新的父ID集合 * @param oldAncestors 旧的父ID集合 @@ -283,7 +292,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ @@ -335,4 +344,9 @@ public class SysDeptServiceImpl implements ISysDeptService { return getChildList(list, t).size() > 0; } + + @Override + public String getDeptName(String deptId){ + return deptMapper.getDeptNameByDeptId(deptId); + } } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java index a11a689..49909aa 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java @@ -53,6 +53,18 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService return dictTypeMapper.selectDictTypeList(dictType); } + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectBizDictTypeList(SysDictType dictType) + { + return dictTypeMapper.selectBizDictTypeList(dictType); + } + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java index 0381b1f..2fd30e8 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java @@ -69,7 +69,6 @@ public class SysUserServiceImpl implements ISysUserService * @return 用户信息集合信息 */ @Override - @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { return userMapper.selectUserList(user); diff --git a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml index c5dbeac..c4f18a4 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -21,15 +22,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_type, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time from sys_dept d - + - + - + - + - + - + - + - + - + insert into sys_dept( dept_id, parent_id, dept_name, + dept_type, ancestors, order_num, leader, @@ -104,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{deptId}, #{parentId}, #{deptName}, + #{deptType}, #{ancestors}, #{orderNum}, #{leader}, @@ -114,12 +117,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - + update sys_dept parent_id = #{parentId}, dept_name = #{deptName}, + dept_type = #{deptType}, ancestors = #{ancestors}, order_num = #{orderNum}, leader = #{leader}, @@ -131,7 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where dept_id = #{deptId} - + update sys_dept set ancestors = - + - update sys_dept set status = '0' where dept_id in + update sys_dept set status = '0' where dept_id in #{deptId} - + update sys_dept set del_flag = '2' where dept_id = #{deptId} - \ No newline at end of file + + diff --git a/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml index 498c32c..d7006ed 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -40,6 +40,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + +