33 Commits

Author SHA1 Message Date
pan
6eecc5f30f 初始化脚本 2025-07-21 10:59:52 +08:00
pan
764b57ae66 本地调试 2025-07-21 10:37:57 +08:00
pan
471441918c 支持webm视频格式上传 2024-10-31 16:07:07 +08:00
90599a8f9a 1.工具管理
去除负责人和创建时间导出字段
2024-09-30 13:13:55 +08:00
hanjian
bc38b6767e 1.工具管理
新增字段【加密方式、服务时间、联系人、联系方式】
修改字段:“归属部门”修改为【归属单位】,“”测试情况“”名称修改为【测评机构】、“功能描述”修改为【功能简介】、工具状态修改为【工具形态】
涉及的功能
工具管理:工具发布、修改、提交、暂存、全量导出、批量导出、列表查询条件
2.word导出功能,批量导出未按批量执行问题修复,导出模板调整
2024-09-27 15:32:46 +08:00
pan
ac865eafc7 修复角色修改展示为空的bug 2024-09-18 09:29:26 +08:00
49f330b35a Merge pull request 'release-v1.0' (#1) from release-v1.0 into main
Reviewed-on: #1
2024-09-13 17:03:01 +08:00
hanjian
dca0dcb298 update 2024-09-10 01:10:52 +08:00
hanjian
596a721894 update 2024-09-09 16:40:32 +08:00
hanjian
045d857ae2 update 2024-09-09 14:28:36 +08:00
pan
6c53e4c9ae 修复分片上传bug 2024-09-09 13:51:34 +08:00
pan
d461048c74 调整 2024-09-09 01:18:41 +08:00
pan
d3ec27eb1b 1、修复禅道bug 2024-09-08 23:10:11 +08:00
pan
1523a4db4f 调整 2024-09-08 20:34:39 +08:00
hanjian
b69682c2d0 update 2024-09-08 20:32:22 +08:00
pan
5607c957fb 数据权限调整 2024-09-07 20:53:10 +08:00
pan
7131d744a4 1、右上角新增消息中心提示
2、消息中心新增连接点击打开对应的详情页面
3、页面样式调整,关联附件新增前端分页
2024-09-06 19:59:46 +08:00
pan
f90c8e0c6f 1、新增文档和工具统计
2、样式调整
3、文件下载分页(还有一部分没有调整)
2024-09-05 22:36:07 +08:00
pan
3d679da3c3 1、文档、工具独立调整 2024-09-05 21:26:23 +08:00
pan
6f70344177 1、关联工具独立出来
2、工具管理对应的都要调整
2024-09-05 08:58:44 +08:00
hanjian
3b86d79ea0 Merge remote-tracking branch 'origin/v1.0' into v1.0 2024-09-04 22:16:02 +08:00
hanjian
c57babe9ce update 2024-09-04 22:15:51 +08:00
pan
801ad634dc 1、问题调整 2024-09-03 17:30:11 +08:00
pan
df7e623f4f 1.所有搜索样式调整
2.统计分析调整
3.导出word格式调整
2024-09-03 16:16:36 +08:00
pan
e690285338 1、新增文档详情、评论,和导出word功能 2024-09-03 09:28:01 +08:00
hanjian
aa5178ac92 update 2024-09-02 20:54:44 +08:00
pan
a869af50be 1.字典管理权限调整 2024-09-02 18:06:41 +08:00
pan
242fa6736e 1、发布工具权限逻辑调整 2024-09-02 17:14:52 +08:00
pan
ca62286f98 1、消息中心调整 2024-09-02 13:33:29 +08:00
pan
cfa8f461fa Merge remote-tracking branch 'origin/v1.0' into v1.0 2024-09-02 11:11:34 +08:00
pan
a9324dffcf 测试环境调整 2024-09-02 11:11:20 +08:00
hanjian
a719d62deb Merge remote-tracking branch 'origin/v1.0' into v1.0 2024-09-02 11:08:54 +08:00
hanjian
29ce3e1ce9 update 2024-09-02 11:08:42 +08:00
100 changed files with 3411 additions and 321 deletions

1483
sql/tool_tech.sql Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -85,6 +85,18 @@
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
<build>

View File

@@ -7,9 +7,14 @@ 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;
@@ -37,9 +42,13 @@ public class CommonController
@Autowired
private ServerConfig serverConfig;
@Autowired
private IAttachmentService attachmentService;
private static final String FILE_DELIMETER = ",";
/**
* 通用下载请求
*
@@ -166,6 +175,21 @@ public class CommonController
}
/**
* 预览下载
* txt、pdf、word(doc、docx格式)
*/
@PostMapping("/preview/download")
public ResponseEntity<byte[]> 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<Map<String, String>> initUpload(@RequestParam("fileName") String fileName) {
// 上传文件路径
@@ -191,6 +215,7 @@ public class CommonController
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);
}
}
@@ -205,6 +230,16 @@ public class CommonController
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())));
@@ -222,6 +257,7 @@ public class CommonController
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 {
// 清理临时文件

View File

@@ -38,7 +38,7 @@ public class DocumentCategoryController extends BaseController
/**
* 查询文档资源分类管理列表
*/
@PreAuthorize("@ss.hasPermi('system:category:list')")
//@PreAuthorize("@ss.hasPermi('system:category:list')")
@GetMapping("/list")
public TableDataInfo list(DocumentCategory documentCategory)
{
@@ -50,7 +50,7 @@ public class DocumentCategoryController extends BaseController
/**
* 导出文档资源分类管理列表
*/
@PreAuthorize("@ss.hasPermi('system:category:export')")
//@PreAuthorize("@ss.hasPermi('system:category:export')")
@Log(title = "文档资源分类管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, DocumentCategory documentCategory)
@@ -63,7 +63,7 @@ public class DocumentCategoryController extends BaseController
/**
* 获取文档资源分类管理详细信息
*/
@PreAuthorize("@ss.hasPermi('system:category:query')")
//@PreAuthorize("@ss.hasPermi('system:category:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
@@ -73,7 +73,7 @@ public class DocumentCategoryController extends BaseController
/**
* 新增文档资源分类管理
*/
@PreAuthorize("@ss.hasPermi('system:category:add')")
//@PreAuthorize("@ss.hasPermi('system:category:add')")
@Log(title = "文档资源分类管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DocumentCategory documentCategory)
@@ -84,7 +84,7 @@ public class DocumentCategoryController extends BaseController
/**
* 修改文档资源分类管理
*/
@PreAuthorize("@ss.hasPermi('system:category:edit')")
//@PreAuthorize("@ss.hasPermi('system:category:edit')")
@Log(title = "文档资源分类管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DocumentCategory documentCategory)
@@ -95,7 +95,7 @@ public class DocumentCategoryController extends BaseController
/**
* 删除文档资源分类管理
*/
@PreAuthorize("@ss.hasPermi('system:category:remove')")
//@PreAuthorize("@ss.hasPermi('system:category:remove')")
@Log(title = "文档资源分类管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)

View File

@@ -45,7 +45,7 @@ public class DocumentController extends BaseController
* 导出【文档资源信息】列表
*/
@Log(title = "【文档资源信息】", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('document:export')")
@PreAuthorize("@ss.hasPermi('document:list')")
@PostMapping("/export")
public void export(HttpServletResponse response, Document document)
{
@@ -120,4 +120,12 @@ public class DocumentController extends BaseController
{
return AjaxResult.success(documentService.statistics());
}
@PostMapping("/export/word/list")
public AjaxResult exportWordList(Document Document)
{
List<Document> list = documentService.selectAllList(Document);
return AjaxResult.success(list);
}
}

View File

@@ -44,7 +44,6 @@ public class SysDictTypeController extends BaseController
}
@PreAuthorize("@ss.hasPermi('system:bizlist:list')")
@GetMapping("/bizlist")
public TableDataInfo bizlist(SysDictType dictType)
{

View File

@@ -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<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> 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;
}

View File

@@ -132,8 +132,8 @@ public class SysRoleController extends BaseController
LoginUser loginUser = getLoginUser();
if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
{
loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
tokenService.setLoginUser(loginUser);
}
return success();

View File

@@ -38,7 +38,6 @@ public class AttachmentController extends BaseController
/**
* 查询附件列表
*/
@PreAuthorize("@ss.hasPermi('system:attachment:list')")
@GetMapping("/list")
public TableDataInfo list(Attachment attachment)
{
@@ -50,7 +49,6 @@ public class AttachmentController extends BaseController
/**
* 导出附件列表
*/
@PreAuthorize("@ss.hasPermi('system:attachment:export')")
@Log(title = "附件", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Attachment attachment)
@@ -63,7 +61,6 @@ public class AttachmentController extends BaseController
/**
* 获取附件详细信息
*/
@PreAuthorize("@ss.hasPermi('system:attachment:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
@@ -73,7 +70,6 @@ public class AttachmentController extends BaseController
/**
* 新增附件
*/
@PreAuthorize("@ss.hasPermi('system:attachment:add')")
@Log(title = "附件", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Attachment attachment)
@@ -84,7 +80,6 @@ public class AttachmentController extends BaseController
/**
* 修改附件
*/
@PreAuthorize("@ss.hasPermi('system:attachment:edit')")
@Log(title = "附件", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Attachment attachment)
@@ -95,7 +90,6 @@ public class AttachmentController extends BaseController
/**
* 删除附件
*/
@PreAuthorize("@ss.hasPermi('system:attachment:remove')")
@Log(title = "附件", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)

View File

@@ -1,26 +1,17 @@
package com.rzdata.web.controller.tool;
import javax.servlet.http.HttpServletResponse;
import com.rzdata.common.utils.poi.ExcelUtil;
import com.rzdata.web.domain.DownloadCount;
import com.rzdata.web.service.IDownloadCountService;
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.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;
/**
@@ -48,6 +39,17 @@ public class DownloadCountController extends BaseController
}
/**
* 查询文档下载统计列表
*/
@GetMapping("/doc/list")
public TableDataInfo docList(DownloadCount downloadCount)
{
startPage();
List<DownloadCount> list = downloadCountService.selectDownloadDocCountList(downloadCount);
return getDataTable(list);
}
/**
* 根据详情统计
*/
@@ -63,7 +65,6 @@ public class DownloadCountController extends BaseController
/**
* 导出工具下载统计列表
*/
@PreAuthorize("@ss.hasPermi('system:count:export')")
@Log(title = "工具下载统计", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, DownloadCount downloadCount)
@@ -76,7 +77,6 @@ public class DownloadCountController extends BaseController
/**
* 获取工具下载统计详细信息
*/
@PreAuthorize("@ss.hasPermi('system:count:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
@@ -86,7 +86,6 @@ public class DownloadCountController extends BaseController
/**
* 新增工具下载统计
*/
@PreAuthorize("@ss.hasPermi('system:count:add')")
@Log(title = "工具下载统计", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DownloadCount downloadCount)
@@ -97,7 +96,6 @@ public class DownloadCountController extends BaseController
/**
* 修改工具下载统计
*/
@PreAuthorize("@ss.hasPermi('system:count:edit')")
@Log(title = "工具下载统计", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DownloadCount downloadCount)
@@ -108,7 +106,6 @@ public class DownloadCountController extends BaseController
/**
* 删除工具下载统计
*/
@PreAuthorize("@ss.hasPermi('system:count:remove')")
@Log(title = "工具下载统计", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)

View File

@@ -142,7 +142,7 @@ public class ToolApplyController extends BaseController
toolApplyService.updateToolApply(updateStatus);
}
//办结
if(RecordStatusEnum.DONE.getCode().equals(toolApply)){
if(RecordStatusEnum.DONE.getCode().equals(toolApply.getRecordStatus())){
//给消息中心发送消息
toolApplyService.sendTzMessage(toolApply);
}

View File

@@ -1,6 +1,5 @@
package com.rzdata.web.controller.tool;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import com.blueland.bpmclient.model.ProcessInstanceModel;
@@ -8,6 +7,7 @@ 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.BusinessType;
import com.rzdata.common.enums.RecordStatusEnum;
@@ -29,7 +29,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 工具信息Controller
@@ -72,11 +71,12 @@ public class ToolController extends BaseController
if (BooleanUtil.isTrue(tool.getDownloadCheck())) {
String userId = SecurityUtils.getUserId().toString();
for (Tool vo : list) {
//已发布的工具 是创建人 或者 配置了下载权限 或者 通过了使用申请的
vo.setDownloadStatus(RecordStatusEnum.DONE.getCode().equals(vo.getRecordStatus())&&
(userId.equals(vo.getCreateBy())||
SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION)||
iToolApplyService.checkToolApply(vo.getToolId(),userId)));
//创建人、下载权限、系统管理员
//1.已经审核通过、并且有下载权限
vo.setDownloadStatus(toolService.isDownloadStatus(userId, vo));
// 是否已发起使用申请
vo.setIsHasApplyUse(iToolApplyService.hasToolUseApply(vo.getToolId(), userId));
}
}
return getDataTable(list);
@@ -86,6 +86,7 @@ public class ToolController extends BaseController
* 导出工具信息列表
*/
@Log(title = "工具信息", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('tool:list')")
@PostMapping("/export")
public void export(HttpServletResponse response, Tool tTool)
{
@@ -94,13 +95,30 @@ public class ToolController extends BaseController
util.exportExcel(response, list, "工具信息数据",tTool.getExcludeFields());
}
/**
* 导出工具信息列表
*/
@Log(title = "工具信息", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('tool:list')")
@PostMapping("/export/word/list")
public AjaxResult exportWordList(@RequestBody Tool tool)
{
List<Tool> list = toolService.selectAllList(tool);
return AjaxResult.success(list);
}
/**
* 获取工具信息详细信息
*/
@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);
}
/**
@@ -148,17 +166,20 @@ public class ToolController extends BaseController
if (add) {
tTool.setProcInstId(processInstanceModel.getProcInstId());
toolService.insertTool(tTool);
//保存文档和附件
toolService.addDocAndAtt(tTool);
/** 保存工具关联关系 **/
toolService.saveToolRelation(tTool, false);
//保存附件
toolService.addFileList(tTool);
//记录申请数据
toolService.recordToolApply(tTool);
} else if (BooleanUtil.isTrue(tTool.getEditStatus())){
toolService.updateTool(tTool);
//删除文档和附件
toolService.deleteDocAndAtt(tTool);
//保存文档和附件
toolService.addDocAndAtt(tTool);
/** 保存工具关联关系 **/
toolService.saveToolRelation(tTool, true);
//删除附件
toolService.delFile(tTool);
//保存附件
toolService.addFileList(tTool);
} else {
Tool tool = new Tool();
tool.setToolId(tTool.getToolId());
@@ -171,11 +192,8 @@ public class ToolController extends BaseController
}
toolService.updateTool(tool);
}
//办结
if(RecordStatusEnum.DONE.getCode().equals(tTool.getRecordStatus())){
//更新文档状态
toolService.updateDocPushStatus(tTool);
//给消息中心发送消息
toolService.sendTzMessage(tTool);
}
@@ -214,4 +232,5 @@ public class ToolController extends BaseController
{
return AjaxResult.success(toolService.statistics());
}
}

View File

@@ -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<ToolRelation> 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<ToolRelation> list = toolRelationService.selectToolRelationList(toolRelation);
ExcelUtil<ToolRelation> util = new ExcelUtil<ToolRelation>(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));
}
}

View File

@@ -71,7 +71,6 @@ public class TzMessageController extends BaseController
/**
* 新增消息
*/
@PreAuthorize("@ss.hasPermi('system:message:add')")
@Log(title = "消息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody TzMessage tzMessage)
@@ -109,4 +108,14 @@ public class TzMessageController extends BaseController
{
return toAjax(tzMessageService.allMarkedRead(tzMessage));
}
/**
* 获取用户统计
*/
@GetMapping(value = "/user/msg/count/{id}")
public AjaxResult getUserMessageCount(@PathVariable("id") String id)
{
return success(tzMessageService.selectTzMessageByUserCount(id));
}
}

View File

@@ -4,6 +4,7 @@ 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;
@@ -616,4 +617,18 @@ public class WorkflowController extends BaseController {
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<String, Object> 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;
}
}

View File

@@ -32,6 +32,10 @@ public class Attachment extends BaseEntity
@Excel(name = "业务类型")
private String bizType;
/** 文件路径 */
@Excel(name = "文件路径")
private String filePath;
/** 文件URL */
@Excel(name = "文件URL")
private String fileUrl;
@@ -65,12 +69,10 @@ public class Attachment extends BaseEntity
private String del;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createDate;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updateDate;
@@ -80,4 +82,7 @@ public class Attachment extends BaseEntity
private Date failureTime;
private List<String> businessIds;
/** 文件名称 **/
private String fileName;
}

View File

@@ -33,13 +33,16 @@ public class Document extends BaseEntity {
private String docName;
/** 文档类别 */
@Excel(name = "类别", dictType="doc_class")
@Excel(name = "文档类别", dictType="doc_class")
private String docType;
/** 文档负责人 */
@Excel(name = "负责人")
private String docPrincipals;
/** 文档负责人名称 */
@Excel(name = "负责人")
private String docPrincipalsName;
/** 归属单位 **/
@Excel(name = "归属单位")
private String docRespDeptName;
@@ -48,17 +51,16 @@ public class Document extends BaseEntity {
private String docRespDept;
/** 文档来源 */
@Excel(name = "来源", dictType="doc_source")
@Excel(name = "文档来源", dictType="doc_source")
private String docSource;
/**
* 工具名称
*/
@Excel(name = "工具名称")
private String toolName;
/** 文档状态 */
@Excel(name = "上传状态", dictType="doc_upload_status")
@Excel(name = "文档状态", dictType="doc_upload_status")
private String docStatus;
/** 文档地址 */
@@ -104,4 +106,13 @@ public class Document extends BaseEntity {
private Boolean permissionCheck;
private Boolean permission;
private String docTypeName;
private String docSourceName;
private String statusName;
private String createNowTime;
private List<Attachment> attachmentList;
/** 主键 **/
private List<String> docIdList;
}

View File

@@ -21,8 +21,14 @@ public class DownloadCount extends BaseEntity
private String id;
/** 工具id */
@Excel(name = "工具id")
private String toolId;
@Excel(name = "业务id")
private String businessId;
/** 业务类型 */
private String businessType;
/** 附件id */
private String attId;
/** 附件名称 */
private String attName;
/** 创建人id */
@Excel(name = "创建人id")
@@ -40,4 +46,11 @@ public class DownloadCount extends BaseEntity
private String toolDownNum;
private String nickName;
/** 文档code */
private String docCode;
/** 文档名称 */
private String docName;
/** 文档下载数量 */
private String docDownNum;
}

View File

@@ -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;
}

View File

@@ -24,6 +24,9 @@ public class Replies extends BaseEntity
@Excel(name = "讨论表id")
private String discussionId;
@Excel(name = "回复评论ID")
private String repId;
/** 内容 */
@Excel(name = "内容")
private String content;
@@ -42,5 +45,7 @@ public class Replies extends BaseEntity
private String nickName;
private String repTargetNickName;
private List<String> discussionIdList;
}

View File

@@ -1,10 +1,12 @@
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;
/**
@@ -22,59 +24,73 @@ public class Tool extends BaseEntity
private String toolId;
/** 工具编号 */
@Excel(name = "编号",sort=1)
private String toolCode;
/** 工具名称 */
@Excel(name = "工具名称",sort=1)
@Excel(name = "中文别名",sort=2)
private String toolName;
/** 工具类别 */
@Excel(name = "工具类别",dictType="tool_type",sort=2)
@Excel(name = "类别",dictType="tool_type",sort=5)
private String toolType;
/** 来源 */
@Excel(name = "工具来源",sort=3)
@Excel(name = "来源",dictType="tool_source",sort=3)
private String toolSource;
private String toolSourceName;
/** 用途 */
@Excel(name = "工具用途",sort=7)
@Excel(name = "用途",sort=6)
private String toolUse;
/** 测试情况 */
@Excel(name = "测评情况",sort=8)
@Excel(name = "测评机构",sort=7)
private String testSituation;
/** 功能描述 */
@Excel(name = "功能描述",sort=9)
@Excel(name = "功能简介",sort=8)
private String functionDesc;
/** 适用条件 */
@Excel(name = "适用条件",sort=10)
@Excel(name = "适用条件",sort=9)
private String applyCondition;
/** 操作说明 */
@Excel(name = "操作说明",sort=11)
//@Excel(name = "操作说明",sort=11)
private String operateExplain;
/** 负责人 */
private String toolPrincipals;
/** 负责人名称 */
@Excel(name = "负责人",sort=4)
private String toolPrincipalsName;
/** 归属单位 */
private String toolRespDept;
@Excel(name = "归属单位",sort=5)
@Excel(name = "归属单位",sort=12)
private String toolRespDeptName;
@Excel(name = "加密方式",sort=10)
private String encryptionMode;
@Excel(name = "服务时间",sort=11)
private String serviceTime;
@Excel(name = "联系人",sort=13)
private String contactPerson;
@Excel(name = "联系方式",sort=14)
private String contactPhone;
/** 状态 */
@Excel(name = "",dictType="sys_normal_disable",sort=6)
@Excel(name = "",dictType="tool_status",sort=4)
private String status;
/** 备注 */
@Excel(name = "备注",sort=12)
@Excel(name = "备注",sort=15)
private String remark;
/** 关联工具 */
@@ -85,6 +101,11 @@ public class Tool extends BaseEntity
/** done办结doing进行中**/
private String recordStatus;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//@Excel(name = "创建时间", dateFormat="yyyy-MM-dd",sort=16)
private Date createTime;
private Boolean editStatus;
private String procInstId;
@@ -97,7 +118,21 @@ public class Tool extends BaseEntity
private Boolean downloadStatus;
private Boolean isHasApplyUse;
private List<String> excludeFields;
private List<Document> documentList;
private List<Attachment> attachmentList;
/** 工具类型名称 **/
private String toolTypeName;
/** 状态名称 **/
private String statusName;
/** 主键 **/
private List<String> toolIdList;
/** 需要过滤的主键 **/
private List<String> filterToolIds;
private String recordStatusName;
}

View File

@@ -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<String> resourceIds;
}

View File

@@ -30,6 +30,12 @@ public class TzMessage extends BaseEntity
@Excel(name = "消息推送内容")
private String content;
/** 业务id */
private String businessId;
/** 业务类型;doc:文档tool:工具) */
private String businessType;
/** 逻辑删除标记:1删除;0未删除 */
@Excel(name = "逻辑删除标记:1删除;0未删除")
private String deleted;

View File

@@ -1,6 +1,7 @@
package com.rzdata.web.mapper;
import com.rzdata.web.domain.Attachment;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -68,4 +69,6 @@ public interface AttachmentMapper
public int deleteAttachmentByIds(String[] ids);
public int deleteAttachmentByBusinessId(List<String> list);
int batchInsert(@Param("attachmentList") List<Attachment> attachmentList);
}

View File

@@ -61,4 +61,7 @@ public interface DownloadCountMapper
public int deleteDownloadCountByIds(String[] ids);
List<DownloadCount> userDownList(DownloadCount downloadCount);
/** 文档下载统计 **/
List<DownloadCount> selectDownloadDocCountList(DownloadCount downloadCount);
}

View File

@@ -63,5 +63,7 @@ public interface ToolApplyMapper
*/
public int deleteToolApplyByIds(String[] ids);
int checkToolApply(@Param("toolId") String toolId, @Param("userId") String userId);
int hasToolUseApply(@Param("toolId") String toolId, @Param("userId") String userId);
int checkToolUseApply(@Param("toolId") String toolId, @Param("userId") String userId);
}

View File

@@ -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<ToolRelation> selectToolRelationList(ToolRelation toolRelation);
public List<ToolRelation> 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<ToolRelation> toolRelationList);
}

View File

@@ -74,4 +74,9 @@ public interface TzMessageMapper
* @return
*/
public int batchInsert(@Param("tzMessageList") List<TzMessage> tzMessageList);
/**
* 消息中心未读消息数量查询
* **/
int selectTzMessageByUserCount(String userId);
}

View File

@@ -1,6 +1,7 @@
package com.rzdata.web.service;
import com.rzdata.web.domain.Attachment;
import com.rzdata.web.domain.FileOperationRequest;
import java.util.List;
@@ -67,4 +68,13 @@ public interface IAttachmentService
* @return 结果
*/
public int deleteAttachmentById(String id);
/**
* 批量插入
* @param batch
* @return
*/
public int batchInsert(List<Attachment> batch);
byte[] loadFileAsBytes(Attachment attachment);
}

View File

@@ -1,5 +1,6 @@
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;
@@ -67,5 +68,5 @@ public interface IDocumentCategoryService
* @param documentCategory
* @return
*/
List<TreeSelect> selectDocumentTreeList(DocumentCategory documentCategory);
List<ToolTreeSelect> selectDocumentTreeList(DocumentCategory documentCategory);
}

View File

@@ -77,4 +77,6 @@ public interface IDocumentService
public int batchDeleteById(List<String> docIds);
Map<String, Object> statistics();
List<Document> selectAllList(Document document);
}

View File

@@ -66,4 +66,12 @@ public interface IDownloadCountService
* @return
*/
List<DownloadCount> userDownList(DownloadCount downloadCount);
/**
* 文档下载统计
* @param downloadCount
* @return
*/
List<DownloadCount> selectDownloadDocCountList(DownloadCount downloadCount);
}

View File

@@ -61,7 +61,9 @@ public interface IToolApplyService
*/
public int deleteToolApplyById(String id);
boolean checkToolApply(String toolId, String userId);
boolean hasToolUseApply(String toolId, String userId);
boolean checkToolUseApply(String toolId, String userId);
void sendTzMessage(ToolApply toolApply);
}

View File

@@ -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<ToolRelation> selectToolRelationList(ToolRelation toolRelation);
public List<ToolRelation> 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<ToolTreeSelect> getDataThree(ToolRelation toolRelation);
public int batchInsert(List<ToolRelation> toolRelationList);
/**根据资源id和目标id去删除 **/
public int deleteResourceAndTarget(ToolRelation toolRelation);
/** 根据目标id和源id去删除 **/
public int deleteTargetAndResource(ToolRelation toolRelation);
}

View File

@@ -31,6 +31,10 @@ public interface IToolService
*/
public List<Tool> selectToolList(Tool tool);
/** 查询所有数据 **/
public List<Tool> selectAllNotAuthList(Tool tool);
/**
* 新增工具信息
*
@@ -39,6 +43,14 @@ public interface IToolService
*/
public int insertTool(Tool tool);
/**
* 新增工具关联关系信息
*
* @param tool 工具信息
* @return 结果
*/
public void saveToolRelation(Tool tool, Boolean isDel);
public boolean checkToolExist(Tool tTool);
/**
@@ -69,13 +81,13 @@ public interface IToolService
* 删除文档和附件
* @param tool
*/
public void deleteDocAndAtt(Tool tool);
public void delFile(Tool tool);
/**
* 新增文档和附件
* @param tool
*/
public void addDocAndAtt(Tool tool);
public void addFileList(Tool tool);
void recordToolApply(Tool tool);
@@ -84,4 +96,8 @@ public interface IToolService
void sendTzMessage(Tool tTool);
Map<String, Object> statistics();
List<Tool> selectAllList(Tool tool);
boolean isDownloadStatus(String userId, Tool tool);
}

View File

@@ -64,4 +64,11 @@ public interface ITzMessageService
int allMarkedRead(TzMessage tzMessage);
public int batchInsert(List<TzMessage> tzMessageList);
/**
* 未读消息数量
* @param userId
* @return
*/
int selectTzMessageByUserCount(String userId);
}

View File

@@ -8,6 +8,7 @@ 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;
@@ -54,6 +55,10 @@ public class WorkflowService {
@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";
@@ -790,4 +795,32 @@ public class WorkflowService {
String url = String.format("%s/%s?procInstId=%s", bpmcConfig.getServiceUrl(), workflowConfig.getRecordQueryUrl(), porcInstId);
return JSONArray.parseArray(getBpmClient().get(url));
}
public Map<String, Object> selectUserMsgCount(SysUser user) {
Map<String, Object> 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<String, Integer> 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;
}
}

View File

@@ -1,19 +1,29 @@
package com.rzdata.web.service.impl;
import java.util.List;
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
{
@@ -94,7 +104,7 @@ public class AttachmentServiceImpl implements IAttachmentService
/**
* 批量删除附件
*
* @param ids 需要删除的附件主键
* @param businessIds 需要删除的附件主键
* @return 结果
*/
@Override
@@ -114,4 +124,69 @@ public class AttachmentServiceImpl implements IAttachmentService
{
return attachmentMapper.deleteAttachmentById(id);
}
@Override
public int batchInsert(List<Attachment> 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("转换异常");
}
}
}

View File

@@ -6,6 +6,7 @@ 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;
@@ -76,6 +77,10 @@ public class DiscussionsServiceImpl implements IDiscussionsService
List<Replies> 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);
}
}

View File

@@ -1,6 +1,7 @@
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;
@@ -109,15 +110,15 @@ public class DocumentCategoryServiceImpl implements IDocumentCategoryService
}
@Override
public List<TreeSelect> selectDocumentTreeList(DocumentCategory documentCategory) {
public List<ToolTreeSelect> selectDocumentTreeList(DocumentCategory documentCategory) {
List<DocumentCategory> documentCategoryList = documentCategoryMapper.selectDocumentCategoryList(documentCategory);
return buildDeptTreeSelect(documentCategoryList);
}
public List<TreeSelect> buildDeptTreeSelect(List<DocumentCategory> documentCategory)
public List<ToolTreeSelect> buildDeptTreeSelect(List<DocumentCategory> documentCategory)
{
List<DocumentCategory> docCategoryTree = buildDeptTree(documentCategory);
return docCategoryTree.stream().map(TreeSelect::new).collect(Collectors.toList());
return docCategoryTree.stream().map(ToolTreeSelect::new).collect(Collectors.toList());
}
public List<DocumentCategory> buildDeptTree(List<DocumentCategory> documentCategoryList)

View File

@@ -1,27 +1,36 @@
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.ObjectUtil;
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.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@@ -30,6 +39,7 @@ import java.util.stream.Collectors;
* @author ja
* @date 2024-07-09
*/
@Slf4j
@Service
public class DocumentServiceImpl implements IDocumentService
{
@@ -46,6 +56,20 @@ public class DocumentServiceImpl implements IDocumentService
@Autowired
private ISysDictTypeService sysDictTypeService;
@Autowired
private ISysDeptService sysDeptService;
@Autowired
private Snowflake snowflake;
@Autowired
private ISysUserService iSysUserService;
@Autowired
private ITzMessageService tzMessageService;
/**
* 查询【请填写功能名称】
*
@@ -60,6 +84,7 @@ public class DocumentServiceImpl implements IDocumentService
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);
@@ -67,6 +92,8 @@ public class DocumentServiceImpl implements IDocumentService
if(CollUtil.isNotEmpty(attachments)){
document.setAttachment(attachments.get(0));
}
String userId = SecurityUtils.getUserId().toString();
document.setDownloadStatus(isDownloadStatus(userId, document));
return document;
}
@@ -77,6 +104,7 @@ public class DocumentServiceImpl implements IDocumentService
* @return 【请填写功能名称】
*/
@Override
@DataScope(deptAlias = "sd", userAlias = "su")
public List<Document> selectDocumentList(Document document)
{
if (BooleanUtil.isTrue(document.getPermissionCheck())) {
@@ -109,17 +137,21 @@ public class DocumentServiceImpl implements IDocumentService
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.checkToolApply(dc.getToolId(),userId)){
}else if(StrUtil.isNotBlank(dc.getToolId()) && iUseApplyService.checkToolUseApply(dc.getToolId(), userId)){
downStatus = true;
}
dc.setDownloadStatus(downStatus);
}
}
return documents;
return downStatus;
}
@@ -160,22 +192,45 @@ public class DocumentServiceImpl implements IDocumentService
document.setIsDeleted(Constants.STR_ZERO);
document.setCreateTime(new Date());
int result = documentMapper.insertDocument(document);
if(ObjectUtil.isNotEmpty(document.getAttachment())){
Attachment attachment = document.getAttachment();
attachment.setId(IdUtil.simpleUUID());
attachment.setCreateBy(SecurityUtils.getLoginUser().getUsername());
attachment.setBusinessId(docId);
attachment.setBizType(Constants.DOC_TYPE_DOC);
attachment.setDel(Constants.STR_ZERO);
attachment.setCreateDate(new Date());
attachmentService.insertAttachment(attachment);
}
addFileList(document);
if(result > 0){
return docId;
}
return null;
}
@Transactional(rollbackFor = Exception.class)
public void delFile(Document document) {
List<String> toolIds = Collections.singletonList(document.getDocId());
attachmentService.deleteAttachmentByBusinessId(toolIds);
}
@Transactional(rollbackFor = Exception.class)
public void addFileList(Document document) {
List<Attachment> 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<Integer, List<Attachment>> grouped = attachmentList.stream()
.collect(Collectors.groupingBy(
e -> counter.getAndIncrement() / 500
));
// 对每个子列表进行批量插入
grouped.values().forEach(batch -> attachmentService.batchInsert(batch));
}
/**
* 修改【请填写功能名称】
*
@@ -190,24 +245,8 @@ public class DocumentServiceImpl implements IDocumentService
document.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
document.setUpdateTime(new Date());
int result = documentMapper.updateDocument(document);
Attachment attParam = document.getAttachment();
if(ObjectUtil.isNotEmpty(attParam) && StrUtil.isBlank(attParam.getId())){
Attachment att = new Attachment();
att.setBusinessId(document.getDocId());
att.setDel(Constants.STR_ONE);
attachmentService.updateAttachmentByBusinessId(att);
Attachment attachment = document.getAttachment();
attachment.setId(IdUtil.simpleUUID());
attachment.setCreateBy(SecurityUtils.getLoginUser().getUsername());
attachment.setBusinessId(document.getDocId());
attachment.setBizType(Constants.DOC_TYPE_DOC);
attachment.setDel(Constants.STR_ZERO);
attachment.setCreateDate(new Date());
attachmentService.insertAttachment(attachment);
}
delFile(document);
addFileList(document);
return result;
}
@@ -247,13 +286,68 @@ public class DocumentServiceImpl implements IDocumentService
*/
@Override
public int pushDoc(String[] ids) {
List<String> docIdList = Arrays.asList(ids);
if(CollUtil.isEmpty(docIdList)){
throw new ServiceException("请选择需发布的文档");
}
Document doc = new Document();
doc.setIds(Arrays.asList(ids));
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());
return documentMapper.updatePushDoc(doc);
int result = documentMapper.updatePushDoc(doc);
//发送消息
Document document = new Document();
document.setDocIdList(docIdList);
List<Document> documents = documentMapper.selectDocumentList(document);
SysUser sysUser = new SysUser();
sysUser.setStatus("0");
sysUser.setDelFlag("0");
List<SysUser> sysUsers = iSysUserService.selectUserList(sysUser);
for (Document docItem : documents) {
sendTzMessage(docItem, sysUsers);
}
return result;
}
/**
* 给消息中心发送消息
*/
public void sendTzMessage(Document doc, List<SysUser> sysUsers) {
try{
String content = doc.getDocName() + "已发布";
List<TzMessage> 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<Integer, List<TzMessage>> 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);
}
}
/**
@@ -280,12 +374,17 @@ public class DocumentServiceImpl implements IDocumentService
private void assembleData(List<Map<String, Object>> countType, List<Map<String, Object>> countSource) {
//
List<SysDictData> toolTypeList = sysDictTypeService.selectDictDataByType("doc_class");
List<SysDictData> toolSourceList = sysDictTypeService.selectDictDataByType("doc_source");
List<SysDictData> docClassList = sysDictTypeService.selectDictDataByType("doc_class");
List<SysDictData> docSourceList = sysDictTypeService.selectDictDataByType("doc_source");
//初始化数据
initDictData(docClassList,countType);
initDictData(docSourceList, countSource);
if(CollUtil.isNotEmpty(countType)){
for (Map<String, Object> map : countType) {
map.put("value", map.get("statistics"));
for (SysDictData sysDictData : toolTypeList) {
for (SysDictData sysDictData : docClassList) {
if(sysDictData.getDictValue().equals(map.get("types"))){
map.put("name", sysDictData.getDictLabel());
break;
@@ -296,7 +395,7 @@ public class DocumentServiceImpl implements IDocumentService
if(CollUtil.isNotEmpty(countSource)){
for (Map<String, Object> map : countSource) {
map.put("value", map.get("statistics"));
for (SysDictData sysDictData : toolSourceList) {
for (SysDictData sysDictData : docSourceList) {
if(sysDictData.getDictValue().equals(map.get("types"))){
map.put("name", sysDictData.getDictLabel());
break;
@@ -305,5 +404,62 @@ public class DocumentServiceImpl implements IDocumentService
}
}
}
private void initDictData(List<SysDictData> dictDataList, List<Map<String, Object>> mapTypeList) {
for (SysDictData sysDictData : dictDataList) {
boolean flag = false;
for (Map<String, Object> map : mapTypeList) {
if(sysDictData.getDictValue().equals(map.get("types"))){
flag = true;
break;
}
}
if(!flag){
Map<String, Object> 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<Document> selectAllList(Document document) {
List<Document> documents = documentMapper.selectDocumentList(document);
List<SysDictData> docClassList = sysDictTypeService.selectDictDataByType("doc_class");
List<SysDictData> docSourceList = sysDictTypeService.selectDictDataByType("doc_source");
List<SysDictData> 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;
}
}

View File

@@ -107,4 +107,9 @@ public class DownloadCountServiceImpl implements IDownloadCountService
public List<DownloadCount> userDownList(DownloadCount downloadCount) {
return downloadCountMapper.userDownList(downloadCount);
}
@Override
public List<DownloadCount> selectDownloadDocCountList(DownloadCount downloadCount) {
return downloadCountMapper.selectDownloadDocCountList(downloadCount);
}
}

View File

@@ -1,6 +1,8 @@
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;
@@ -67,6 +69,11 @@ public class ToolApplyServiceImpl implements IToolApplyService
@Override
public List<ToolApply> 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);
}
@@ -122,8 +129,14 @@ public class ToolApplyServiceImpl implements IToolApplyService
return toolApplyMapper.deleteToolApplyById(id);
}
public boolean checkToolApply(String toolId, String userId){
return toolApplyMapper.checkToolApply(toolId, userId)>0;
@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
@@ -139,6 +152,8 @@ public class ToolApplyServiceImpl implements IToolApplyService
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);

View File

@@ -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<ToolRelation> selectToolRelationList(ToolRelation toolRelation)
{
return toolRelationMapper.selectToolRelationList(toolRelation);
}
@Override
public List<ToolRelation> 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<ToolRelation> 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<ToolTreeSelect> getDataThree(ToolRelation toolRelation) {
if(CollUtil.isEmpty(toolRelation.getResourceIds())){
return null;
}
List<ToolRelation> toolRelations = this.selectRelationToolList(toolRelation);
//拿到C的数据
ToolRelation toolRelation1 = toolRelations.get(0);
// 查询数据库中的所有工具关系
List<ToolRelation> allToolRelations = this.selectRelationToolList(null);
return getDataThree(toolRelation1.getResourceId());
/*//查询所有关联的数据,最后在组装起来
List<ToolRelation> toolRelations = this.selectRelationToolList(toolRelation);
//查询所有数据
List<ToolRelation> allToolRelation = this.selectRelationToolList(null);*/
// 查询所有与 C 相关的工具关系
//List<ToolRelation> relatedToolRelations = this.selectRelationToolList(toolRelation);
/*
// 从 C 开始构建树形结构
List<ToolTreeSelect> 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<ToolTreeSelect> getDataThree(String toolResourceId) {
// 创建链条列表用于存储递归结果
List<ToolTreeSelect> toolChain = new ArrayList<>();
// 从工具 resourceId 开始递归查找
buildToolChain(toolResourceId, toolChain);
return toolChain;
}
// 递归构建工具链
private void buildToolChain(String resourceId, List<ToolTreeSelect> 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<ToolRelation> toolRelations = this.selectRelationToolList(queryToolRelation);
return toolRelations.isEmpty() ? null : toolRelations.get(0);
}
// 递归向上构建父节点
private ToolTreeSelect buildParentTree(ToolRelation currentToolRelation, List<ToolRelation> allToolRelation, Set<String> 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<ToolTreeSelect> 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<ToolTreeSelect> buildTwoTreeSelect(List<Tool> tools) {
List<ToolTreeSelect> 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<ToolTreeSelect> buildToolTreeSelect(List<ToolRelation> tools, List<ToolRelation> allToolRelation) {
// 找到根节点:没有父节点的工具关系
List<ToolTreeSelect> 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<ToolRelation> allToolRelation, Set<String> 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<ToolTreeSelect> 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);
}
}

View File

@@ -5,21 +5,20 @@ 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.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.Document;
import com.rzdata.web.domain.Tool;
import com.rzdata.web.domain.ToolApply;
import com.rzdata.web.domain.TzMessage;
import com.rzdata.web.domain.*;
import com.rzdata.web.domain.bo.BpmClientInputModelBo;
import com.rzdata.web.mapper.ToolMapper;
import com.rzdata.web.service.*;
@@ -28,10 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@@ -60,11 +56,9 @@ public class ToolServiceImpl implements IToolService
@Autowired
private Snowflake snowflake;
@Autowired
private ITzMessageService tzMessageService;
@Autowired
private ISysDictTypeService sysDictTypeService;
@@ -75,6 +69,13 @@ public class ToolServiceImpl implements IToolService
@Autowired
private ISysDeptService sysDeptService;
/** 工具管理表 **/
@Autowired
private IToolRelationService iToolRelationService;
@Autowired
private IToolApplyService iToolApplyService;
/**
* 查询工具信息
*
@@ -101,7 +102,7 @@ public class ToolServiceImpl implements IToolService
* @return 工具信息
*/
@Override
@DataScope(deptAlias = "d")
@DataScope(deptAlias = "d", userAlias = "su")
public List<Tool> selectToolList(Tool tool)
{
if (BooleanUtil.isTrue(tool.getPermissionCheck())) {
@@ -110,6 +111,15 @@ public class ToolServiceImpl implements IToolService
return toolMapper.selectToolList(tool);
}
/**
* 查询所有数据不走任何
* @return
*/
@Override
public List<Tool> selectAllNotAuthList(Tool tool){
return toolMapper.selectToolList(tool);
}
/**
* 新增工具信息
*
@@ -124,6 +134,39 @@ public class ToolServiceImpl implements IToolService
return toolMapper.insertTool(tool);
}
/**
* 保存关联关系
* @param tool
*/
@Override
public void saveToolRelation(Tool tool, Boolean isDel) {
if(StrUtil.isNotBlank(tool.getAssociation())){
List<Tool> tools = JSONUtil.toList(tool.getAssociation(), Tool.class);
//关联
List<ToolRelation> 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<Integer, List<ToolRelation>> grouped = associationToolList.stream()
.collect(Collectors.groupingBy(
e -> counter.getAndIncrement() / 500
));
// 对每个子列表进行批量插入
grouped.values().forEach(batch -> iToolRelationService.batchInsert(batch));
}
}
@Override
public boolean checkToolExist(Tool tTool)
{
@@ -143,37 +186,42 @@ public class ToolServiceImpl implements IToolService
tool.setUpdateBy(SecurityUtils.getUserId().toString());
tool.setUpdateTime(DateUtils.getNowDate());
int result = toolMapper.updateTool(tool);
deleteDocAndAtt(tool);
addDocAndAtt(tool);
/* delFile(tool);
addFileList(tool);*/
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDocAndAtt(Tool tool) {
List<Document> documentList = tool.getDocumentList();
if(CollUtil.isEmpty(documentList)){
return;
}
//先删除,后新增
List<String> docIds = documentList.stream().map(Document::getDocId).collect(Collectors.toList());
iAttachmentService.deleteAttachmentByBusinessId(docIds);
documentService.batchDeleteById(docIds);
public void delFile(Tool tool) {
List<String> toolIds = Collections.singletonList(tool.getToolId());
iAttachmentService.deleteAttachmentByBusinessId(toolIds);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void addDocAndAtt(Tool tool) {
List<Document> documentList = tool.getDocumentList();
if(CollUtil.isEmpty(documentList)){
public void addFileList(Tool tool) {
List<Attachment> attachmentList = tool.getAttachmentList();
if(CollUtil.isEmpty(attachmentList)){
return;
}
//新增
for (Document document : documentList) {
document.setToolId(tool.getToolId());
document.setDocStatus(Constants.DOC_STATUS_SHZ);
documentService.saveDocument(document);
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<Integer, List<Attachment>> grouped = attachmentList.stream()
.collect(Collectors.groupingBy(
e -> counter.getAndIncrement() / 500
));
// 对每个子列表进行批量插入
grouped.values().forEach(batch -> iAttachmentService.batchInsert(batch));
}
@Override
@@ -257,6 +305,8 @@ public class ToolServiceImpl implements IToolService
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);
@@ -286,7 +336,7 @@ public class ToolServiceImpl implements IToolService
List<Map<String, Object>> countToolType = toolMapper.countToolType();
List<Map<String, Object>> toolSource = toolMapper.toolSource();
List<Map<String, Object>> recordStatus = toolMapper.recordStatus();
//组数据
//组数据
assembleData(countToolType, toolSource, recordStatus);
result.put("countToolType", countToolType);
@@ -298,9 +348,14 @@ public class ToolServiceImpl implements IToolService
private void assembleData(List<Map<String, Object>> countToolType, List<Map<String, Object>> toolSource, List<Map<String, Object>> recordStatus) {
List<SysDictData> toolTypeList = sysDictTypeService.selectDictDataByType("tool_type");
List<SysDictData> flowStatusList = sysDictTypeService.selectDictDataByType("flow_status");
List<SysDictData> flowStatusList = sysDictTypeService.selectDictDataByType("flow_status").stream().filter(item -> !item.getDictValue().equals("cancel")).collect(Collectors.toList());
List<SysDictData> toolSourceList = sysDictTypeService.selectDictDataByType("tool_source");
//初始化数据
initDictData(toolTypeList, countToolType);
initDictData(toolSourceList, toolSource);
initDictData(flowStatusList, recordStatus);
if(CollUtil.isNotEmpty(countToolType)){
for (Map<String, Object> map : countToolType) {
map.put("value", map.get("statistics"));
@@ -339,4 +394,79 @@ public class ToolServiceImpl implements IToolService
}
}
}
private void initDictData(List<SysDictData> dictDataList, List<Map<String, Object>> mapTypeList) {
for (SysDictData sysDictData : dictDataList) {
boolean flag = false;
for (Map<String, Object> map : mapTypeList) {
if(sysDictData.getDictValue().equals(map.get("types"))){
flag = true;
break;
}
}
if(!flag){
Map<String, Object> 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<Tool> selectAllList(Tool tool) {
List<Tool> tools = toolMapper.selectToolList(tool);
List<SysDictData> toolSource = sysDictTypeService.selectDictDataByType("tool_source");
List<SysDictData> toolTypeList = sysDictTypeService.selectDictDataByType("tool_type");
List<SysDictData> toolStatus = sysDictTypeService.selectDictDataByType("tool_status");
List<SysDictData> 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));
}
}

View File

@@ -1,5 +1,6 @@
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;
@@ -109,7 +110,10 @@ public class TzMessageServiceImpl implements ITzMessageService
*/
@Override
public int allMarkedRead( TzMessage tzMessage) {
tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
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);
}
@@ -117,4 +121,9 @@ public class TzMessageServiceImpl implements ITzMessageService
public int batchInsert(List<TzMessage> tzMessageList) {
return tzMessageMapper.batchInsert(tzMessageList);
}
@Override
public int selectTzMessageByUserCount(String userId) {
return tzMessageMapper.selectTzMessageByUserCount(userId);
}
}

View File

@@ -6,9 +6,15 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.1.168:3307/tool_tech?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: tool_tech
password: Tooltech@123
#url: jdbc:mysql://120.26.204.194:3307/tool_tech?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#username: root
#password: Password123@mysql
url: jdbc:mysql://localhost:3306/tool_tech?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
#url: jdbc:mysql://192.168.1.168:3307/tool_tech?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#username: tool_tech
#password: Tooltech@123
# 从库数据源
slave:
# 从数据源开关/默认关闭

View File

@@ -59,3 +59,8 @@ spring:
wall:
config:
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

View File

@@ -6,8 +6,9 @@ ja:
version: 3.8.8
# 版权年份
copyrightYear: 2024
# 文件路径 示例( Windows配置D:/ruoyi/uploadPathLinux配置 /home/ruoyi/uploadPath
profile: D:/ja/uploadPath
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath D:/ja/uploadPathLinux配置 /home/ruoyi/uploadPath /opt/tooltech/attachment
profile: /tooltech/attachment
#profile: D:/ja/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
@@ -69,13 +70,14 @@ spring:
# redis 配置
redis:
# 地址
host: 192.168.1.168
host: 127.0.0.1
#host: 120.26.204.194
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
password: Password123@redis
# 连接超时时间
timeout: 10s
lettuce:
@@ -136,5 +138,7 @@ application:
bpmc:
tenantId: TLTC_SYS
serviceUrl: http://124.223.108.21:9081/ebpm-process-rest/
uniteWorkUrl: http://localhost/tool-tech/workflowRouter
#serviceUrl: http://192.168.2.6:9081/ebpm-process-rest/
serviceUrl: http://localhost:8081/ebpm-process-rest/
#uniteWorkUrl: http://192.168.2.18:81/tool-tech/workflowRouter
uniteWorkUrl: http://localhost:80/tool-tech/workflowRouter

View File

@@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id" />
<result property="bizType" column="biz_type" />
<result property="fileUrl" column="file_url" />
<result property="filePath" column="file_path" />
<result property="fileOldName" column="file_old_name" />
<result property="fileNewName" column="file_new_name" />
<result property="suffixType" column="suffix_type" />
@@ -21,16 +22,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateDate" column="update_date" />
<result property="failureTime" column="failure_time" />
<result property="fileName" column="file_name" />
</resultMap>
<sql id="selectAttachmentVo">
select id, biz_type, 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 from t_attachment
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
</sql>
<select id="selectAttachmentList" parameterType="Attachment" resultMap="AttachmentResult">
<include refid="selectAttachmentVo"/>
<where>
<if test="bizType != null and bizType != ''"> and biz_type = #{bizType}</if>
<if test="filePath != null and filePath != ''"> and file_path = #{filePath}</if>
<if test="fileUrl != null and fileUrl != ''"> and file_url = #{fileUrl}</if>
<if test="fileOldName != null and fileOldName != ''"> and file_old_name like concat('%', #{fileOldName}, '%')</if>
<if test="fileNewName != null and fileNewName != ''"> and file_new_name like concat('%', #{fileNewName}, '%')</if>
@@ -61,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="bizType != null">biz_type,</if>
<if test="filePath != null">file_path,</if>
<if test="fileUrl != null">file_url,</if>
<if test="fileOldName != null">file_old_name,</if>
<if test="fileNewName != null">file_new_name,</if>
@@ -79,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="bizType != null">#{bizType},</if>
<if test="filePath != null">#{filePath},</if>
<if test="fileUrl != null">#{fileUrl},</if>
<if test="fileOldName != null">#{fileOldName},</if>
<if test="fileNewName != null">#{fileNewName},</if>
@@ -101,6 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="bizType != null">biz_type = #{bizType},</if>
<if test="fileUrl != null">file_url = #{fileUrl},</if>
<if test="filePath != null">file_path = #{filePath},</if>
<if test="fileOldName != null">file_old_name = #{fileOldName},</if>
<if test="fileNewName != null">file_new_name = #{fileNewName},</if>
<if test="suffixType != null">suffix_type = #{suffixType},</if>
@@ -124,6 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="bizType != null">biz_type = #{bizType},</if>
<if test="fileUrl != null">file_url = #{fileUrl},</if>
<if test="filePath != null">file_path = #{filePath},</if>
<if test="fileOldName != null">file_old_name = #{fileOldName},</if>
<if test="fileNewName != null">file_new_name = #{fileNewName},</if>
<if test="suffixType != null">suffix_type = #{suffixType},</if>
@@ -158,4 +168,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<insert id="batchInsert" parameterType="java.util.List">
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
<foreach item="item" index="index" collection="attachmentList" open="(" separator="),(" close=")">
#{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}
</foreach>
</insert>
</mapper>

View File

@@ -10,6 +10,7 @@
<result property="docName" column="doc_name" />
<result property="docType" column="doc_type" />
<result property="docPrincipals" column="doc_principals" />
<result property="docPrincipalsName" column="doc_principals_name" />
<result property="docRespDept" column="doc_resp_dept" />
<result property="docSource" column="doc_source" />
<result property="docStatus" column="doc_status" />
@@ -24,24 +25,28 @@
<result property="toolId" column="tool_id" />
<result property="toolName" column="tool_name" />
<result property="docRespDeptName" column="doc_resp_dept_name" />
<result property="createById" column="create_by_id" />
<result property="updateById" column="update_by_id" />
</resultMap>
<sql id="selectDocumentVo">
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_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
</sql>
<select id="selectDocumentList" parameterType="Document" resultMap="DocumentResult">
select td.*, t_tool.tool_name as tool_name,sys_dept.dept_name as doc_resp_dept_name
select td.*, t_tool.tool_name as tool_name,sd.dept_name as doc_resp_dept_name
from t_document td
left join t_tool on t_tool.tool_id = td.tool_id
left join sys_dept on sys_dept.dept_id = td.doc_resp_dept
left join sys_dept sd on sd.dept_id = td.doc_resp_dept
left join sys_user su on td.create_by_id = su.user_id
<where>
<if test="docCode != null and docCode != ''"> and td.doc_code like concat('%', #{docCode}, '%')</if>
<if test="docName != null and docName != ''"> and td.doc_name like concat('%', #{docName}, '%')</if>
<if test="docType != null and docType != ''"> and td.doc_type = #{docType}</if>
<if test="docPrincipals != null and docPrincipals != ''"> and td.doc_principals like concat('%', #{docPrincipals}, '%')</if>
<if test="docPrincipalsName != null and docPrincipalsName != ''"> and td.doc_principals_name like concat('%', #{docPrincipalsName}, '%')</if>
<if test="docRespDept != null and docRespDept != ''"> and td.doc_resp_dept = #{docRespDept}</if>
<if test="docSource != null and docSource != ''"> and td.doc_source = #{docSource}</if>
<if test="docStatus != null and docStatus != ''"> and td.doc_status = #{docStatus}</if>
@@ -56,8 +61,16 @@
<if test="createById != null and createById != '' and permission != true">
AND (td.create_by_id = #{createById} or td.doc_status = 'yfb')
</if>
<if test="docIdList != null and docIdList.size() > 0">
and td.doc_id in
<foreach item="id" index="index" collection="docIdList" open="(" separator="," close=")">
#{id}
</foreach>
</if>
and td.is_deleted = '0'
</where>
${params.dataScope}
order by td.create_time desc
</select>
@@ -74,6 +87,7 @@
<if test="docName != null">doc_name,</if>
<if test="docType != null">doc_type,</if>
<if test="docPrincipals != null">doc_principals,</if>
<if test="docPrincipalsName != null">doc_principals_name,</if>
<if test="docRespDept != null">doc_resp_dept,</if>
<if test="docSource != null">doc_source,</if>
<if test="docStatus != null">doc_status,</if>
@@ -95,6 +109,7 @@
<if test="docName != null">#{docName},</if>
<if test="docType != null">#{docType},</if>
<if test="docPrincipals != null">#{docPrincipals},</if>
<if test="docPrincipalsName != null">#{docPrincipalsName},</if>
<if test="docRespDept != null">#{docRespDept},</if>
<if test="docSource != null">#{docSource},</if>
<if test="docStatus != null">#{docStatus},</if>
@@ -119,6 +134,7 @@
<if test="docName != null">doc_name = #{docName},</if>
<if test="docType != null">doc_type = #{docType},</if>
<if test="docPrincipals != null">doc_principals = #{docPrincipals},</if>
<if test="docPrincipalsName != null">doc_principals_name = #{docPrincipalsName},</if>
<if test="docRespDept != null">doc_resp_dept = #{docRespDept},</if>
<if test="docSource != null">doc_source = #{docSource},</if>
<if test="docStatus != null">doc_status = #{docStatus},</if>

View File

@@ -6,7 +6,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="DownloadCount" id="DownloadCountResult">
<result property="id" column="id" />
<result property="toolId" column="tool_id" />
<result property="businessId" column="business_id" />
<result property="businessType" column="business_type" />
<result property="attId" column="att_id" />
<result property="attName" column="att_name" />
<result property="createBy" column="create_by" />
<result property="createById" column="create_by_id" />
<result property="createTime" column="create_time" />
@@ -16,27 +19,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="toolCode" column="tool_code" />
<result property="toolName" column="tool_name" />
<result property="toolDownNum" column="tool_down_num" />
<result property="docCode" column="doc_code" />
<result property="docName" column="doc_name" />
<result property="docDownNum" column="doc_down_num" />
<result property="nickName" column="nick_name" />
</resultMap>
<sql id="selectDownloadCountVo">
select id, tool_id, create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_download_count
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
</sql>
<select id="selectDownloadCountList" parameterType="DownloadCount" resultMap="DownloadCountResult">
select
tdc.tool_id,tl.tool_code,tl.tool_name,sum(1) as tool_down_num
tdc.business_id,tl.tool_code,tl.tool_name,sum(1) as tool_down_num
from t_download_count tdc
left join t_tool tl on tdc.tool_id = tl.tool_id
left join t_tool tl on tdc.business_id = tl.tool_id
<where>
and business_type = 'tool' and tl.record_status != 'cancel'
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(tdc.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(tdc.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="toolCode != null and toolCode != ''">
AND tl.tool_code like concat('%', #{toolCode}, '%')
</if>
<if test="toolName != null and toolName != ''">
AND tl.tool_name like concat('%', #{toolName}, '%')
</if>
</where>
group by tdc.tool_id,tl.tool_code,tl.tool_name
group by tdc.business_id,tl.tool_code,tl.tool_name
</select>
<select id="selectDownloadCountById" parameterType="String" resultMap="DownloadCountResult">
@@ -48,7 +62,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into t_download_count
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="toolId != null">tool_id,</if>
<if test="businessId != null">business_id,</if>
<if test="businessType != null">business_type,</if>
<if test="attId != null">att_id,</if>
<if test="attName != null">att_name,</if>
<if test="createBy != null">create_by,</if>
<if test="createById != null">create_by_id,</if>
<if test="createTime != null">create_time,</if>
@@ -58,7 +75,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="toolId != null">#{toolId},</if>
<if test="businessId != null">#{businessId},</if>
<if test="businessType != null">#{businessType},</if>
<if test="attId != null">#{attId},</if>
<if test="attName != null">#{attName},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createById != null">#{createById},</if>
<if test="createTime != null">#{createTime},</if>
@@ -71,7 +91,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateDownloadCount" parameterType="DownloadCount">
update t_download_count
<trim prefix="SET" suffixOverrides=",">
<if test="toolId != null">tool_id = #{toolId},</if>
<if test="businessId != null">business_id = #{businessId},</if>
<if test="businessType != null">business_type = #{businessType},</if>
<if test="attId != null">att_id = #{attId},</if>
<if test="attName != null">att_name = #{attName},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createById != null">create_by_id = #{createById},</if>
<if test="createTime != null">create_time = #{createTime},</if>
@@ -96,15 +119,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="userDownList" parameterType="DownloadCount" resultMap="DownloadCountResult">
select
tdc.tool_id,su.nick_name,tdc.create_time,sum(1) as tool_down_num
tdc.business_id,tdc.att_name,su.nick_name,tdc.create_time,sum(1) as tool_down_num
from t_download_count tdc
left join sys_user su on tdc.create_by_id = su.user_id
<where>
<if test="toolId != null and toolId != ''">
AND tool_id = #{toolId}
<if test="businessId != null and businessId != ''">
AND business_id = #{businessId}
</if>
</where>
group by su.nick_name
group by su.nick_name,tdc.business_id,tdc.att_name
</select>
<select id="selectDownloadDocCountList" parameterType="DownloadCount" resultMap="DownloadCountResult">
select
tdc.business_id,tl.doc_code,tl.doc_name,sum(1) as doc_down_num
from t_download_count tdc
left join t_document tl on tdc.business_id = tl.doc_id
<where>
and business_type = 'doc' and tl.is_deleted != 1
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(tdc.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(tdc.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="docCode != null and docCode != ''">
AND tl.doc_code like concat('%', #{docCode}, '%')
</if>
<if test="docName != null and docName != ''">
AND tl.doc_name like concat('%', #{docName}, '%')
</if>
</where>
group by tdc.business_id,tl.doc_code,tl.doc_name
</select>
</mapper>

View File

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="Replies" id="RepliesResult">
<result property="id" column="id" />
<result property="discussionId" column="discussion_id" />
<result property="repId" column="rep_id" />
<result property="content" column="content" />
<result property="isDelete" column="is_delete" />
<result property="createBy" column="create_by" />
@@ -19,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectRepliesVo">
select id, discussion_id, content, is_delete, create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_replies
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
</sql>
<select id="selectRepliesList" parameterType="Replies" resultMap="RepliesResult">
@@ -42,8 +43,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectRepliesById" parameterType="String" resultMap="RepliesResult">
<include refid="selectRepliesVo"/>
where id = #{id}
select tr.*,su.nick_name
from t_replies tr
left join sys_user su on su.user_id = tr.create_by_id
where tr.id = #{id}
</select>
<insert id="insertReplies" parameterType="Replies">
@@ -51,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="discussionId != null">discussion_id,</if>
<if test="repId != null">rep_id,</if>
<if test="content != null">content,</if>
<if test="isDelete != null">is_delete,</if>
<if test="createBy != null">create_by,</if>
@@ -63,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="discussionId != null">#{discussionId},</if>
<if test="repId != null">#{repId},</if>
<if test="content != null">#{content},</if>
<if test="isDelete != null">#{isDelete},</if>
<if test="createBy != null">#{createBy},</if>
@@ -78,6 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update t_replies
<trim prefix="SET" suffixOverrides=",">
<if test="discussionId != null">discussion_id = #{discussionId},</if>
<if test="repId != null">rep_id = #{repId},</if>
<if test="content != null">content = #{content},</if>
<if test="isDelete != null">is_delete = #{isDelete},</if>
<if test="createBy != null">create_by = #{createBy},</if>

View File

@@ -36,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="reason != null and reason != ''"> and reason = #{reason}</if>
<if test="recordStatus != null and recordStatus != ''"> and record_status = #{recordStatus}</if>
<if test="procTitle != null and procTitle != ''"> and proc_title like concat('%', #{procTitle}, '%')</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
@@ -128,11 +129,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<select id="checkToolApply" resultType="int">
SELECT count(*) FROM `t_tool_apply_item` uai
left join `t_tool_apply` ua on uai.apply_id = ua.id
WHERE ua.record_status = 'done'
and uai.tool_id = #{toolId}
and ua.user_id = #{userId}
<select id="hasToolUseApply" resultType="int">
SELECT count(*) FROM t_tool_apply ta
WHERE ta.apply_type='use' and ta.record_status != 'cancel' and ta.tool_id = #{toolId} and ta.user_id = #{userId}
</select>
<select id="checkToolUseApply" resultType="int">
SELECT count(*) FROM t_tool_apply ta
WHERE ta.apply_type='use' and ta.record_status = 'done'
and ta.tool_id = #{toolId}
and ta.user_id = #{userId}
</select>
</mapper>

View File

@@ -19,6 +19,10 @@
<result property="toolPrincipalsName" column="tool_principals_name" />
<result property="toolRespDept" column="tool_resp_dept" />
<result property="toolRespDeptName" column="tool_resp_dept_name" />
<result property="encryptionMode" column="encryption_mode" />
<result property="serviceTime" column="service_time" />
<result property="contactPerson" column="contact_person" />
<result property="contactPhone" column="contact_phone" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
@@ -40,7 +44,7 @@
</resultMap>
<sql id="selectToolVo">
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
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, encryption_mode, service_time, contact_person, contact_phone, status, remark, create_by, create_time, update_by, update_time,proc_inst_id,record_status,association from t_tool
</sql>
<select id="selectToolByToolId" parameterType="String" resultMap="ToolResult">
@@ -69,6 +73,10 @@
<if test="toolPrincipals != null">tool_principals,</if>
<if test="toolPrincipalsName != null">tool_principals_name,</if>
<if test="toolRespDept != null">tool_resp_dept,</if>
<if test="encryptionMode != null">encryption_mode,</if>
<if test="serviceTime != null">service_time,</if>
<if test="contactPerson != null">contact_person,</if>
<if test="contactPhone != null">contact_phone,</if>
<if test="status != null">status,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
@@ -93,6 +101,10 @@
<if test="toolPrincipals != null">#{toolPrincipals},</if>
<if test="toolPrincipalsName != null">#{toolPrincipalsName},</if>
<if test="toolRespDept != null">#{toolRespDept},</if>
<if test="encryptionMode != null">#{encryptionMode},</if>
<if test="serviceTime != null">#{serviceTime},</if>
<if test="contactPerson != null">#{contactPerson},</if>
<if test="contactPhone != null">#{contactPhone},</if>
<if test="status != null">#{status},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
@@ -120,6 +132,10 @@
<if test="toolPrincipals != null">tool_principals = #{toolPrincipals},</if>
<if test="toolPrincipalsName != null">tool_principals_name = #{toolPrincipalsName},</if>
<if test="toolRespDept != null">tool_resp_dept = #{toolRespDept},</if>
<if test="encryptionMode != null">encryption_mode = #{encryptionMode},</if>
<if test="serviceTime != null">service_time = #{serviceTime},</if>
<if test="contactPerson != null">contact_person = #{contactPerson},</if>
<if test="contactPhone != null">contact_phone = #{contactPhone},</if>
<if test="status != null">status = #{status},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
@@ -144,23 +160,31 @@
</select>
<select id="selectToolList" parameterType="Tool" resultMap="ToolResult">
select u.tool_id, u.tool_code, u.tool_name, u.tool_type, u.tool_source, u.tool_use, u.test_situation, u.function_desc, u.apply_condition, u.operate_explain,u.record_status,u.proc_inst_id,
u.tool_principals, u.tool_principals_name, u.tool_resp_dept, u.status, u.create_by, u.create_time, u.remark, sd.dept_name as tool_resp_dept_name,u.association
select u.tool_id, u.tool_code, u.tool_name, u.tool_type, u.tool_source, u.encryption_mode, u.service_time, u.contact_person, u.contact_phone, u.tool_use, u.test_situation, u.function_desc, u.apply_condition, u.operate_explain,u.record_status,u.proc_inst_id,
u.tool_principals, u.tool_principals_name, u.tool_resp_dept, u.status, u.create_by, u.create_time, u.remark, d.dept_name as tool_resp_dept_name,u.association
from t_tool u
left join sys_user su on u.create_by = su.user_id
left join sys_dept d on d.dept_id = su.dept_Id
left join sys_dept sd on u.tool_resp_dept = sd.dept_id
left join sys_dept d on u.tool_resp_dept = d.dept_id
where 1=1
and u.record_status != 'cancel'
<if test="toolId != null and toolId != ''">
AND u.tool_id = #{toolId}
</if>
<if test="toolCode != null and toolCode != ''">
AND u.tool_code = #{toolCode}
AND u.tool_code like concat('%', #{toolCode}, '%')
</if>
<if test="toolName != null and toolName != ''">
AND u.tool_name like concat('%', #{toolName}, '%')
</if>
<if test="toolPrincipalsName != null and toolPrincipalsName != ''">
AND u.tool_principals_name like concat('%', #{toolPrincipalsName}, '%')
</if>
<if test="toolType != null and toolType != ''">
AND u.tool_type = #{toolType}
</if>
<if test="recordStatus != null and recordStatus != ''">
AND u.record_status = #{recordStatus}
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</if>
@@ -179,6 +203,18 @@
<if test="recordStatus != null and recordStatus != ''">
AND u.record_status = #{recordStatus}
</if>
<if test="toolIdList != null and toolIdList.size() > 0">
and u.tool_id in
<foreach item="id" index="index" collection="toolIdList" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="filterToolIds != null and filterToolIds.size() > 0">
and u.tool_id not in
<foreach item="id" index="index" collection="filterToolIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
${params.dataScope}
order by create_time desc
</select>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rzdata.web.mapper.ToolRelationMapper">
<resultMap type="ToolRelation" id="ToolRelationResult">
<result property="id" column="id" />
<result property="resourceId" column="resource_id" />
<result property="targetId" column="target_id" />
<result property="toolCode" column="tool_code" />
<result property="toolName" column="tool_name" />
</resultMap>
<sql id="selectToolRelationVo">
select id, resource_id, target_id from t_tool_relation
</sql>
<select id="selectToolRelationList" parameterType="ToolRelation" resultMap="ToolRelationResult">
<include refid="selectToolRelationVo"/>
<where>
<if test="resourceId != null and resourceId != ''"> and resource_id = #{resourceId}</if>
<if test="targetId != null and targetId != ''"> and target_id = #{targetId}</if>
</where>
</select>
<select id="selectRelationToolList" parameterType="ToolRelation" resultMap="ToolRelationResult">
select
tr.id, tr.resource_id, tr.target_id,tl.tool_code,tl.tool_name
from t_tool_relation tr
left join t_tool tl on tr.target_id = tl.tool_id
<where>
<if test="resourceId != null and resourceId != ''"> and tr.resource_id = #{resourceId}</if>
<if test="targetId != null and targetId != ''"> and tr.target_id = #{targetId}</if>
<if test="resourceIds != null and resourceIds.size() > 0">
and tr.resource_id in
<foreach item="id" index="index" collection="resourceIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
<select id="selectToolRelationById" parameterType="String" resultMap="ToolRelationResult">
<include refid="selectToolRelationVo"/>
where id = #{id}
</select>
<insert id="insertToolRelation" parameterType="ToolRelation">
insert into t_tool_relation
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="resourceId != null">resource_id,</if>
<if test="targetId != null">target_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="resourceId != null">#{resourceId},</if>
<if test="targetId != null">#{targetId},</if>
</trim>
</insert>
<update id="updateToolRelation" parameterType="ToolRelation">
update t_tool_relation
<trim prefix="SET" suffixOverrides=",">
<if test="resourceId != null">resource_id = #{resourceId},</if>
<if test="targetId != null">target_id = #{targetId},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteToolRelationById" parameterType="String">
delete from t_tool_relation where id = #{id}
</delete>
<delete id="deleteResourceAndTarget" parameterType="String">
delete from t_tool_relation where resource_id = #{resourceId} and target_id = #{targetId}
</delete>
<delete id="deleteTargetAndResource" parameterType="String">
delete from t_tool_relation where target_id = #{targetId} and resource_id = #{resourceId}
</delete>
<delete id="deleteToolRelationByIds" parameterType="String">
delete from t_tool_relation where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 批量插入 -->
<insert id="batchInsert" parameterType="java.util.List">
insert into t_tool_relation (id, resource_id, target_id)
values
<foreach item="item" index="index" collection="toolRelationList" open="(" separator="),(" close=")">
#{item.id}, #{item.resourceId}, #{item.targetId}
</foreach>
</insert>
</mapper>

View File

@@ -7,6 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="TzMessage" id="TzMessageResult">
<result property="id" column="id" />
<result property="receiverId" column="receiver_id" />
<result property="businessId" column="business_id" />
<result property="businessType" column="business_type" />
<result property="states" column="states" />
<result property="content" column="content" />
<result property="deleted" column="deleted" />
@@ -20,7 +22,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectTzMessageVo">
select id, receiver_id, states, content, deleted, create_by, create_time, update_by, update_time, remark,create_by_id,update_by_id from tz_message
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
</sql>
<select id="selectTzMessageList" parameterType="TzMessage" resultMap="TzMessageResult">
@@ -30,8 +34,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="states != null "> and states = #{states}</if>
<if test="content != null and content != ''"> and content like concat('%', #{content}, '%')</if>
<if test="createById != null and deleted != ''"> and create_by_id = #{createById}</if>
<if test="businessType != null and businessType != ''"> and business_type = #{businessType}</if>
and deleted = '0'
</where>
order by create_time desc
</select>
<select id="selectTzMessageById" parameterType="String" resultMap="TzMessageResult">
@@ -44,6 +50,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="receiverId != null">receiver_id,</if>
<if test="businessId != null">business_id,</if>
<if test="businessType != null">business_type,</if>
<if test="states != null">states,</if>
<if test="content != null and content != ''">content,</if>
<if test="deleted != null and deleted != ''">deleted,</if>
@@ -58,6 +66,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="receiverId != null">#{receiverId},</if>
<if test="businessId != null">#{businessId},</if>
<if test="businessType != null">#{businessType},</if>
<if test="states != null">#{states},</if>
<if test="content != null and content != ''">#{content},</if>
<if test="deleted != null and deleted != ''">#{deleted},</if>
@@ -66,8 +76,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
<if test="createById != null">#{create_by_id},</if>
<if test="updateById != null">#{update_by_id},</if>
<if test="createById != null">#{createById},</if>
<if test="updateById != null">#{updateById},</if>
</trim>
</insert>
@@ -75,6 +85,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update tz_message
<trim prefix="SET" suffixOverrides=",">
<if test="receiverId != null">receiver_id = #{receiverId},</if>
<if test="businessId != null">business_id = #{businessId},</if>
<if test="businessType != null">business_type = #{businessType},</if>
<if test="states != null">states = #{states},</if>
<if test="content != null and content != ''">content = #{content},</if>
<if test="deleted != null and deleted != ''">deleted = #{deleted},</if>
@@ -101,15 +113,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<update id="updateAllMarkedRead" parameterType="TzMessage">
update tz_message set states = '2' where create_by_id = #{createById}
update tz_message set states = '2',update_by = #{updateBy},update_time = #{updateTime},update_by_id = #{updateById} where receiver_id = #{receiverId}
</update>
<!-- 批量插入 -->
<insert id="batchInsert" parameterType="java.util.List">
insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_time
insert into tz_message (id, business_id, business_type, receiver_id, states, content, deleted, create_by, create_by_id, create_time)
values
<foreach item="item" index="index" collection="tzMessageList" open="(" separator="),(" close=")">
#{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy}, #{item.createTime}
#{item.id}, #{item.businessId}, #{item.businessType}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime}
</foreach>
</insert>
<select id="selectTzMessageByUserCount" resultType="java.lang.Integer">
select count(1) from tz_message where receiver_id = #{userId} and states = '1' and deleted = '0'
</select>
</mapper>

View File

@@ -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

View File

@@ -192,6 +192,8 @@ public class Constants
/** 文档-doc **/
public static final String DOC_TYPE_DOC = "doc";
/** 工具状态 **/
public static final String ATT_TYPE_TOOL = "tool";
public static final String STR_ZERO = "0";
@@ -209,4 +211,17 @@ public class Constants
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 ="/";
}

View File

@@ -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<ToolTreeSelect> 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());
}
}

View File

@@ -20,7 +20,7 @@ public class TreeSelect implements Serializable
/** 节点ID */
private Long id;
private String categoryId;
/** 节点名称 */
private String label;
@@ -54,6 +54,7 @@ public class TreeSelect implements Serializable
public TreeSelect(DocumentCategory docCategory)
{
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());

View File

@@ -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()
{

View File

@@ -22,9 +22,9 @@ public class MimeTypeUtils
public static final String[] FLASH_EXTENSION = { "swf", "flv" };
public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
"asf", "rm", "rmvb" };
"asf", "rm", "webm" };
public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "webm" };
public static final String[] DEFAULT_ALLOWED_EXTENSION = {
// 图片
@@ -34,7 +34,7 @@ public class MimeTypeUtils
// 压缩文件
"rar", "zip", "gz", "bz2",
// 视频格式
"mp4", "avi", "rmvb",
"mp4", "avi", "webm",
// pdf
"pdf" };

View File

@@ -1,2 +1,2 @@
#!/bin/bash
tail -fn 300 ../log/kkFileView.log
tail -fn 300 ../log/toolTechFileView.log

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -44,7 +44,7 @@
* 初始化
*/
window.onload = function () {
initWaterMark();
//initWaterMark();
loadText();
}

View File

@@ -76,7 +76,7 @@ reader.readAsArrayBuffer(file);
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>

View File

@@ -96,7 +96,7 @@
);
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -34,7 +34,7 @@
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -38,7 +38,7 @@
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -153,7 +153,7 @@ function blobToArrayBuffer(blob) {
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -38,7 +38,6 @@
该(${fileType})文件,系统暂不支持在线预览,具体原因如下:
<p style="color: red;">${msg}</p>
</span>
<p>有任何疑问请加入kk开源社区知识星球咨询<a href="https://t.zsxq.com/09ZHSXbsQ">https://t.zsxq.com/09ZHSXbsQ</a><br></p>
</div>
</body>
</html>

View File

@@ -27,7 +27,7 @@
}
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -4,7 +4,7 @@
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>kkFileView演示首页</title>
<title>tool-tech-file-view演示首页</title>
<link rel="icon" href="./favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/loading.css"/>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
@@ -64,13 +64,11 @@
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
<a class="navbar-brand" href="#" target='_blank'>ToolTechFileView</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="./index">首页</a></li>
<li><a href="./integrated">接入说明</a></li>
<li><a href="./record">版本发布记录</a></li>
<li><a href="./sponsor">赞助开源</a></li>
</ul>
</div>
</nav>
@@ -79,7 +77,6 @@
<#-- 接入说明 -->
<div class="page-header">
<h1>支持的文件类型</h1>
我们一直在扩展支持的文件类型不断优化预览的效果如果您有什么建议欢迎在kk开源社区留意反馈<a target='_blank' href="https://t.zsxq.com/09ZHSXbsQ">https://t.zsxq.com/09ZHSXbsQ</a>。
</div>
<div >
<ol>

View File

@@ -17,13 +17,11 @@
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
<a class="navbar-brand" href="#" target='_blank'>ToolTechFileView</a>
</div>
<ul class="nav navbar-nav">
<li><a href="./index">首页</a></li>
<li class="active"><a href="./integrated">接入说明</a></li>
<li><a href="./record">版本发布记录</a></li>
<li><a href="./sponsor">赞助开源</a></li>
</ul>
</div>
</nav>
@@ -32,7 +30,7 @@
<#-- 接入说明 -->
<div class="page-header">
<h1>接入说明</h1>
本文档针对前端项目接入 kkFileView 的说明,并假设 kkFileView 的服务地址为http://127.0.0.1:8012。
本文档针对前端项目接入 ToolTechFileView 的说明,并假设 ToolTechFileView 的服务地址为http://127.0.0.1:8012。
</div>
<div class="well">

View File

@@ -42,7 +42,7 @@
*/
window.onload = function () {
$("#markdown_btn").hide()
initWaterMark();
//initWaterMark();
loadMarkdown();
}
function htmlEscape(str){

View File

@@ -102,7 +102,7 @@
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>

View File

@@ -35,7 +35,6 @@
<img src="images/sorry.jpg" />
<p>
预览源文件来自未授信的目录,请停止访问!<br>
有任何疑问请加入kk开源社区知识星球咨询<a href="https://t.zsxq.com/09ZHSXbsQ">https://t.zsxq.com/09ZHSXbsQ</a><br>
</p>
</div>
</body>

View File

@@ -33,10 +33,6 @@
<body>
<div class="container">
<img src="images/sorry.jpg" />
<p>
预览源文件来自不受信任的站点:<span style="color: red; display: inline;">${current_host}</span> 请联系管理员!<br>
有任何疑问请加入kk开源社区知识星球咨询<a href="https://t.zsxq.com/09ZHSXbsQ">https://t.zsxq.com/09ZHSXbsQ</a><br>
</p>
</div>
</body>
</html>

View File

@@ -45,7 +45,7 @@
}
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -43,7 +43,7 @@
<script>
window.onload = function () {
/*初始化水印*/
initWaterMark();
//initWaterMark();
checkImgs();
};
window.onscroll = throttle(checkImgs);

View File

@@ -81,7 +81,7 @@
}
let mask = document.getElementById("lucky-mask-demo");
function loadText() {
initWaterMark(); // 是否显示水印
//initWaterMark(); // 是否显示水印
var value = url;
var name = '${file.name}';
if(value==""){

View File

@@ -44,7 +44,7 @@
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -55,7 +55,7 @@
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</html>

View File

@@ -40,7 +40,7 @@
/*初始化水印*/
window.onload = function() {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -138,7 +138,7 @@
}
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -46,7 +46,7 @@
createNewEmbed(url);
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -105,7 +105,6 @@ html += " <span>";
html += " 该(tif)文件,系统解析错误,具体原因如下:";
html += " <p style=\"color: red;\">文件[${file.name}]解析失败,请联系系统管理员</p>";
html += " </span>";
html += " <p>有任何疑问请加入kk开源社区知识星球咨询<a href=\"https://t.zsxq.com/09ZHSXbsQ\">https://t.zsxq.com/09ZHSXbsQ</a><br></p>";
html += "</div>";
html += "</body>";
html += "</html>";
@@ -139,7 +138,7 @@ html += "</html>";
/*初始化水印*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -288,7 +288,7 @@ background-color:#000000
* 初始化
*/
window.onload = function () {
initWaterMark();
//initWaterMark();
}
</script>
<#else/>
@@ -322,7 +322,7 @@ background-color:#000000
* 初始化
*/
window.onload = function () {
initWaterMark();
//initWaterMark();
loadText();
}
</script>

View File

@@ -47,7 +47,7 @@
if (!!window.ActiveXObject || "ActiveXObject" in window)
{
}else{
initWaterMark();
//initWaterMark();
}
</script>
</body>

View File

@@ -43,7 +43,7 @@
*/
window.onload = function () {
$("#xml_btn").hide()
initWaterMark();
//initWaterMark();
loadXmlData()
}

View File

@@ -131,8 +131,13 @@ public class DataScopeAspect
}
else if (DATA_SCOPE_DEPT.equals(dataScope))
{
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))
{
sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId()));

View File

@@ -36,7 +36,7 @@ public class ResourcesConfig implements WebMvcConfigurer
/** swagger配置 */
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
.setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());;
.setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());
}
/**

View File

@@ -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;
@@ -193,7 +194,7 @@ public class SysDeptServiceImpl implements ISysDeptService
{
SysDept dept = new SysDept();
dept.setDeptId(deptId);
List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
List<SysDept> depts = deptMapper.selectDeptList(dept);
if (StringUtils.isEmpty(depts))
{
throw new ServiceException("没有权限访问部门数据!");
@@ -217,9 +218,18 @@ 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<String> ancestorList = Arrays.asList(ancestors.split(","));
List<String> ancestorFilterList = ancestorList.stream().filter(e ->
!"0".equals(e)).collect(Collectors.toList());
dept.setDeptType(String.valueOf(ancestorFilterList.size()));
}
/**
* 修改保存部门信息
*

View File

@@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="parentId" column="parent_id" />
<result property="ancestors" column="ancestors" />
<result property="deptName" column="dept_name" />
<result property="deptType" column="dept_type" />
<result property="orderNum" column="order_num" />
<result property="leader" column="leader" />
<result property="phone" column="phone" />
@@ -23,13 +24,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectDeptVo">
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
</sql>
<select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
<include refid="selectDeptVo"/>
where d.del_flag = '0'
where d.del_flag = '0' and d.status = '0'
<if test="deptId != null and deptId != 0">
AND dept_id = #{deptId}
</if>
@@ -92,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="parentId != null and parentId != 0">parent_id,</if>
<if test="deptName != null and deptName != ''">dept_name,</if>
<if test="deptType != null and deptType != ''">dept_type,</if>
<if test="ancestors != null and ancestors != ''">ancestors,</if>
<if test="orderNum != null">order_num,</if>
<if test="leader != null and leader != ''">leader,</if>
@@ -104,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != 0">#{deptId},</if>
<if test="parentId != null and parentId != 0">#{parentId},</if>
<if test="deptName != null and deptName != ''">#{deptName},</if>
<if test="deptType != null and deptType != ''">#{deptType},</if>
<if test="ancestors != null and ancestors != ''">#{ancestors},</if>
<if test="orderNum != null">#{orderNum},</if>
<if test="leader != null and leader != ''">#{leader},</if>
@@ -120,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<set>
<if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
<if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
<if test="deptType != null and deptType != ''">dept_type = #{deptType},</if>
<if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
<if test="orderNum != null">order_num = #{orderNum},</if>
<if test="leader != null">leader = #{leader},</if>

View File

@@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<!-- 锁定某些字段类型 -->
AND dict_type in ('tool_type','msg_status','tool_source','tool_status','doc_class','doc_source','doc_upload_status','flow_status')
AND dict_type in ('tool_type','msg_status','tool_source','tool_status','doc_class','doc_source','doc_upload_status')
</where>
</select>

View File

@@ -66,6 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test="nickName != null and nickName != ''">
AND u.nick_name like concat('%', #{nickName}, '%')
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</if>