From fbc96e81e3477c8e2d1a1e4d5adf9f184b453f81 Mon Sep 17 00:00:00 2001 From: liukang Date: Wed, 21 Aug 2024 18:06:12 +0800 Subject: [PATCH 01/36] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BD=BF=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +- tool-tech-admin/pom.xml | 35 +- .../web/controller/tool/ToolController.java | 57 +- .../controller/tool/UseApplyController.java | 156 ++++ .../tool/UseApplyItemController.java | 110 +++ .../controller/tool/WorkflowController.java | 619 ++++++++++++++ .../tool/WorkflowLogController.java | 110 +++ .../rzdata/web/core/config/BpmcConfig.java | 34 + .../main/java/com/rzdata/web/domain/Tool.java | 165 +--- .../java/com/rzdata/web/domain/UseApply.java | 45 + .../com/rzdata/web/domain/UseApplyItem.java | 52 ++ .../com/rzdata/web/domain/WorkFlowInfo.java | 129 +++ .../com/rzdata/web/domain/WorkflowLog.java | 88 ++ .../web/domain/bo/BpmClientInputModelBo.java | 33 + .../rzdata/web/domain/vo/WorkFlowPageVo.java | 28 + .../com/rzdata/web/mapper/ToolMapper.java | 2 + .../rzdata/web/mapper/UseApplyItemMapper.java | 63 ++ .../com/rzdata/web/mapper/UseApplyMapper.java | 64 ++ .../rzdata/web/mapper/WorkflowLogMapper.java | 61 ++ .../com/rzdata/web/service/IToolService.java | 2 + .../web/service/IUseApplyItemService.java | 63 ++ .../rzdata/web/service/IUseApplyService.java | 64 ++ .../web/service/IWorkflowLogService.java | 66 ++ .../rzdata/web/service/WorkflowService.java | 779 ++++++++++++++++++ .../web/service/impl/ToolServiceImpl.java | 6 +- .../service/impl/UseApplyItemServiceImpl.java | 110 +++ .../web/service/impl/UseApplyServiceImpl.java | 101 +++ .../service/impl/WorkflowLogServiceImpl.java | 125 +++ .../src/main/resources/application.yml | 5 + .../src/main/resources/mapper/ToolMapper.xml | 17 +- .../resources/mapper/UseApplyItemMapper.xml | 97 +++ .../main/resources/mapper/UseApplyMapper.xml | 96 +++ .../resources/mapper/WorkflowLogMapper.xml | 147 ++++ .../rzdata/common/enums/RecordStatusEnum.java | 49 ++ 34 files changed, 3408 insertions(+), 176 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java create mode 100644 tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml create mode 100644 tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml create mode 100644 tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml create mode 100644 tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java diff --git a/pom.xml b/pom.xml index 936fd8e..68e5f74 100644 --- a/pom.xml +++ b/pom.xml @@ -3,14 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - + com.rzdata tool-tech 3.8.8 tool-tech 工具与技术交流管理系统 - + 3.8.8 UTF-8 @@ -285,4 +285,4 @@ - \ No newline at end of file + diff --git a/tool-tech-admin/pom.xml b/tool-tech-admin/pom.xml index 8d2e4f2..6a1b9d0 100644 --- a/tool-tech-admin/pom.xml +++ b/tool-tech-admin/pom.xml @@ -16,7 +16,26 @@ - + + com.google.guava + guava + 21.0 + + + com.squareup.okhttp3 + okhttp + 4.9.2 + + + com.alibaba + fastjson + 1.2.76 + + + com.blueland.bpmclient + workflow-sdk + 0.1.5 + com.rzdata @@ -85,17 +104,17 @@ - - org.apache.maven.plugins - maven-war-plugin - 3.1.0 + + org.apache.maven.plugins + maven-war-plugin + 3.1.0 false ${project.artifactId} - - + + ${project.artifactId} - \ No newline at end of file + diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 7d51e56..c8f94c3 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -1,15 +1,22 @@ package com.rzdata.web.controller.tool; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.IdUtil; +import com.blueland.bpmclient.model.ProcessInstanceModel; import com.rzdata.common.annotation.Log; import com.rzdata.common.core.controller.BaseController; import com.rzdata.common.core.domain.AjaxResult; import com.rzdata.common.core.page.TableDataInfo; import com.rzdata.common.enums.BizExceptionCodeEnum; import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.enums.RecordStatusEnum; import com.rzdata.common.exception.RestException; +import com.rzdata.common.utils.StringUtils; import com.rzdata.common.utils.poi.ExcelUtil; import com.rzdata.web.domain.Tool; import com.rzdata.web.service.IToolService; +import com.rzdata.web.service.WorkflowService; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -30,6 +37,9 @@ public class ToolController extends BaseController @Autowired private IToolService toolService; + @Autowired + private WorkflowService workflowService; + /** * 查询工具信息列表 */ @@ -62,6 +72,21 @@ public class ToolController extends BaseController return success(toolService.selectToolByToolId(toolId)); } + /** + * 获取工具信息详细信息 + */ + @GetMapping(value = "/bpmc/{bpmcId}") + public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) + { + return success(toolService.getInfoByBpmcId(bpmcId)); + } + + @ApiOperation("判断文件名称是否存在 true 存在 false 不存在") + @GetMapping("/checkToolExist") + public AjaxResult checkToolExist(Tool tTool) { + return AjaxResult.success(toolService.checkToolExist(tTool.getToolCode(), tTool.getToolRespDept())); + } + /** * 新增工具信息 */ @@ -69,17 +94,41 @@ public class ToolController extends BaseController @PostMapping public AjaxResult add(@RequestBody Tool tTool) { - if(toolService.checkToolExist(tTool.getToolCode(), tTool.getToolRespDept())){ - throw new RestException(BizExceptionCodeEnum.A400001001.getCode(), BizExceptionCodeEnum.A400001001.getMessage()); + boolean add = false; + if (StringUtils.isEmpty(tTool.getToolId())) { + tTool.setToolId(IdUtil.simpleUUID()); + add = true; + } + ProcessInstanceModel processInstanceModel = null; + try { + if(StringUtils.equals(tTool.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ + processInstanceModel = workflowService.saveExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + }else if (StringUtils.equals(tTool.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ + processInstanceModel = workflowService.cancelExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + }else{ + processInstanceModel = workflowService.nextExecute(tTool.getBpmClientInputModel(), tTool.getToolId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + if (processInstanceModel!=null&&StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (add) { + tTool.setProcInstId(processInstanceModel.getProcInstId()); + toolService.insertTool(tTool); + }else if (BooleanUtil.isTrue(tTool.getEditStatus())){ + toolService.updateTool(tTool); + } + return AjaxResult.success("操作成功",processInstanceModel); + }else { + return AjaxResult.error(); } - return toAjax(toolService.insertTool(tTool)); } /** * 修改工具信息 */ @Log(title = "工具信息", businessType = BusinessType.UPDATE) - @PutMapping + @PostMapping("/edit") public AjaxResult edit(@RequestBody Tool tTool) { return toAjax(toolService.updateTool(tTool)); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java new file mode 100644 index 0000000..4d62afe --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java @@ -0,0 +1,156 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.IdUtil; +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.common.enums.RecordStatusEnum; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.web.service.IUseApplyItemService; +import com.rzdata.web.service.WorkflowService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.web.domain.UseApply; +import com.rzdata.web.service.IUseApplyService; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 使用申请Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/use/apply") +public class UseApplyController extends BaseController +{ + @Autowired + private IUseApplyService useApplyService; + + @Autowired + private WorkflowService workflowService; + + @Autowired + private IUseApplyItemService useApplyItemService; + + + /** + * 查询使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:list')") + @GetMapping("/list") + public TableDataInfo list(UseApply useApply) + { + startPage(); + List list = useApplyService.selectUseApplyList(useApply); + return getDataTable(list); + } + + /** + * 获取工具信息详细信息 + */ + @GetMapping(value = "/bpmc/{bpmcId}") + public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) + { + return success(useApplyService.getInfoByBpmcId(bpmcId)); + } + + /** + * 导出使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:export')") + @Log(title = "使用申请", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, UseApply useApply) + { + List list = useApplyService.selectUseApplyList(useApply); + ExcelUtil util = new ExcelUtil(UseApply.class); + util.exportExcel(response, list, "使用申请数据"); + } + + /** + * 获取使用申请详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:apply:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(useApplyService.selectUseApplyById(id)); + } + + /** + * 新增使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody UseApply useApply) + { + boolean add = false; + if (StringUtils.isEmpty(useApply.getId())) { + useApply.setId(IdUtil.simpleUUID()); + add = true; + } + ProcessInstanceModel processInstanceModel = null; + try { + if(StringUtils.equals(useApply.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ + processInstanceModel = workflowService.saveExecute(useApply.getBpmClientInputModel(), useApply.getId()); + }else if (StringUtils.equals(useApply.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ + processInstanceModel = workflowService.cancelExecute(useApply.getBpmClientInputModel(), useApply.getId()); + }else{ + processInstanceModel = workflowService.nextExecute(useApply.getBpmClientInputModel(), useApply.getId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + if (processInstanceModel!=null&&StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (add) { + useApply.setProcInstId(processInstanceModel.getProcInstId()); + useApplyService.insertUseApply(useApply); + useApplyItemService.updateItemList(useApply.getItemList(),useApply.getId()); + }else if (BooleanUtil.isTrue(useApply.getEditStatus())){ + useApplyService.updateUseApply(useApply); + useApplyItemService.updateItemList(useApply.getItemList(),useApply.getId()); + } + return AjaxResult.success("操作成功",processInstanceModel); + }else { + return AjaxResult.error(); + } + } + + /** + * 修改使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + public AjaxResult edit(@RequestBody UseApply useApply) + { + return toAjax(useApplyService.updateUseApply(useApply)); + } + + /** + * 删除使用申请 + */ + @PreAuthorize("@ss.hasPermi('system:apply:remove')") + @Log(title = "使用申请", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(useApplyService.deleteUseApplyByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java new file mode 100644 index 0000000..d066d2e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyItemController.java @@ -0,0 +1,110 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.web.domain.UseApplyItem; +import com.rzdata.web.service.IUseApplyItemService; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 使用申请详情Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/use/apply/item") +public class UseApplyItemController extends BaseController +{ + @Autowired + private IUseApplyItemService useApplyItemService; + + /** + * 查询使用申请详情列表 + */ + @PreAuthorize("@ss.hasPermi('system:item:list')") + @GetMapping("/page") + public TableDataInfo page(UseApplyItem useApplyItem) + { + startPage(); + List list = useApplyItemService.selectUseApplyItemList(useApplyItem); + return getDataTable(list); + } + + @GetMapping("/list") + public AjaxResult list(UseApplyItem useApplyItem) + { + return AjaxResult.success(useApplyItemService.selectUseApplyItemList(useApplyItem)); + } + + /** + * 导出使用申请详情列表 + */ + @PreAuthorize("@ss.hasPermi('system:item:export')") + @Log(title = "使用申请详情", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, UseApplyItem useApplyItem) + { + List list = useApplyItemService.selectUseApplyItemList(useApplyItem); + ExcelUtil util = new ExcelUtil(UseApplyItem.class); + util.exportExcel(response, list, "使用申请详情数据"); + } + + /** + * 获取使用申请详情详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:item:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(useApplyItemService.selectUseApplyItemById(id)); + } + + /** + * 新增使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:add')") + @Log(title = "使用申请详情", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody UseApplyItem useApplyItem) + { + return toAjax(useApplyItemService.insertUseApplyItem(useApplyItem)); + } + + /** + * 修改使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:edit')") + @Log(title = "使用申请详情", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody UseApplyItem useApplyItem) + { + return toAjax(useApplyItemService.updateUseApplyItem(useApplyItem)); + } + + /** + * 删除使用申请详情 + */ + @PreAuthorize("@ss.hasPermi('system:item:remove')") + @Log(title = "使用申请详情", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(useApplyItemService.deleteUseApplyItemByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java new file mode 100644 index 0000000..5b6d5d0 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java @@ -0,0 +1,619 @@ +package com.rzdata.web.controller.tool; + +import com.blueland.bpmclient.model.*; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.system.service.ISysConfigService; +import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.core.config.BpmcConfig; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.domain.vo.WorkFlowPageVo; +import com.rzdata.web.service.WorkflowService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Validated +@Slf4j +@RestController +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequestMapping(value = "/workflow") +@Api(value = "流程服务", tags = {"流程服务"}) +public class WorkflowController extends BaseController { + + private final WorkflowService workflowService; + + private final ISysUserService userService; + + private final ISysConfigService sysConfigService; + + private final BpmcConfig bpmcConfig; + + + @CrossOrigin + @ApiOperation(value = "获取流程待选人员展示方式", notes = "获取流程待选人员展示方式") + @GetMapping(value = "selectUserStyle") + @ResponseBody + public AjaxResult selectUserStyle() throws Exception { + String result = "tree"; + String value = this.sysConfigService.selectConfigByKey("DMS_FLOW_SELECT_USER_STYLE"); + if(StringUtils.isNotEmpty(value)) { + result = value; + } + return AjaxResult.success("",result); + } + + @CrossOrigin + @ApiOperation(value = "根据流程定义Key获取流程定义信息", notes = "根据流程定义Key获取流程定义信息") + @ApiImplicitParams({@ApiImplicitParam(name = "procDefKey", value = "流程定义key", dataType = "string", paramType = "path") }) + @GetMapping(value = "process/key/{procDefKey}") + @ResponseBody + public AjaxResult getProcessDefinitionModel(@PathVariable("procDefKey") String procDefKey) throws Exception { + ProcessDefinitionModel processDefinitionModel = workflowService.getProcessDefinitionModel( + procDefKey); + return AjaxResult.success(processDefinitionModel); + + } + + @CrossOrigin + @ApiOperation(value = "获取流程第一个人工环节定义", notes = "获取流程第一个人工环节定义") + @GetMapping(value = "startactdef/{procDefId}") + @ResponseBody + public AjaxResult getStartActdef( + @PathVariable("procDefId") String procDefId) throws Exception{ + ActivityDefinitionModel activityDefinitionModel = workflowService.getStartactDef(procDefId); + return AjaxResult.success(activityDefinitionModel); + + } + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节流程定义信息", notes = "新建流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/new") + @ResponseBody + public AjaxResult getNextActsByNew(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + /** + * 获取下一环节集合,并可以标识已办和自动将未办理环节优先排序 + * + * @param searchQuery + * @return + */ + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节流程定义信息", notes = "新建流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/new2") + @ResponseBody + public AjaxResult getNextActsByNew2(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节流程定义信息", notes = "待办流程,获取下一环节流程定义信息") + @PostMapping(value = "nextacts/pending") + @ResponseBody + public AjaxResult getNextActsByPending(@RequestBody SearchQuery searchQuery) { + List list = workflowService.getNextActs(searchQuery); + return AjaxResult.success(list); + } + + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节用户定义信息", notes = "新建流程,获取下一环节用户定义信息") + @GetMapping(value = "nextactuser/new") + @ResponseBody + public AjaxResult getNextActUsersByNew( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "procDefId") String procDefId, HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setCurActDefId(curActDefId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setProcDefId(procDefId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "新建流程,获取下一环节用户定义信息", notes = "新建流程,获取下一环节用户定义信息") + @PostMapping(value = "nextactuser/new") + @ResponseBody + public AjaxResult getNextActUsersByNew( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "procDefId") String procDefId, @RequestBody SearchQuery searchQuery, + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setCurActDefId(curActDefId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setProcDefId(procDefId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节用户定义信息", notes = "待办流程,获取下一环节用户定义信息") + @GetMapping(value = "nextactuser/pending") + @ResponseBody + public AjaxResult getNextActUsersByPending( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActInstId") String curActInstId, + @RequestParam(value = "destActDefId") String destActDefId, + @RequestParam(value = "curActDefId") String curActDefId, + @RequestParam(value = "procDefKey") String procDefKey, + @RequestParam(value = "procInstId") String procInstId, + + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setTenantId(bpmcConfig.getTenantId()); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setCurActInstId(curActInstId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "待办流程,获取下一环节用户定义信息", notes = "待办流程,获取下一环节用户定义信息") + @PostMapping(value = "nextactuser/pending") + @ResponseBody + public AjaxResult getNextActUsersByPending( + @RequestParam(value = "userOrgId") String userOrgId, + @RequestParam(value = "curActInstId") String curActInstId, + @RequestParam(value = "destActDefId") String destActDefId, @RequestBody SearchQuery searchQuery, + HttpServletRequest request) { + String userId = SecurityUtils.getLoginUser().getUsername(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(userOrgId); + searchQuery.setDestActDefId(destActDefId); + searchQuery.setCurActInstId(curActInstId); + List rs = workflowService.getNextActUsers(searchQuery); + return AjaxResult.success(rs); + } + + @CrossOrigin + @ApiOperation(value = "获取待办实例信息", notes = "获取待办实例信息") + @GetMapping(value = "flowinfo/pending") + @ResponseBody + public AjaxResult getPendingFlowInstance( + @RequestParam(value = "curActInstId") String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setCurActInstId(curActInstId); + searchQuery.setStatus(1); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "获取已办实例信息", notes = "获取已办实例信息") + @GetMapping(value = "flowinfo/yiban") + @ResponseBody + public AjaxResult getYiBanFlowInstance( + @RequestParam(value = "curActInstId") String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setCurActInstId(curActInstId); + searchQuery.setStatus(2); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "获取办结实例信息", notes = "获取办结实例信息") + @GetMapping(value = "flowinfo/banjie") + @ResponseBody + public AjaxResult getBanJieFlowInstance( + @RequestParam(value = "procInstId") String procInstId, + HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SysUser user = userService.selectUserByUserName(userId); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setUserId(userId); + searchQuery.setUserOrgId(user.getDeptId().toString()); + searchQuery.setProcInstId(procInstId); + searchQuery.setStatus(3); + HashMap flowInfoMap = workflowService.getFLowInfo(searchQuery); + return AjaxResult.success(flowInfoMap); + } + + @CrossOrigin + @ApiOperation(value = "新建页面,判断下一环节是否自动提交", notes = "新建页面,判断下一环节是否自动提交") + @GetMapping(value = "autocommit/new/{procDefId}/{curActDefId}") + @ResponseBody + public AjaxResult checkAutoCommitByNew( + @PathVariable("procDefId") String procDefId, @PathVariable("curActDefId") String curActDefId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setProcDefId(procDefId); + searchQuery.setCurActDefId(curActDefId); + String actDefId = workflowService.checkAutoCommit(searchQuery); + return AjaxResult.success("",actDefId); + + } + + @CrossOrigin + @ApiOperation(value = "待办页面,判断下一环节是否自动提交", notes = "待办页面,判断下一环节是否自动提交") + @GetMapping(value = "autocommit/pending/{curActInstId}") + @ResponseBody + public AjaxResult checkAutoCommitByPending( + @PathVariable("curActInstId") String curActInstId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setCurActInstId(curActInstId); + String actDefId = workflowService.checkAutoCommit(searchQuery); + return AjaxResult.success("",actDefId); + } + + @CrossOrigin + @ApiOperation(value = "待办页面,判断下一环节是否自动跳转", notes = "待办页面,判断下一环节是否自动跳转") + @GetMapping(value = "autoJump/pending/{curActInstId}") + @ResponseBody + public AjaxResult checkAutoJumpByPending( + @PathVariable("curActInstId") String curActInstId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setCurActInstId(curActInstId); + Map actDefId = workflowService.checkAutoJump(searchQuery); + return AjaxResult.success("",actDefId); + } + + @CrossOrigin + @ApiOperation(value = "新建页面,判断下一环节是否自动提交", notes = "新建页面,判断下一环节是否自动提交") + @GetMapping(value = "autoJump/new/{procDefId}/{curActDefId}") + @ResponseBody + public AjaxResult checkAutoJumpByNew( + @PathVariable("procDefId") String procDefId, @PathVariable("curActDefId") String curActDefId) throws Exception{ + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setProcDefId(procDefId); + searchQuery.setCurActDefId(curActDefId); + Map actDefId = workflowService.checkAutoJump(searchQuery); + return AjaxResult.success("",actDefId); + + } + + @CrossOrigin + @ApiOperation(value = "提交流程", notes = "提交流程") + @PostMapping(value = "submit") + @ResponseBody + public AjaxResult submitNewFLowInstance(@RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.submit.name()); + return AjaxResult.success(processInstanceModel); + } + + @CrossOrigin + @ApiOperation(value = "暂存流程", notes = "暂存流程") + @PostMapping(value = "save") + @ResponseBody + public AjaxResult saveFLowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.save.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程作废 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "作废流程", notes = "作废流程") + @PostMapping(value = "cancel") + @ResponseBody + @CrossOrigin + public AjaxResult cancelFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.cancel.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程实例撤回到拟稿人环节 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "流程实例撤回到拟稿人环节", notes = "流程实例撤回到拟稿人环节") + @PostMapping(value = "backtostart") + @ResponseBody + @CrossOrigin + public AjaxResult callBackStartFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.backtostart.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程实例撤回到上一环节 + * + * @param bpmClientInputModelBo + * @return + */ + @ApiOperation(value = "流程实例撤回到上一环节", notes = "流程实例撤回到上一环节") + @PostMapping(value = "backtoprev") + @ResponseBody + @CrossOrigin + public AjaxResult backToPrevFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.backtoprev.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 提交流程驳回参数 + * + * @param bpmClientInputModelBo + * @return + */ + @CrossOrigin + @ApiOperation(value = "流程驳回", notes = "流程驳回") + @PostMapping(value = "reject") + @ResponseBody + public AjaxResult rejectFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.reject.name()); + return AjaxResult.success(processInstanceModel); + } + + /** + * 流程撤回 + * + * @param bpmClientInputModelBo + * @return + */ + @CrossOrigin + @ApiOperation(value = "流程撤回", notes = "流程撤回") + @PostMapping(value = "back") + @ResponseBody + public AjaxResult backFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.back.name()); + return AjaxResult.success(processInstanceModel); + } + + @ApiOperation(value = "流程转派", notes = "流程转派") + @PostMapping(value = "transfer") + @ResponseBody + @CrossOrigin + public AjaxResult transferFlowInstance( + @RequestBody BpmClientInputModelBo bpmClientInputModelBo) throws Exception{ + ProcessInstanceModel processInstanceModel = workflowService.processProcInst(bpmClientInputModelBo, + WorkflowService.ENUM_ACTION.transfer.name()); + return AjaxResult.success(processInstanceModel); + } + + @ApiOperation(value = "流程日志", notes = "流程日志") + @PostMapping(value = "getLog") + @ResponseBody + @CrossOrigin + public AjaxResult getProcInstLog( + @RequestBody BpmClientInputModel bpmClientInputModel) { + HashMap procInstLog = workflowService.getProcInstLog(bpmClientInputModel); + return AjaxResult.success(procInstLog); + } + + @ApiOperation(value = "办件阅件列表查询", notes = "办件阅件列表查询") + @PostMapping(value = "/list") + @ResponseBody + @CrossOrigin + public AjaxResult getRecordList(@RequestBody SearchQuery searchQuery) { + PageResultModel pageResult = workflowService.findRecordList(searchQuery); + return AjaxResult.success(pageResult); + } + + @ApiOperation(value = "待办/已办列表查询", notes = "待办/已办列表查询") + @PostMapping(value = "/toDoList") + @ResponseBody + @CrossOrigin + public AjaxResult getToDoList(@RequestBody SearchQuery searchQuery) throws Exception{ + //接收人 + WorkFlowPageVo pageResult = workflowService.findToDoList(searchQuery); + return AjaxResult.success(pageResult); + } + + @ApiOperation(value = "获取流程实例图形监控链接地址", notes = "获取流程实例图形监控链接地址") + @GetMapping(value = "histasklogurl/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getHistasklogurl( @PathVariable String procInstId) throws Exception{ + String url = workflowService.getHistasklogurl(procInstId); + return AjaxResult.success("",url); + } + + @ApiOperation(value = "获取流程实例图形链接地址", notes = "获取流程实例图形监控链接地址") + @GetMapping(value = "getImageUrl/{procDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getProcessImageUrl( @PathVariable String procDefId) throws Exception{ + String url = workflowService.getImageUrl( procDefId); + return AjaxResult.success("",url); + } + + /** + * 获取流程状态 + * + * @param procInstId + * @param curActInstId + * @return + */ + @ApiOperation(value = "获取流程状态", notes = "获取流程状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "procInstId", value = "流程实例id", dataType = "string", paramType = "path"), + @ApiImplicitParam(name = "curActInstId", value = "当前环节实例id", dataType = "string", paramType = "path") }) + @GetMapping(value = "/getFlowStatus/{procInstId}/{curActInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowStatus( @PathVariable String procInstId, + @PathVariable String curActInstId) throws Exception{ + int flowStatus = workflowService.getFlowStatus(procInstId, curActInstId); + return AjaxResult.success(flowStatus); + } + + @ApiOperation(value = "获取流程实例信息,包含当前用户所对应实例状态", notes = "获取流程实例信息,包含当前用户所对应实例状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "procInstId", value = "流程实例id", dataType = "string", paramType = "path"), + @ApiImplicitParam(name = "curActInstId", value = "当前环节实例id", dataType = "string", paramType = "path") }) + @GetMapping(value = "instance/{procInstId}/{curActInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowProcessInstance(@PathVariable String procInstId, @PathVariable String curActInstId, HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + ProcessInstanceModel procInst = workflowService.getProcessInstance(procInstId, curActInstId, + userId); + return AjaxResult.success(procInst); + } + + @ApiOperation(value = "获取流程环节定义信息", notes = "获取流程环节定义信息") + @GetMapping(value = "activitydefinition/{procDefId}/{actDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowActDef( + @PathVariable String procDefId, @PathVariable String actDefId) throws Exception{ + ActivityDefinitionModel activityDefinitionModel = workflowService.getActDef( procDefId, actDefId); + return AjaxResult.success(activityDefinitionModel); + } + + @ApiOperation(value = "获取流程环节配置的表单", notes = "获取流程环节配置的表单") + @GetMapping(value = "getFlowActForm/{procDefId}/{actDefId}") + @ResponseBody + @CrossOrigin + public AjaxResult getFlowActForm( + @PathVariable String procDefId, @PathVariable String actDefId) throws Exception{ + Map formUrl = workflowService.getFlowActForm( procDefId, actDefId); + return AjaxResult.success(formUrl); + } + + @ApiOperation(value = "根据流程实例id获取流程实例信息", notes = "根据流程实例id获取流程实例信息") + @GetMapping(value = "/procInstInfo/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getProcInstInfo(@PathVariable String procInstId)throws Exception { + Map procInst = workflowService.getProcessInstById( procInstId); + return AjaxResult.success(procInst); + } + + @ApiOperation(value = "根据流程实例id获取流程实例信息和流程状态", notes = "根据流程实例id获取流程实例信息") + @GetMapping(value = "/procInstInfoAndStatus/{procInstId}") + @ResponseBody + @CrossOrigin + public Map procInstInfoAndStatus( @PathVariable String procInstId, + HttpServletRequest request) { + try { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setStatus(1); + searchQuery.setProcInstId(procInstId); + PageResultModel pageResultModel = workflowService.findRecordList(searchQuery); + if (pageResultModel == null || pageResultModel.getTotalCount() == 0) { + return null; + }else { + return pageResultModel.getResult().get(0); + } + } catch (Exception ex) { + log.error("获取流程信息 该用户的流程是待办还是已办", ex); + return null; + } + } + + @ApiOperation(value = "获取当前用户流程实例数量", notes = "获取当前用户流程实例数量。status状态值{1:待办,2:已办,3:办结}") + @GetMapping(value = "/count/{status}") + @ResponseBody + public Map getRecordCount( @PathVariable int status, + HttpServletRequest request) { + try { + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setStatus(status); + return workflowService.getRecordCount(searchQuery); + } catch (Exception ex) { + log.error("获取当前用户流程实例数量", ex); + Map result = new HashMap<>(); + result.put("count", 0); + return result; + } + } + + @ApiOperation(value = "根据父流程实例id获取该流程的子流程,从而处理子流程", notes = "根据父流程实例id获取该流程的子流程,从而处理子流程") + @GetMapping(value = "/subprocess/{status}/{procInstId}") + public List> getSubprocess( @PathVariable String status, + @PathVariable String procInstId) { + try { + return workflowService.getSubprocess( status, procInstId); + } catch (Exception ex) { + log.error("根据父流程实例id获取该流程的子流程,从而处理子流程", ex); + return Lists.newArrayList(); + } + } + + @CrossOrigin + @ApiOperation(value = "获取该用户是否处理过该流程", notes = "获取该用户是否处理该流程") + @GetMapping(value = "/flowinfo/user/deal/{procInstId}") + @ResponseBody + public AjaxResult getUserIsDealFlow( @PathVariable String procInstId, + HttpServletRequest request) throws Exception{ + String userId = SecurityUtils.getLoginUser().getUsername(); + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(userId); + searchQuery.setProcInstId(procInstId); + searchQuery.setStatus(1); + Map result = workflowService.getRecordCount(searchQuery); + return AjaxResult.success(Integer.valueOf(result.get("count").toString())); + } + + @CrossOrigin + @ApiOperation(value = "获取扩展属性", notes = "获取扩展属性") + @GetMapping("/getExtAttributeModel") + public AjaxResult getExtAttributeModel(@RequestParam("procDefId") String procDefId, @RequestParam("actDefId") String actDefId){ + return AjaxResult.success(workflowService.getExtAttributeModel(procDefId, actDefId)); + } + + @ApiOperation(value = "待办列表查询", notes = "待办列表查询") + @GetMapping(value = "/getRecord/{procInstId}") + @ResponseBody + @CrossOrigin + public AjaxResult getRecordbyPorcInstId(@PathVariable String procInstId) throws Exception{ + return AjaxResult.success(workflowService.getRecordbyPorcInstId(procInstId)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java new file mode 100644 index 0000000..5511b14 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowLogController.java @@ -0,0 +1,110 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.service.IWorkflowLogService; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 流程审批记录Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/web/log") +public class WorkflowLogController extends BaseController +{ + @Autowired + private IWorkflowLogService workflowLogService; + + /** + * 查询流程审批记录列表 + */ + @PreAuthorize("@ss.hasPermi('web:log:list')") + @GetMapping("/page") + public TableDataInfo page(WorkflowLog workflowLog) + { + startPage(); + List list = workflowLogService.selectWorkflowLogList(workflowLog); + return getDataTable(list); + } + + @GetMapping("/list") + public AjaxResult list(WorkflowLog workflowLog) + { + return AjaxResult.success(workflowLogService.selectWorkflowLogList(workflowLog)); + } + + /** + * 导出流程审批记录列表 + */ + @PreAuthorize("@ss.hasPermi('web:log:export')") + @Log(title = "流程审批记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WorkflowLog workflowLog) + { + List list = workflowLogService.selectWorkflowLogList(workflowLog); + ExcelUtil util = new ExcelUtil(WorkflowLog.class); + util.exportExcel(response, list, "流程审批记录数据"); + } + + /** + * 获取流程审批记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('web:log:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(workflowLogService.selectWorkflowLogById(id)); + } + + /** + * 新增流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:add')") + @Log(title = "流程审批记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WorkflowLog workflowLog) + { + return toAjax(workflowLogService.insertWorkflowLog(workflowLog)); + } + + /** + * 修改流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:edit')") + @Log(title = "流程审批记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WorkflowLog workflowLog) + { + return toAjax(workflowLogService.updateWorkflowLog(workflowLog)); + } + + /** + * 删除流程审批记录 + */ + @PreAuthorize("@ss.hasPermi('web:log:remove')") + @Log(title = "流程审批记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(workflowLogService.deleteWorkflowLogByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java b/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java new file mode 100644 index 0000000..0152475 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/core/config/BpmcConfig.java @@ -0,0 +1,34 @@ +package com.rzdata.web.core.config; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 读取项目相关配置 + * + * @author Lion Li + */ + +@Data +@Accessors(chain = true) +@Component +@ConfigurationProperties(prefix = "bpmc") +public class BpmcConfig { + + /** + * 流程平台下应用租户id + */ + private String tenantId; + + /** + * 流程平台服务接口地址 + */ + private String serviceUrl; + + /** + * 待办地址前缀 + */ + private String uniteWorkUrl; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 4c05f75..5dfe162 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -4,6 +4,8 @@ import com.rzdata.common.annotation.Excel; import com.rzdata.common.annotation.Excels; import com.rzdata.common.core.domain.BaseEntity; import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -13,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; * @author ja * @date 2024-07-15 */ +@Data public class Tool extends BaseEntity { private static final long serialVersionUID = 1L; @@ -79,165 +82,11 @@ public class Tool extends BaseEntity }) private SysDept dept; - public void setToolId(String toolId) - { - this.toolId = toolId; - } + private BpmClientInputModelBo bpmClientInputModel; - public String getToolId() - { - return toolId; - } + private String recordStatus; - public void setToolCode(String toolCode) - { - this.toolCode = toolCode; - } + private Boolean editStatus; - public String getToolCode() - { - return toolCode; - } - public void setToolName(String toolName) - { - this.toolName = toolName; - } - - public String getToolName() - { - return toolName; - } - public void setToolType(String toolType) - { - this.toolType = toolType; - } - - public String getToolType() - { - return toolType; - } - public void setToolSource(String toolSource) - { - this.toolSource = toolSource; - } - - public String getToolSource() - { - return toolSource; - } - public void setToolUse(String toolUse) - { - this.toolUse = toolUse; - } - - public String getToolUse() - { - return toolUse; - } - public void setTestSituation(String testSituation) - { - this.testSituation = testSituation; - } - - public String getTestSituation() - { - return testSituation; - } - public void setFunctionDesc(String functionDesc) - { - this.functionDesc = functionDesc; - } - - public String getFunctionDesc() - { - return functionDesc; - } - public void setApplyCondition(String applyCondition) - { - this.applyCondition = applyCondition; - } - - public String getApplyCondition() - { - return applyCondition; - } - public void setOperateExplain(String operateExplain) - { - this.operateExplain = operateExplain; - } - - public String getOperateExplain() - { - return operateExplain; - } - public void setToolPrincipals(String toolPrincipals) - { - this.toolPrincipals = toolPrincipals; - } - - public String getToolPrincipals() - { - return toolPrincipals; - } - - public void setToolPrincipalsName(String toolPrincipalsName) - { - this.toolPrincipalsName = toolPrincipalsName; - } - - public String getToolPrincipalsName() - { - return toolPrincipalsName; - } - public void setToolRespDept(String toolRespDept) - { - this.toolRespDept = toolRespDept; - } - - public String getToolRespDept() - { - return toolRespDept; - } - public void setStatus(String status) - { - this.status = status; - } - - public String getStatus() - { - return status; - } - - public SysDept getDept() - { - return dept; - } - - public void setDept(SysDept dept) - { - this.dept = dept; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("toolId", getToolId()) - .append("toolName", getToolName()) - .append("toolType", getToolType()) - .append("toolSource", getToolSource()) - .append("toolUse", getToolUse()) - .append("testSituation", getTestSituation()) - .append("functionDesc", getFunctionDesc()) - .append("applyCondition", getApplyCondition()) - .append("operateExplain", getOperateExplain()) - .append("toolPrincipals", getToolPrincipals()) - .append("toolRespDept", getToolRespDept()) - .append("status", getStatus()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } + private String procInstId; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java new file mode 100644 index 0000000..4d9d1b3 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java @@ -0,0 +1,45 @@ +package com.rzdata.web.domain; + +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.List; + +/** + * 使用申请对象 t_use_apply + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class UseApply extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 申请人 */ + @Excel(name = "申请人") + private String userName; + + /** 申请部门 */ + @Excel(name = "申请部门") + private String deptId; + + /** 申请理由 */ + @Excel(name = "申请理由") + private String reason; + + private BpmClientInputModelBo bpmClientInputModel; + + private String recordStatus; + + private Boolean editStatus; + + private String procInstId; + + private List itemList; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java new file mode 100644 index 0000000..9dcdf8b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApplyItem.java @@ -0,0 +1,52 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 使用申请详情对象 t_use_apply_item + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class UseApplyItem extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 申请主键 */ + @Excel(name = "申请主键") + private String applyId; + + /** 工具id */ + @Excel(name = "工具id") + private String toolId; + + /** 工具编号 */ + @Excel(name = "工具编号") + private String toolCode; + + /** 工具名称 */ + @Excel(name = "工具名称") + private String toolName; + + /** 工具类别 */ + @Excel(name = "工具类别") + private String toolType; + + /** 负责人 */ + @Excel(name = "负责人") + private String toolPrincipals; + + /** 负责人名称 */ + @Excel(name = "负责人名称") + private String toolPrincipalsName; + + /** 归属单位 */ + @Excel(name = "归属单位") + private String toolRespDept; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java new file mode 100644 index 0000000..39ac301 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkFlowInfo.java @@ -0,0 +1,129 @@ +package com.rzdata.web.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @auther xcy + * @create 2021-12-30 15:41 + */ +@Data +public class WorkFlowInfo { + + @ApiModelProperty("主键") + private String id; + + @ApiModelProperty("当前活动定义名称") + private String curActDefName; + + @ApiModelProperty("父流程Id") + private String parentProcInstId; + + @ApiModelProperty("接收人姓名") + private String recUserName; + + @ApiModelProperty("前一活动名称") + private String prevActDefName; + + @ApiModelProperty("流程定义key") + private String procDefKey; + + @ApiModelProperty("接收人Id") + private String recUserId; + + @ApiModelProperty("发送人组织名称") + private String sendOrgName; + + @ApiModelProperty("流程定义Id") + private String procDefId; + + @ApiModelProperty("发送时间") + private String sendTime; + + @ApiModelProperty("处理时间") + private String dealTime; + + @ApiModelProperty("流程定义名称") + private String procDefName; + + private String dataSource; + + @ApiModelProperty("待办:1 已办:2 办结:3 待阅:4 已阅:5 作废:6 删除:7") + private String status; + + @ApiModelProperty("桌面端访问协议") + private String cportalProtocol; + + @ApiModelProperty("发送人组织Id") + private String sendOrgId; + + private String serviceCode; + + @ApiModelProperty("前一活动定义Id") + private String prevActDefId; + + @ApiModelProperty("手机端访问协议") + private String mportalProtocol; + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("手机端URL") + private String mportalUrl; + + @ApiModelProperty("顶级流程Id") + private String topProcInstId; + + @ApiModelProperty("内容") + private String content; + + @ApiModelProperty("发送人Id") + private String sendUserId; + + @ApiModelProperty("流程起草人Id") + private String startUserId; + + @ApiModelProperty("流程起草人姓名") + private String startUserName; + + @ApiModelProperty("当前活动处理时限") + private String curActLimitTime; + + @ApiModelProperty("发送人姓名") + private String sendUserName; + + @ApiModelProperty("当前活动实例Id") + private String curActInstId; + + @ApiModelProperty("起草时间") + private String startTime; + + @ApiModelProperty("前一活动实例Id") + private String prevActInstId; + + @ApiModelProperty("流程实例Id") + private String procInstId; + + @ApiModelProperty("桌面端URL") + private String url; + + private String wportalProtocol; + + @ApiModelProperty("接收人组织名称") + private String recOrgName; + + @ApiModelProperty("接收人组织Id") + private String recOrgId; + + @ApiModelProperty("当前活动定义Id") + private String curActDefId; + + @ApiModelProperty("业务数据") + private Object businessData; + + //是否删除,1:正常 0:删除 + private Integer flag = 1; + + private String docName; +} + diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java new file mode 100644 index 0000000..b3704f3 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/WorkflowLog.java @@ -0,0 +1,88 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 流程审批记录对象 t_workflow_log + * + * @author ja + * @date 2024-08-21 + */ +@Data +public class WorkflowLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 流程实例ID */ + @Excel(name = "流程实例ID") + private String procInstId; + + /** 流程实例key */ + @Excel(name = "流程实例key") + private String procDefKey; + + /** 业务ID */ + @Excel(name = "业务ID") + private String businessId; + + /** 当前环节定义Id */ + @Excel(name = "当前环节定义Id") + private String actDefId; + + /** 当前环节定义名称 */ + @Excel(name = "当前环节定义名称") + private String actDefName; + + /** 下一环节定义Id */ + @Excel(name = "下一环节定义Id") + private String nextDefId; + + /** 下一环节定义名称 */ + @Excel(name = "下一环节定义名称") + private String nextDefName; + + /** 环节实例ID */ + @Excel(name = "环节实例ID") + private String actInstId; + + /** 意见 */ + @Excel(name = "意见") + private String opinion; + + /** 发送人 */ + @Excel(name = "发送人") + private String sender; + + /** 发送人部门 */ + @Excel(name = "发送人部门") + private String senderDeptId; + + /** 接收人 */ + @Excel(name = "接收人") + private String receiver; + + /** 环节处理状态 */ + @Excel(name = "环节处理状态") + private String actStatus; + + /** 是否通过 */ + @Excel(name = "是否通过") + private Boolean pass; + + /** 租户id */ + @Excel(name = "租户id") + private String tenantId; + + /** 是否审核 */ + @Excel(name = "是否审核") + private Boolean review; + + /** 批次 */ + @Excel(name = "批次") + private String batch; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java new file mode 100644 index 0000000..8cc4281 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/bo/BpmClientInputModelBo.java @@ -0,0 +1,33 @@ +package com.rzdata.web.domain.bo; + +import com.blueland.bpmclient.model.BpmClientInputModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Author WangYang + * @Date 2022/2/11 15:12 + * @Version 1.0 + * @Description + */ +@Data +public class BpmClientInputModelBo implements Serializable { + + private BpmClientInputModel model; + + /** + * 申请结果 + */ + private Boolean applyStatus; + + private String type; + + /** + * 是否有审核 + */ + private Boolean review; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java new file mode 100644 index 0000000..b35afa7 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/vo/WorkFlowPageVo.java @@ -0,0 +1,28 @@ +package com.rzdata.web.domain.vo; + +import com.rzdata.web.domain.WorkFlowInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @auther xcy + * @create 2021-12-31 10:49 + */ +@Data +public class WorkFlowPageVo { + + @ApiModelProperty("分页大小") + private Integer pageSize; + + @ApiModelProperty("总数") + private Integer totalCount; + + @ApiModelProperty("页码") + private Integer pageNumber; + + @ApiModelProperty("流程详情信息") + private List result; + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java index ad95a89..f32adc9 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java @@ -20,6 +20,8 @@ public interface ToolMapper */ public Tool selectToolByToolId(String toolId); + Tool getInfoByBpmcId(String bpmcId); + /** * 查询工具信息列表 * diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java new file mode 100644 index 0000000..bf8e8f6 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyItemMapper.java @@ -0,0 +1,63 @@ +package com.rzdata.web.mapper; + +import java.util.List; +import com.rzdata.web.domain.UseApplyItem; + +/** + * 使用申请详情Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface UseApplyItemMapper +{ + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + public UseApplyItem selectUseApplyItemById(String id); + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情集合 + */ + public List selectUseApplyItemList(UseApplyItem useApplyItem); + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int insertUseApplyItem(UseApplyItem useApplyItem); + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int updateUseApplyItem(UseApplyItem useApplyItem); + + /** + * 删除使用申请详情 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + public int deleteUseApplyItemById(String id); + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteUseApplyItemByIds(String[] ids); + + int deleteByApplyId(String applyId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java new file mode 100644 index 0000000..7122afe --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java @@ -0,0 +1,64 @@ +package com.rzdata.web.mapper; + +import java.util.List; +import com.rzdata.web.domain.UseApply; +import com.rzdata.web.domain.Tool; + +/** + * 使用申请Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface UseApplyMapper +{ + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + public UseApply selectUseApplyById(String id); + + UseApply getInfoByBpmcId(String bpmcId); + + /** + * 查询使用申请列表 + * + * @param useApply 使用申请 + * @return 使用申请集合 + */ + public List selectUseApplyList(UseApply useApply); + + /** + * 新增使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + public int insertUseApply(UseApply useApply); + + /** + * 修改使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + public int updateUseApply(UseApply useApply); + + /** + * 删除使用申请 + * + * @param id 使用申请主键 + * @return 结果 + */ + public int deleteUseApplyById(String id); + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteUseApplyByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java new file mode 100644 index 0000000..f960455 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/WorkflowLogMapper.java @@ -0,0 +1,61 @@ +package com.rzdata.web.mapper; + +import java.util.List; +import com.rzdata.web.domain.WorkflowLog; + +/** + * 流程审批记录Mapper接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface WorkflowLogMapper +{ + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + public WorkflowLog selectWorkflowLogById(String id); + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录集合 + */ + public List selectWorkflowLogList(WorkflowLog workflowLog); + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int insertWorkflowLog(WorkflowLog workflowLog); + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int updateWorkflowLog(WorkflowLog workflowLog); + + /** + * 删除流程审批记录 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + public int deleteWorkflowLogById(String id); + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWorkflowLogByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index d24b39f..744626a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -20,6 +20,8 @@ public interface IToolService */ public Tool selectToolByToolId(String toolId); + Tool getInfoByBpmcId(String bpmcId); + /** * 查询工具信息列表 * diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java new file mode 100644 index 0000000..5b431ca --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyItemService.java @@ -0,0 +1,63 @@ +package com.rzdata.web.service; + +import java.util.List; +import com.rzdata.web.domain.UseApplyItem; + +/** + * 使用申请详情Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IUseApplyItemService +{ + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + public UseApplyItem selectUseApplyItemById(String id); + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情集合 + */ + public List selectUseApplyItemList(UseApplyItem useApplyItem); + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int insertUseApplyItem(UseApplyItem useApplyItem); + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + public int updateUseApplyItem(UseApplyItem useApplyItem); + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的使用申请详情主键集合 + * @return 结果 + */ + public int deleteUseApplyItemByIds(String[] ids); + + /** + * 删除使用申请详情信息 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + public int deleteUseApplyItemById(String id); + + void updateItemList(List list, String applyId); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java new file mode 100644 index 0000000..ab5290e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java @@ -0,0 +1,64 @@ +package com.rzdata.web.service; + +import java.util.List; +import com.rzdata.web.domain.UseApply; +import com.rzdata.web.domain.Tool; + +/** + * 使用申请Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IUseApplyService +{ + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + public UseApply selectUseApplyById(String id); + + UseApply getInfoByBpmcId(String bpmcId); + + /** + * 查询使用申请列表 + * + * @param useApply 使用申请 + * @return 使用申请集合 + */ + public List selectUseApplyList(UseApply useApply); + + /** + * 新增使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + public int insertUseApply(UseApply useApply); + + /** + * 修改使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + public int updateUseApply(UseApply useApply); + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的使用申请主键集合 + * @return 结果 + */ + public int deleteUseApplyByIds(String[] ids); + + /** + * 删除使用申请信息 + * + * @param id 使用申请主键 + * @return 结果 + */ + public int deleteUseApplyById(String id); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java new file mode 100644 index 0000000..660d19d --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IWorkflowLogService.java @@ -0,0 +1,66 @@ +package com.rzdata.web.service; + +import java.util.List; + +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; + +/** + * 流程审批记录Service接口 + * + * @author ja + * @date 2024-08-21 + */ +public interface IWorkflowLogService +{ + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + public WorkflowLog selectWorkflowLogById(String id); + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录集合 + */ + public List selectWorkflowLogList(WorkflowLog workflowLog); + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int insertWorkflowLog(WorkflowLog workflowLog); + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + public int updateWorkflowLog(WorkflowLog workflowLog); + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的流程审批记录主键集合 + * @return 结果 + */ + public int deleteWorkflowLogByIds(String[] ids); + + /** + * 删除流程审批记录信息 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + public int deleteWorkflowLogById(String id); + + void saveProcLog(BpmClientInputModelBo bpmClientInputModelBo, ProcessInstanceModel processInst, String action); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java new file mode 100644 index 0000000..9b01ed6 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java @@ -0,0 +1,779 @@ +package com.rzdata.web.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.blueland.bpmclient.BpmClient; +import com.blueland.bpmclient.model.*; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.system.service.ISysConfigService; +import com.rzdata.system.service.ISysDeptService; +import com.rzdata.web.core.config.BpmcConfig; +import com.rzdata.web.domain.WorkFlowInfo; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.domain.vo.WorkFlowPageVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.rmi.ServerException; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service("workflowService") +public class WorkflowService { + private static int FLOW_STATUS_ERROR = 0;// 异常 + private static int FLOW_STATUS_UNREAD = 1;// 待办 + private static int FLOW_STATUS_READ = 2;// 已办 + private static int FLOW_STATUS_FINISH = 3;// 办结 + private static String END_ACT_NAME = "结束"; + /** + * 是否从通讯录选择下一步人员 + */ + private static String SHOW_TXL_SELECT = "show_txl_select"; + @Autowired + private BpmcConfig bpmcConfig; + + @Autowired + ISysConfigService configService; + + @Autowired + ISysDeptService sysDeptService; + + @Autowired + IWorkflowLogService iWorkflowLogService; + private final static String CUR_ACT_DEF_KEY = "curActDef"; + private final static String CUR_ACT_INST_KEY = "curActInst"; + private final static String PROC_INST_KEY = "procInst"; + private final static String PROC_DEF_KEY = "procDef"; + private final static String ACT_OPPOWERS = "actOppowers";// 下一环节显示按钮 + + public enum ENUM_ACTION { + /** + * // 暂存 + */ + save, + /** + * // 提交 + */ + submit, + /** + * // 作废 + */ + cancel, + /** + * // 转派 + */ + transfer, + /** + * // 退回拟稿人 + */ + backtostart, + /** + * // 退回上一步 + */ + backtoprev, + /** + * // 撤回 + */ + back, + /** + * // 驳回 + */ + reject, + } + + ; + + + BpmClient getBpmClient() { + WorkflowConfig workflowConfig = new WorkflowConfig(); + workflowConfig.setTenantId(bpmcConfig.getTenantId()); + workflowConfig.setBaseURL(bpmcConfig.getServiceUrl()); + BpmClient bpmClient = new BpmClient(workflowConfig); + return bpmClient; + } + + + /** + * 暂存流程 + * + * @param bpmClientInputModelBo + * @param businessId 业务id + * @return + * @throws Exception + */ + public ProcessInstanceModel saveExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.save.name()); + } + + /** + * 下一步流程 + * + * @param bpmClientInputModelBo + * @param businessId 业务id + * @return + * @throws Exception + */ + public ProcessInstanceModel nextExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.submit.name()); + } + + public ProcessInstanceModel cancelExecute(BpmClientInputModelBo bpmClientInputModelBo, String businessId) throws Exception { + bpmClientInputModelBo.getModel().setWf_businessKey(businessId); + return processProcInst(bpmClientInputModelBo, ENUM_ACTION.cancel.name()); + } + + /** + * 处理流程实例 + * + * @param action 处理操作类型 + * @return + */ + public ProcessInstanceModel processProcInst(BpmClientInputModelBo bpmClientInputModelBo, String action) + throws Exception { + ProcessInstanceModel processInst = new ProcessInstanceModel(); + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + // 待办URL + String url = this.bpmcConfig.getUniteWorkUrl()+ "?businessKey=" + bpmClientInputModel.getWf_businessKey()+ "&type=" + bpmClientInputModelBo.getType(); + bpmClientInputModel.setWf_uniteworkUrl(url); + BpmClient bpmClient = getBpmClient(); + switch (ENUM_ACTION.valueOf(action)) { + case cancel:// 作废 + processInst = bpmClient.cancelProcInst(bpmClientInputModel); + break; + case backtostart:// 返回拟稿人 + processInst = bpmClient.callBackStart(bpmClientInputModel); + bpmClientInputModel.setWf_nextActDefName(processInst.getNextActInsts().get(0).getActDefName()); + break; + case backtoprev:// 返回上一步 + processInst = bpmClient.backToPrev(bpmClientInputModel); + break; + case back:// 撤回 + processInst = bpmClient.callBack(bpmClientInputModel); + break; + case transfer:// 转派 + processInst = bpmClient.transfer(bpmClientInputModel); + break; + case reject:// 驳回 + processInst = bpmClient.rejectFlow(bpmClientInputModel); + break; + case save: + processInst = bpmClient.saveFlowInstance(bpmClientInputModel); + break; + case submit: + processInst = bpmClient.submitFlowInstance(bpmClientInputModel); + break; + default: + break; + } + if (processInst!=null&& StringUtils.isNotEmpty(processInst.getProcInstId())) { + iWorkflowLogService.saveProcLog(bpmClientInputModelBo, processInst,action); + } + return processInst; + } + + /** + * 获取流程实例完整信息,包含流程实例、当前环节实例、流程定义等信息 + * + * @return + */ + public HashMap getFLowInfo(SearchQuery searchQuery) throws Exception { + // TODO Auto-generated method stub + HashMap returnDataMap = new HashMap<>(); + BpmClient bpmClient = getBpmClient(); + JSONObject jo = new JSONObject(); + try { + jo = getFlowInfo(searchQuery); + if (jo == null) { + return null; + } + if (!jo.containsKey(CUR_ACT_DEF_KEY) || !jo.containsKey(CUR_ACT_INST_KEY) || !jo.containsKey(PROC_INST_KEY) + || !jo.containsKey(PROC_DEF_KEY)) { + throw new Exception("返回的数据不完整"); + } + returnDataMap.put(CUR_ACT_DEF_KEY, jo.getJSONObject(CUR_ACT_DEF_KEY)); + returnDataMap.put(CUR_ACT_INST_KEY, jo.getJSONObject(CUR_ACT_INST_KEY)); + returnDataMap.put(PROC_INST_KEY, jo.getJSONObject(PROC_INST_KEY)); + returnDataMap.put(PROC_DEF_KEY, jo.getJSONObject(PROC_DEF_KEY)); + returnDataMap.put(ACT_OPPOWERS, jo.getJSONArray(ACT_OPPOWERS)); + /** + * JSONArray ja_log = jo.getJSONArray("procLogs"); ArrayList> list_log = Lists.newArrayList(); for (int i = 0; i < ja_log.size(); + * i++) { HashMap commentMap = Maps.newHashMap(); + * commentMap.put("actDefName", + * ja_log.getJSONObject(i).getString("prevActDefName")); + * commentMap.put("commentTime", ja_log.getJSONObject(i).get("startTime")); + * commentMap.put("actDefId", ja_log.getJSONObject(i).get("prevActDefId")); + * String orgId = ja_log.getJSONObject(i).getString("sendOrgId"); PubOrgEntity + * deptEntry = pubOrgDao.get(orgId); String userName = + * String.format("(%s-%s)%s", deptEntry.getCompanyName(), + * deptEntry.getOrgName(), ja_log.getJSONObject(i).getString("sendUserName")); + * commentMap.put("commentUserName", userName); commentMap.put("userName", + * ja_log.getJSONObject(i).getString("sendUserName")); + * commentMap.put("commentFullMessage", + * ja_log.getJSONObject(i).get("commentFullMessage")); list_log.add(commentMap); + * } returnDataMap.put("procLogs", list_log); + */ + // returnDataMap.put("transferLog", + // projectCommentEntryMapper.findCommentListByParams(params));//获取流程实例转派审批日志 + } catch (Exception ex) { + log.error("getFLowInfo==============" + JSON.toJSONString(searchQuery), ex); + } + return returnDataMap; + } + + JSONObject getFlowInfo(SearchQuery searchQuery) { + String returnData = ""; + BpmClient bpmClient = getBpmClient(); + try { + switch (searchQuery.getStatus()) { + case 1: + returnData = bpmClient.getToDoFlowInfo(searchQuery); + break; + case 2: + returnData = bpmClient.getYibanFlowInfo(searchQuery); + break; + case 3: + returnData = bpmClient.getBanJieFlowInfo(searchQuery); + break; + default: + break; + } + return JSON.parseObject(returnData); + } catch (Exception ex) { + log.error("=======流程平台返回信息:" + JSON.toJSONString(searchQuery), ex); + } + return null; + } + + + /** + * 获取流程实例日志 + * + * @param bpmClientInputModel + * @return + */ + public HashMap getProcInstLog(BpmClientInputModel bpmClientInputModel) { + HashMap returnDataMap = new HashMap<>(); + List> procLog; + BpmClient bpmClient = getBpmClient(); + try { + if (StrUtil.isNotBlank(bpmClientInputModel.getWf_procInstId())) { + String returnData = bpmClient.getProcInstLog(bpmClientInputModel.getWf_procInstId()); + Map procInstLog = JSONObject.parseObject(returnData, Map.class); + if (null != procInstLog && procInstLog.containsKey("procLogs")) { + // 获取日志实例 + procLog = (List>) procInstLog.get("procLogs"); + procLog = dealEchoMap(procLog); + JSONObject jo = JSON.parseObject(returnData); + returnDataMap.put("procInst", jo.getJSONObject("procInst")); + returnDataMap.put("procLogs", procLog); + } + } + } catch (Exception ex) { + log.error("getProcInstLog==============" + JSON.toJSONString(bpmClientInputModel), ex); + } + return returnDataMap; + } + + /** + * 去掉相关部门重复数据 + * + * @param procLog + * @return + */ + private List> dealEchoMap(List> procLog) { + List> newList = new ArrayList>(); + // 去重 + for (int i = 0; i < procLog.size(); i++) { + Map oldMap = procLog.get(i); + if (newList.size() > 0) { + boolean isContain = false; + for (int j = 0; j < newList.size(); j++) { + Map newMap = newList.get(j); + if (newMap.get("prevActInstId").equals(oldMap.get("prevActInstId"))) { + for (String k : oldMap.keySet()) { + newMap.put(k, oldMap.get(k)); + } + isContain = true; + break; + } + } + + if (!isContain) { + newList.add(oldMap); + } + + } else { + newList.add(oldMap); + } + } + return newList; + + } + + /** + * 查询待办列表 + * + * @param searchQuery + * @return + */ + public PageResultModel findRecordList(SearchQuery searchQuery) { + // TODO Auto-generated method stub + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getRecordList(searchQuery); + } catch (Exception ex) { + log.error("findRecordList===" + JSON.toJSONString(searchQuery), ex); + } + return null; + } + + /** + * 查询待办列表 + * + * @param searchQuery + * @return + */ + public WorkFlowPageVo findToDoList(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + WorkFlowPageVo pageVo = new WorkFlowPageVo(); + try { + // 所属流程平台租户 + searchQuery.setTenantId(bpmcConfig.getTenantId()); + searchQuery.setRecUserId(SecurityUtils.getUsername()); + + PageResultModel pageResultModel = bpmClient.getRecordList(searchQuery); + pageVo.setPageSize(pageResultModel.getPageSize()); + pageVo.setPageNumber(pageResultModel.getThisPageNumber()); + pageVo.setTotalCount(pageResultModel.getTotalCount()); + List workFlowInfos = JSONUtil.toList(JSONUtil.toJsonStr(pageResultModel.getResult()), WorkFlowInfo.class); + pageVo.setResult(workFlowInfos); + return pageVo; + } catch (Exception ex) { + log.error("findRecordList===" + JSON.toJSONString(searchQuery), ex); + } + return pageVo; + } + + /** + * 获取下一环节定义 + * + * @param searchQuery + * @return + */ + public List getNextActs(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + List actDefList = Lists.newArrayList(); + try { + List nextacts = bpmClient.getNextacts(searchQuery); + + for (ActivityDefinitionModel activityDefinitionModel : nextacts) { + activityDefinitionModel.setShowTxlSelect("N"); + // 流程平台如果有输出线名称 返回当前环节名称自动为输出线名称 由于其他业务系统已经使用 该处做特殊处理 (不读输出线名称) + /* + * if (StrUtil.isNotBlank(activityDefinitionModel.getDescription())) { + * // 描述名称 为流程平台返回的当前环节名称 + * activityDefinitionModel.setActDefName(activityDefinitionModel.getDescription( + * )); + * } + */ + if (END_ACT_NAME.equalsIgnoreCase(activityDefinitionModel.getActDefName())) { + actDefList.add(activityDefinitionModel); + continue; + } + List extAttrlist = bpmClient.getActDefExtAttrs(searchQuery.getProcDefId(), + activityDefinitionModel.getActDefId()); + for (ExtAttributeModel extMap : extAttrlist) { + // 根据流程环节自定义标签判断是否显示“通讯录选择人员”按钮 + if (SHOW_TXL_SELECT.equalsIgnoreCase(extMap.getObjKey().trim())) { + activityDefinitionModel.setShowTxlSelect(extMap.getObjValue()); + break; + } + } + actDefList.add(activityDefinitionModel); + } + + } catch (Exception e) { + log.error("获取下一步环节定义列表失败,参数:" + JSON.toJSONString(searchQuery), e); + } + + return actDefList; + } + + /** + * 获取下一环节用户信息 + * + * @param searchQuery + * @return + */ + public List getNextActUsers(SearchQuery searchQuery) { + BpmClient bpmClient = getBpmClient(); + List nextactUsers = Lists.newArrayList(); + try { + nextactUsers = bpmClient.getNextactUsers(searchQuery); + } catch (Exception e) { + log.error("获取下一步环节用户列表失败,参数:" + JSON.toJSONString(searchQuery), e); + } + return nextactUsers; + } + + + public List getExtAttributeModel(String procDefId, String actDefId) { + BpmClient bpmClient = getBpmClient(); + List list = Lists.newArrayList(); + try { + list = bpmClient.getActDefExtAttrs(procDefId, actDefId); + } catch (Exception e) { + log.error("获取扩展属性失败", e); + } + return list; + } + + /** + * 判断下一环节是否支持自动提交 + * + * @param searchQuery + * @return + */ + public String checkAutoCommit(SearchQuery searchQuery) throws Exception { + + BpmClient bpmClient = getBpmClient(); + + try { + String actDefId = ""; + String procDefId = ""; + // 待办提交 + if (StrUtil.isNotBlank(searchQuery.getCurActInstId())) { + ActivitiInstanceModel activitiInstanceModel = bpmClient + .getActivityInstance(searchQuery.getCurActInstId()); + actDefId = activitiInstanceModel.getActDefId(); + procDefId = activitiInstanceModel.getProcDefId(); + } else { // 新建提交 + ActivityDefinitionModel activityDefinitionModel = bpmClient.getActDef(searchQuery.getProcDefId(), + searchQuery.getCurActDefId()); + actDefId = activityDefinitionModel.getActDefId(); + procDefId = activityDefinitionModel.getProcDefId(); + } + List netxtActDefList = bpmClient.getNextacts(searchQuery); + if (netxtActDefList != null && netxtActDefList.size() == 1) { + ActivityDefinitionModel netxtActDef = netxtActDefList.get(0); + ActivityDefinitionModel actDef = bpmClient.getActDef(procDefId, actDefId); + if (("auto".equalsIgnoreCase(actDef.getJumpType()) || netxtActDef.isNotSelectReceiver() + || "endEvent".equals(netxtActDef.getActDefType()))) { + return netxtActDef.getActDefId(); + } + } + } catch (Exception ex) { + log.error("checkAutoCommit==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + + return ""; + } + + /** + * 获取第一个环节定义信息 + * + * @param procDefId + * @return + */ + public ActivityDefinitionModel getStartactDef(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getStartactDef(procDefId); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getStartactDef==" + procDefId, ex); + throw new Exception(ex); + } + } + + /** + * 获取环节定义信息 + * @param procDefId 流程定义Id + * @param actDefId 环节定义Id + * @return + * @throws Exception + */ + public ActivityDefinitionModel getActDef(String procDefId,String actDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getActDef(procDefId, actDefId); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getActDef==" + procDefId+"===="+actDefId, ex); + throw new Exception(ex); + } + } + + /** + * 获取环节定义信息 + * @param procDefId 流程定义Id + * @return + * @throws Exception + */ + public List getActDef(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getActDef(procDefId); + } catch (Exception ex) { + log.error("getActDef==" + procDefId, ex); + throw new Exception(ex); + } + } + + /** + * 根据流程定义Key获取流程定义信息 + * + * @param procDefKey + * @return + */ + public ProcessDefinitionModel getProcessDefinitionModel(String procDefKey) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getProcessDef(procDefKey); + } catch (Exception ex) { + // TODO Auto-generated catch block + log.error("getProcessDefinitionModel==" + procDefKey, ex); + throw new Exception(ex); + } + } + + public String getHistasklogurl(String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + Map param = bpmClient.getHistoryUrl(procInstId); + return param.get("url"); + } catch (Exception ex) { + log.error("getHistasklogurl==" + ex); + throw new Exception(ex); + } + } + + public String getImageUrl(String procDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + Map param = bpmClient.getImageUrl(procDefId); + return param.get("url"); + } catch (Exception ex) { + log.error("getImageUrl==" + ex); + throw new Exception(ex); + } + } + + /** + * 查询流程实例状态 + * + * @param procInstId + * @param curActInstId + * @return + */ + public int getFlowStatus(String procInstId, String curActInstId) { + BpmClient bpmClient = getBpmClient(); + try { + ActivitiInstanceModel actInstMap = bpmClient.getActivityInstance(curActInstId); + if (actInstMap != null && actInstMap.getFinishTime() != null && actInstMap.getFinishTime().length() > 0) { + ProcessInstanceModel procInst = bpmClient.getProcessInstById(procInstId); + if (procInst != null && procInst.getFinishTime() != null) { + return FLOW_STATUS_FINISH; + } + return FLOW_STATUS_READ; + } + return FLOW_STATUS_UNREAD; + } catch (Exception ex) { + log.error("getFlowStatus===procInstId=" + procInstId + ",curActInstId==" + curActInstId, ex); + } + return FLOW_STATUS_ERROR; + } + + /** + * 查询流程实例状态,并判断当前用户是否有权限打开待办 + * + * @param procInstId + * @param curActInstId + * @param userId + * @return + */ + public ProcessInstanceModel getProcessInstance(String procInstId, String curActInstId, + String userId) throws Exception { + BpmClient bpmClient = getBpmClient(); + ProcessInstanceModel procInst = null; + ActivitiInstanceModel actInst = bpmClient.getActivityInstance(curActInstId); + if (actInst == null || !StrUtil.equals(actInst.getReceiverUserId(), userId)) { + throw new Exception("没有找到环节实例"); + } + procInst = bpmClient.getProcessInstById(procInstId); + procInst.setCurrentActivitiInstance(actInst); + Map formUrlMap = getFlowActForm(procInst.getProcDefId(), actInst.getActDefId()); + if (formUrlMap.containsKey("formUrl")) { + procInst.setFormUrl(formUrlMap.get("formUrl")); + } + procInst.setProcInstState(FLOW_STATUS_ERROR + ""); + if (actInst.getFinishTime() == null || actInst.getFinishTime().length() == 0) { + procInst.setProcInstState(FLOW_STATUS_UNREAD + ""); + return procInst; + } + if (procInst.getFinishTime() != null) { + procInst.setProcInstState(FLOW_STATUS_FINISH + ""); + } else { + procInst.setProcInstState(FLOW_STATUS_READ + ""); + } + return procInst; + } + + public Map getFlowActForm(String procDefId, String actDefId) throws Exception { + BpmClient bpmClient = getBpmClient(); + Map result = new HashMap<>(); + try { + ActivityDefinitionModel act = bpmClient.getActDef(procDefId, actDefId); + result.put("formUrl", act.getPageUrl()); + result.put("appFormUrl", act.getMportalUrl()); + } catch (Exception ex) { + log.error("getFlowActForm==" + ex); + throw new Exception(ex); + } + return result; + } + + public Map getProcessInstById(String procInstId) { + BpmClient bpmClient = getBpmClient(); + ProcessInstanceModel procInst = null; + Map result = new HashMap<>(); + try { + procInst = bpmClient.getProcessInstById(procInstId); + result = BeanUtil.beanToMap(procInst); + Map curActInfo = this.getCurActInfo(procInstId); + result.put("curActInstId", curActInfo.get("curActInstId").toString()); + result.put("curActDefId", curActInfo.get("curActDefId").toString()); + result.put("curActDefName", curActInfo.get("curActDefName").toString()); + result.put("prevActDefId", curActInfo.get("prevActDefId").toString()); + + result.put("sendUserId", curActInfo.get("receiveUserId").toString()); + result.put("sendUserOrgId", curActInfo.get("receiveOrgId").toString()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; + } + + private Map getCurActInfo(String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + Map result = new HashMap(); + // 根据流程实例id获取流程实例日志 + String logStr = bpmClient.getProcInstLog(procInstId); + List> procLog = new ArrayList>(); + Map procInstLog = JSONObject.parseObject(logStr, Map.class); + if (null != procInstLog && procInstLog.containsKey("procLogs")) { + // 获取日志实例 + procLog = (List>) procInstLog.get("procLogs"); + for (Map map : procLog) { + if (null == map.get("endTime")) { + if ("pms_zhsqlc-03".equals(map.get("prevActDefId"))) { + result = map; + } else { + result = map; + break; + } + } + } + } + return result; + } + + public Map procInstInfoAndStatus(String procInstId) { + Map procInst = this.getProcessInstById(procInstId); + int status = 0; + try { + status = this.getFlowStatus(procInstId, procInst.get("curActInstId").toString()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + procInst.put("status", status + ""); + return procInst; + } + + public Map checkAutoJump(SearchQuery searchQuery) throws Exception { + BpmClient bpmClient = getBpmClient(); + ActivityDefinitionModel actDef = new ActivityDefinitionModel(); + try { + String actDefId = ""; + String procDefId = ""; + // 待办提交 + if (StrUtil.isNotBlank(searchQuery.getCurActInstId())) { + ActivitiInstanceModel activitiInstanceModel = bpmClient + .getActivityInstance(searchQuery.getCurActInstId()); + actDefId = activitiInstanceModel.getActDefId(); + procDefId = activitiInstanceModel.getProcDefId(); + actDef = bpmClient.getActDef(procDefId, actDefId); + } else { // 新建提交 + actDef = bpmClient.getActDef(searchQuery.getProcDefId(), searchQuery.getCurActDefId()); + } + Map result = new HashMap(); + if ("auto".equalsIgnoreCase(actDef.getJumpType())) { + result.put("flag", true); + } else { + result.put("flag", false); + } + return result; + } catch (Exception ex) { + log.error("checkAutoCommit==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + } + + public Map getRecordCount(SearchQuery searchQuery) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getRecordCount(searchQuery); + } catch (Exception ex) { + log.error("getRecordCount==" + JSON.toJSONString(searchQuery), ex); + throw new Exception(ex); + } + } + + /** + * 根据父流程实例id获取该流程的子流程,从而处理子流程。 + * + * @param procInstId 父流程实例id + * @return + * @throws Exception + */ + public List> getSubprocess(String status, String procInstId) throws Exception { + BpmClient bpmClient = getBpmClient(); + try { + return bpmClient.getSubprocess(status, procInstId); + } catch (Exception ex) { + log.error("getSubprocess==" + procInstId, ex); + throw new Exception(ex); + } + } + + public boolean isYiBanTaskByTopId(String procInstId, String sourceActId, String targerActId) throws Exception { + return getBpmClient().isYiBanTaskByTopId(procInstId,sourceActId,targerActId); + } + + public boolean isYiBanTask(String procInstId, String sourceActId, String targerActId) throws Exception { + return getBpmClient().isYiBanTask(procInstId,sourceActId,targerActId); + } + + + public JSONArray getRecordbyPorcInstId(String porcInstId) throws Exception { + WorkflowConfig workflowConfig = new WorkflowConfig(); + String url = String.format("%s/%s?procInstId=%s", bpmcConfig.getServiceUrl(), workflowConfig.getRecordQueryUrl(), porcInstId); + return JSONArray.parseArray(getBpmClient().get(url)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index cb4e7df..9c4f276 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -34,6 +34,11 @@ public class ToolServiceImpl implements IToolService return toolMapper.selectToolByToolId(toolId); } + @Override + public Tool getInfoByBpmcId(String bpmcId){ + return toolMapper.getInfoByBpmcId(bpmcId); + } + /** * 查询工具信息列表 * @@ -56,7 +61,6 @@ public class ToolServiceImpl implements IToolService public int insertTool(Tool tool) { tool.setCreateTime(DateUtils.getNowDate()); - tool.setToolId(IdUtil.simpleUUID()); return toolMapper.insertTool(tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java new file mode 100644 index 0000000..e7da81b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyItemServiceImpl.java @@ -0,0 +1,110 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import cn.hutool.core.util.IdUtil; +import com.rzdata.web.mapper.UseApplyItemMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.rzdata.web.mapper.UseApplyItemMapper; +import com.rzdata.web.domain.UseApplyItem; +import com.rzdata.web.service.IUseApplyItemService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 使用申请详情Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Service +public class UseApplyItemServiceImpl implements IUseApplyItemService +{ + @Autowired + private UseApplyItemMapper useApplyItemMapper; + + /** + * 查询使用申请详情 + * + * @param id 使用申请详情主键 + * @return 使用申请详情 + */ + @Override + public UseApplyItem selectUseApplyItemById(String id) + { + return useApplyItemMapper.selectUseApplyItemById(id); + } + + /** + * 查询使用申请详情列表 + * + * @param useApplyItem 使用申请详情 + * @return 使用申请详情 + */ + @Override + public List selectUseApplyItemList(UseApplyItem useApplyItem) + { + return useApplyItemMapper.selectUseApplyItemList(useApplyItem); + } + + /** + * 新增使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + @Override + public int insertUseApplyItem(UseApplyItem useApplyItem) + { + return useApplyItemMapper.insertUseApplyItem(useApplyItem); + } + + /** + * 修改使用申请详情 + * + * @param useApplyItem 使用申请详情 + * @return 结果 + */ + @Override + public int updateUseApplyItem(UseApplyItem useApplyItem) + { + return useApplyItemMapper.updateUseApplyItem(useApplyItem); + } + + /** + * 批量删除使用申请详情 + * + * @param ids 需要删除的使用申请详情主键 + * @return 结果 + */ + @Override + public int deleteUseApplyItemByIds(String[] ids) + { + return useApplyItemMapper.deleteUseApplyItemByIds(ids); + } + + /** + * 删除使用申请详情信息 + * + * @param id 使用申请详情主键 + * @return 结果 + */ + @Override + public int deleteUseApplyItemById(String id) + { + return useApplyItemMapper.deleteUseApplyItemById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateItemList(List list, String applyId){ + useApplyItemMapper.deleteByApplyId(applyId); + if (list!=null&&list.size()>0) { + for (UseApplyItem item: list) { + item.setApplyId(applyId); + item.setId(IdUtil.simpleUUID()); + useApplyItemMapper.insertUseApplyItem(item); + } + } + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java new file mode 100644 index 0000000..529406c --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java @@ -0,0 +1,101 @@ +package com.rzdata.web.service.impl; + +import java.util.List; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.web.domain.Tool; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.rzdata.web.mapper.UseApplyMapper; +import com.rzdata.web.domain.UseApply; +import com.rzdata.web.service.IUseApplyService; + +/** + * 使用申请Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Service +public class UseApplyServiceImpl implements IUseApplyService +{ + @Autowired + private UseApplyMapper useApplyMapper; + + /** + * 查询使用申请 + * + * @param id 使用申请主键 + * @return 使用申请 + */ + @Override + public UseApply selectUseApplyById(String id) + { + return useApplyMapper.selectUseApplyById(id); + } + + @Override + public UseApply getInfoByBpmcId(String bpmcId){ + return useApplyMapper.getInfoByBpmcId(bpmcId); + } + /** + * 查询使用申请列表 + * + * @param useApply 使用申请 + * @return 使用申请 + */ + @Override + public List selectUseApplyList(UseApply useApply) + { + return useApplyMapper.selectUseApplyList(useApply); + } + + /** + * 新增使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + @Override + public int insertUseApply(UseApply useApply) + { + useApply.setCreateTime(DateUtils.getNowDate()); + return useApplyMapper.insertUseApply(useApply); + } + + /** + * 修改使用申请 + * + * @param useApply 使用申请 + * @return 结果 + */ + @Override + public int updateUseApply(UseApply useApply) + { + useApply.setUpdateTime(DateUtils.getNowDate()); + return useApplyMapper.updateUseApply(useApply); + } + + /** + * 批量删除使用申请 + * + * @param ids 需要删除的使用申请主键 + * @return 结果 + */ + @Override + public int deleteUseApplyByIds(String[] ids) + { + return useApplyMapper.deleteUseApplyByIds(ids); + } + + /** + * 删除使用申请信息 + * + * @param id 使用申请主键 + * @return 结果 + */ + @Override + public int deleteUseApplyById(String id) + { + return useApplyMapper.deleteUseApplyById(id); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java new file mode 100644 index 0000000..22640b9 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/WorkflowLogServiceImpl.java @@ -0,0 +1,125 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import com.blueland.bpmclient.model.BpmClientInputModel; +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.rzdata.web.mapper.WorkflowLogMapper; +import com.rzdata.web.domain.WorkflowLog; +import com.rzdata.web.service.IWorkflowLogService; + +/** + * 流程审批记录Service业务层处理 + * + * @author ja + * @date 2024-08-21 + */ +@Service +public class WorkflowLogServiceImpl implements IWorkflowLogService +{ + @Autowired + private WorkflowLogMapper workflowLogMapper; + + /** + * 查询流程审批记录 + * + * @param id 流程审批记录主键 + * @return 流程审批记录 + */ + @Override + public WorkflowLog selectWorkflowLogById(String id) + { + return workflowLogMapper.selectWorkflowLogById(id); + } + + /** + * 查询流程审批记录列表 + * + * @param workflowLog 流程审批记录 + * @return 流程审批记录 + */ + @Override + public List selectWorkflowLogList(WorkflowLog workflowLog) + { + return workflowLogMapper.selectWorkflowLogList(workflowLog); + } + + /** + * 新增流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + @Override + public int insertWorkflowLog(WorkflowLog workflowLog) + { + workflowLog.setCreateTime(DateUtils.getNowDate()); + return workflowLogMapper.insertWorkflowLog(workflowLog); + } + + /** + * 修改流程审批记录 + * + * @param workflowLog 流程审批记录 + * @return 结果 + */ + @Override + public int updateWorkflowLog(WorkflowLog workflowLog) + { + workflowLog.setUpdateTime(DateUtils.getNowDate()); + return workflowLogMapper.updateWorkflowLog(workflowLog); + } + + /** + * 批量删除流程审批记录 + * + * @param ids 需要删除的流程审批记录主键 + * @return 结果 + */ + @Override + public int deleteWorkflowLogByIds(String[] ids) + { + return workflowLogMapper.deleteWorkflowLogByIds(ids); + } + + /** + * 删除流程审批记录信息 + * + * @param id 流程审批记录主键 + * @return 结果 + */ + @Override + public int deleteWorkflowLogById(String id) + { + return workflowLogMapper.deleteWorkflowLogById(id); + } + + @Override + public void saveProcLog(BpmClientInputModelBo bpmClientInputModelBo, ProcessInstanceModel processInst, String action){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + WorkflowLog workflowLog = new WorkflowLog(); + workflowLog.setId(IdUtil.simpleUUID()); + workflowLog.setPass(bpmClientInputModelBo.getApplyStatus()); + workflowLog.setProcInstId(processInst.getProcInstId()); + workflowLog.setBusinessId(processInst.getBusinessKey()); + workflowLog.setActDefId(bpmClientInputModel.getWf_curActDefId()); + workflowLog.setActDefName(bpmClientInputModel.getWf_curActDefName()); + workflowLog.setNextDefId(bpmClientInputModel.getWf_nextActDefId()); + workflowLog.setNextDefName(bpmClientInputModel.getWf_nextActDefName()); + workflowLog.setActInstId(bpmClientInputModel.getWf_curActInstId()); + workflowLog.setOpinion(bpmClientInputModel.getWf_curComment()); + workflowLog.setSender(bpmClientInputModel.getWf_sendUserId()); + workflowLog.setSenderDeptId(bpmClientInputModel.getWf_sendUserOrgId()); + workflowLog.setReceiver(JSONUtil.toJsonStr(bpmClientInputModel.getWf_receivers())); + workflowLog.setActStatus(action); + workflowLog.setProcDefKey(bpmClientInputModel.getWf_procDefKey()); + workflowLog.setReview(bpmClientInputModelBo.getReview()); + workflowLogMapper.insertWorkflowLog(workflowLog); + } +} diff --git a/tool-tech-admin/src/main/resources/application.yml b/tool-tech-admin/src/main/resources/application.yml index 5c36a18..2729246 100644 --- a/tool-tech-admin/src/main/resources/application.yml +++ b/tool-tech-admin/src/main/resources/application.yml @@ -127,3 +127,8 @@ xss: excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +bpmc: + tenantId: TLTC_SYS + serviceUrl: http://192.168.2.17:8081/ebpm-process-rest/ + uniteWorkUrl: http://localhost/tool-tech/workflowRouter diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index 6482e69..ef68306 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -24,6 +24,8 @@ + + @@ -38,7 +40,7 @@ - select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time from t_tool + select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time,proc_inst_id,record_status from t_tool + + insert into t_tool @@ -68,6 +75,8 @@ create_time, update_by, update_time, + proc_inst_id, + record_status, #{toolId}, @@ -89,12 +98,15 @@ #{createTime}, #{updateBy}, #{updateTime}, + #{procInstId}, + #{recordStatus}, update t_tool + tool_code = #{toolCode}, tool_name = #{toolName}, tool_type = #{toolType}, tool_source = #{toolSource}, @@ -112,6 +124,7 @@ create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, + record_status = #{recordStatus}, where tool_id = #{toolId} @@ -154,4 +167,4 @@ #{toolId} - \ No newline at end of file + diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml b/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml new file mode 100644 index 0000000..0ffa7f9 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/UseApplyItemMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + select id, apply_id, tool_id, tool_code, tool_name, tool_type, tool_principals, tool_principals_name, tool_resp_dept from t_use_apply_item + + + + + + + + insert into t_use_apply_item + + id, + apply_id, + tool_id, + tool_code, + tool_name, + tool_type, + tool_principals, + tool_principals_name, + tool_resp_dept, + + + #{id}, + #{applyId}, + #{toolId}, + #{toolCode}, + #{toolName}, + #{toolType}, + #{toolPrincipals}, + #{toolPrincipalsName}, + #{toolRespDept}, + + + + + update t_use_apply_item + + apply_id = #{applyId}, + tool_id = #{toolId}, + tool_code = #{toolCode}, + tool_name = #{toolName}, + tool_type = #{toolType}, + tool_principals = #{toolPrincipals}, + tool_principals_name = #{toolPrincipalsName}, + tool_resp_dept = #{toolRespDept}, + + where id = #{id} + + + + delete from t_use_apply_item where id = #{id} + + + + delete from t_use_apply_item where id in + + #{id} + + + + + delete from t_use_apply_item where apply_id = #{applyId} + + diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml new file mode 100644 index 0000000..73fcbf9 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + select id, user_name, dept_id, reason, create_by, create_time, update_by, update_time from t_use_apply + + + + + + + + + + insert into t_use_apply + + id, + user_name, + dept_id, + reason, + create_by, + create_time, + update_by, + update_time, + proc_inst_id, + record_status, + + + #{id}, + #{userName}, + #{deptId}, + #{reason}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{procInstId}, + #{recordStatus}, + + + + + update t_use_apply + + user_name = #{userName}, + dept_id = #{deptId}, + reason = #{reason}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + record_status = #{recordStatus}, + + where id = #{id} + + + + delete from t_use_apply where id = #{id} + + + + delete from t_use_apply where id in + + #{id} + + + diff --git a/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml b/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml new file mode 100644 index 0000000..a856b3d --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/WorkflowLogMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, proc_inst_id, proc_def_key, business_id, act_def_id, act_def_name, next_def_id, next_def_name, act_inst_id, opinion, sender, sender_dept_id, receiver, act_status, create_time, update_time, pass, tenant_id, review, batch from t_workflow_log + + + + + + + + insert into t_workflow_log + + id, + proc_inst_id, + proc_def_key, + business_id, + act_def_id, + act_def_name, + next_def_id, + next_def_name, + act_inst_id, + opinion, + sender, + sender_dept_id, + receiver, + act_status, + create_time, + update_time, + pass, + tenant_id, + review, + batch, + + + #{id}, + #{procInstId}, + #{procDefKey}, + #{businessId}, + #{actDefId}, + #{actDefName}, + #{nextDefId}, + #{nextDefName}, + #{actInstId}, + #{opinion}, + #{sender}, + #{senderDeptId}, + #{receiver}, + #{actStatus}, + #{createTime}, + #{updateTime}, + #{pass}, + #{tenantId}, + #{review}, + #{batch}, + + + + + update t_workflow_log + + proc_inst_id = #{procInstId}, + proc_def_key = #{procDefKey}, + business_id = #{businessId}, + act_def_id = #{actDefId}, + act_def_name = #{actDefName}, + next_def_id = #{nextDefId}, + next_def_name = #{nextDefName}, + act_inst_id = #{actInstId}, + opinion = #{opinion}, + sender = #{sender}, + sender_dept_id = #{senderDeptId}, + receiver = #{receiver}, + act_status = #{actStatus}, + create_time = #{createTime}, + update_time = #{updateTime}, + pass = #{pass}, + tenant_id = #{tenantId}, + review = #{review}, + batch = #{batch}, + + where id = #{id} + + + + delete from t_workflow_log where id = #{id} + + + + delete from t_workflow_log where id in + + #{id} + + + diff --git a/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java b/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java new file mode 100644 index 0000000..9b3db38 --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/enums/RecordStatusEnum.java @@ -0,0 +1,49 @@ +package com.rzdata.common.enums; + + +public enum RecordStatusEnum { + + /** + * 草稿 + */ + DRAFT("draft","草稿"), + + /** + * 进行中 + */ + DOING("doing","进行中"), + + /** + * 已完成 + */ + DONE("done","已办结"), + + /** + * 作废 + */ + CANCEL("cancel","已撤销"); + + RecordStatusEnum(String code, String msg) { + this.code = code; + this.msg = msg; + } + private String code; + private String msg; + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } + + public static String getMsg(String code){ + for (RecordStatusEnum recordStatusEnum : RecordStatusEnum.values()){ + if(recordStatusEnum.getCode().equals(code)){ + return recordStatusEnum.getMsg(); + } + } + return ""; + } +} From 0e18f96534c940bc3d35236fd022983adb3e58be Mon Sep 17 00:00:00 2001 From: liukang Date: Tue, 27 Aug 2024 18:17:42 +0800 Subject: [PATCH 02/36] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BD=BF=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=BB=86=E8=8A=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/tool/ToolController.java | 7 ++++++- .../controller/tool/UseApplyController.java | 6 ++++++ .../main/java/com/rzdata/web/domain/Tool.java | 6 ++++++ .../java/com/rzdata/web/domain/UseApply.java | 14 +++++++++---- .../com/rzdata/web/mapper/ToolMapper.java | 2 ++ .../com/rzdata/web/service/IToolService.java | 2 +- .../web/service/impl/ToolServiceImpl.java | 11 +++++----- .../web/service/impl/UseApplyServiceImpl.java | 3 +++ .../src/main/resources/application.yml | 2 +- .../src/main/resources/mapper/ToolMapper.xml | 18 ++++++++++++++++- .../main/resources/mapper/UseApplyMapper.xml | 20 +++++++++++++------ 11 files changed, 71 insertions(+), 20 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index c8f94c3..8fc3938 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -84,7 +84,7 @@ public class ToolController extends BaseController @ApiOperation("判断文件名称是否存在 true 存在 false 不存在") @GetMapping("/checkToolExist") public AjaxResult checkToolExist(Tool tTool) { - return AjaxResult.success(toolService.checkToolExist(tTool.getToolCode(), tTool.getToolRespDept())); + return AjaxResult.success(toolService.checkToolExist(tTool)); } /** @@ -117,6 +117,11 @@ public class ToolController extends BaseController toolService.insertTool(tTool); }else if (BooleanUtil.isTrue(tTool.getEditStatus())){ toolService.updateTool(tTool); + }else { + Tool tool = new Tool(); + tool.setToolId(tTool.getToolId()); + tool.setRecordStatus(tTool.getRecordStatus()); + toolService.updateTool(tool); } return AjaxResult.success("操作成功",processInstanceModel); }else { diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java index 4d62afe..afb44df 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java @@ -9,6 +9,7 @@ import com.blueland.bpmclient.model.ProcessInstanceModel; import com.rzdata.common.enums.RecordStatusEnum; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.StringUtils; +import com.rzdata.web.domain.Tool; import com.rzdata.web.service.IUseApplyItemService; import com.rzdata.web.service.WorkflowService; import org.springframework.security.access.prepost.PreAuthorize; @@ -126,6 +127,11 @@ public class UseApplyController extends BaseController }else if (BooleanUtil.isTrue(useApply.getEditStatus())){ useApplyService.updateUseApply(useApply); useApplyItemService.updateItemList(useApply.getItemList(),useApply.getId()); + }else { + UseApply updateStatus = new UseApply(); + useApply.setId(useApply.getId()); + useApply.setRecordStatus(useApply.getRecordStatus()); + useApplyService.updateUseApply(updateStatus); } return AjaxResult.success("操作成功",processInstanceModel); }else { diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 5dfe162..834a595 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -75,6 +75,12 @@ public class Tool extends BaseEntity @Excel(name = "状态") private String status; + /** 备注 */ + private String remark; + + /** 发布时间 */ + private String releaseTime; + /** 部门对象 */ @Excels({ @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.EXPORT), diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java index 4d9d1b3..e2c7a61 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java @@ -21,14 +21,20 @@ public class UseApply extends BaseEntity /** 主键 */ private String id; - /** 申请人 */ - @Excel(name = "申请人") - private String userName; + + @Excel(name = "申请人id") + private String userId; + + @Excel(name = "申请人名称") + private String nickName; /** 申请部门 */ - @Excel(name = "申请部门") + @Excel(name = "申请部门id") private String deptId; + @Excel(name = "申请部门名称") + private String deptName; + /** 申请理由 */ @Excel(name = "申请理由") private String reason; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java index f32adc9..98fc8f5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolMapper.java @@ -22,6 +22,8 @@ public interface ToolMapper Tool getInfoByBpmcId(String bpmcId); + int checkToolExist(Tool tool); + /** * 查询工具信息列表 * diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index 744626a..3c5b240 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -38,7 +38,7 @@ public interface IToolService */ public int insertTool(Tool tool); - public boolean checkToolExist(String toolCode, String toolRespDept); + public boolean checkToolExist(Tool tTool); /** * 修改工具信息 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 9c4f276..3b23840 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -2,6 +2,7 @@ package com.rzdata.web.service.impl; import cn.hutool.core.util.IdUtil; import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; import com.rzdata.web.domain.Tool; import com.rzdata.web.mapper.ToolMapper; import com.rzdata.web.service.IToolService; @@ -60,18 +61,15 @@ public class ToolServiceImpl implements IToolService @Override public int insertTool(Tool tool) { + tool.setCreateBy(SecurityUtils.getUserId().toString()); tool.setCreateTime(DateUtils.getNowDate()); return toolMapper.insertTool(tool); } @Override - public boolean checkToolExist(String toolCode, String toolRespDept) + public boolean checkToolExist(Tool tTool) { - Tool tool = new Tool(); - tool.setToolCode(toolCode); - tool.setToolRespDept(toolRespDept); - List toolList = toolMapper.selectToolList(tool); - return toolList.size() > 0; + return toolMapper.checkToolExist(tTool)> 0; } /** @@ -83,6 +81,7 @@ public class ToolServiceImpl implements IToolService @Override public int updateTool(Tool tool) { + tool.setUpdateBy(SecurityUtils.getUserId().toString()); tool.setUpdateTime(DateUtils.getNowDate()); return toolMapper.updateTool(tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java index 529406c..0477d64 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java @@ -2,6 +2,7 @@ package com.rzdata.web.service.impl; import java.util.List; import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; import com.rzdata.web.domain.Tool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -58,6 +59,7 @@ public class UseApplyServiceImpl implements IUseApplyService @Override public int insertUseApply(UseApply useApply) { + useApply.setCreateBy(SecurityUtils.getUserId().toString()); useApply.setCreateTime(DateUtils.getNowDate()); return useApplyMapper.insertUseApply(useApply); } @@ -71,6 +73,7 @@ public class UseApplyServiceImpl implements IUseApplyService @Override public int updateUseApply(UseApply useApply) { + useApply.setUpdateBy(SecurityUtils.getUserId().toString()); useApply.setUpdateTime(DateUtils.getNowDate()); return useApplyMapper.updateUseApply(useApply); } diff --git a/tool-tech-admin/src/main/resources/application.yml b/tool-tech-admin/src/main/resources/application.yml index 2729246..a810df7 100644 --- a/tool-tech-admin/src/main/resources/application.yml +++ b/tool-tech-admin/src/main/resources/application.yml @@ -130,5 +130,5 @@ xss: bpmc: tenantId: TLTC_SYS - serviceUrl: http://192.168.2.17:8081/ebpm-process-rest/ + serviceUrl: http://192.168.2.20:8081/ebpm-process-rest/ uniteWorkUrl: http://localhost/tool-tech/workflowRouter diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index ef68306..98fa10b 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -129,11 +129,23 @@ where tool_id = #{toolId} + + diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml index 73fcbf9..b8260fe 100644 --- a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml @@ -6,8 +6,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + @@ -18,13 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, user_name, dept_id, reason, create_by, create_time, update_by, update_time from t_use_apply + select id, user_id, nick_name, dept_id, dept_name, reason, create_by, create_time, update_by, update_time from t_use_apply 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, d.dept_name, d.leader from t_tool u + 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 from t_tool u left join sys_dept d on u.tool_resp_dept = d.dept_id where 1=1 and u.record_status != 'cancel' @@ -167,7 +167,7 @@ AND u.tool_resp_dept = #{toolRespDept} - + AND (u.create_by = #{createBy} or u.record_status = 'done') order by create_time desc diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml index b8260fe..ee11a4e 100644 --- a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml @@ -101,4 +101,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index b540865..1af7a21 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -5,7 +5,7 @@ import io.jsonwebtoken.Claims; /** * 通用常量信息 - * + * * @author jian */ public class Constants @@ -170,4 +170,16 @@ public class Constants */ public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.rzdata.common.utils.file", "com.rzdata.common.config", "com.rzdata.generator" }; + + /** + * 查看审批中的工具权限 + */ + public static final String VIEW_TOOL_PERMISSION = "view:doing:tool"; + + /** + * 查看审批中的工具权限 + */ + public static final String DOWNLOAD_TOOL_PERMISSION = "download:done:tool"; + + } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java b/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java index a5efc45..8232a9d 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/utils/poi/ExcelUtil.java @@ -88,7 +88,7 @@ import com.rzdata.common.utils.reflect.ReflectUtils; /** * Excel相关处理 - * + * * @author ruoyi */ public class ExcelUtil @@ -210,9 +210,11 @@ public class ExcelUtil * @param fields 列属性名 示例[单个"name"/多个"id","name"] * @throws Exception */ - public void hideColumn(String... fields) + public void hideColumn(List fields) { - this.excludeFields = fields; + if (fields!=null) { + this.excludeFields = fields.toArray(new String[0]); + } } public void init(List list, String sheetName, String title, Type type) @@ -285,7 +287,7 @@ public class ExcelUtil /** * 对excel表单默认第一个索引名转换成list - * + * * @param is 输入流 * @return 转换后集合 */ @@ -310,7 +312,7 @@ public class ExcelUtil /** * 对excel表单默认第一个索引名转换成list - * + * * @param is 输入流 * @param titleNum 标题占用行数 * @return 转换后集合 @@ -322,7 +324,7 @@ public class ExcelUtil /** * 对excel表单指定表格索引名转换成list - * + * * @param sheetName 表格索引名 * @param titleNum 标题占用行数 * @param is 输入流 @@ -506,7 +508,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param list 导出数据集合 * @param sheetName 工作表的名称 * @return 结果 @@ -518,7 +520,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param list 导出数据集合 * @param sheetName 工作表的名称 * @param title 标题 @@ -532,7 +534,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param response 返回数据 * @param list 导出数据集合 * @param sheetName 工作表的名称 @@ -545,7 +547,21 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @return 结果 + */ + public void exportExcel(HttpServletResponse response, List list, String sheetName,List excludeFields) + { + hideColumn(excludeFields); + exportExcel(response, list, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * * @param response 返回数据 * @param list 导出数据集合 * @param sheetName 工作表的名称 @@ -562,7 +578,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -573,7 +589,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @param title 标题 * @return 结果 @@ -586,7 +602,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -597,7 +613,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @param title 标题 * @return 结果 @@ -612,7 +628,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public void exportExcel(HttpServletResponse response) @@ -634,7 +650,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public AjaxResult exportExcel() @@ -702,7 +718,7 @@ public class ExcelUtil /** * 填充excel数据 - * + * * @param index 序号 * @param row 单元格行 */ @@ -773,7 +789,7 @@ public class ExcelUtil /** * 创建表格样式 - * + * * @param wb 工作薄对象 * @return 样式列表 */ @@ -828,7 +844,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格头样式 - * + * * @param wb 工作薄对象 * @return 自定义样式列表 */ @@ -864,7 +880,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格列样式 - * + * * @param wb 工作薄对象 * @return 自定义样式列表 */ @@ -896,7 +912,7 @@ public class ExcelUtil /** * 根据Excel注解创建表格列样式 - * + * * @param styles 自定义样式列表 * @param field 属性列信息 * @param excel 注解信息 @@ -958,7 +974,7 @@ public class ExcelUtil /** * 设置单元格信息 - * + * * @param value 单元格值 * @param attr 注解相关 * @param cell 单元格信息 @@ -1138,7 +1154,7 @@ public class ExcelUtil /** * 设置 POI XSSFSheet 单元格提示或选择框 - * + * * @param sheet 表单 * @param textlist 下拉框显示的内容 * @param promptContent 提示内容 @@ -1175,7 +1191,7 @@ public class ExcelUtil /** * 设置某些列的值只能输入预制的数据,显示下拉框(兼容超出一定数量的下拉框). - * + * * @param sheet 要设置的sheet. * @param textlist 下拉框显示的内容 * @param promptContent 提示内容 @@ -1227,7 +1243,7 @@ public class ExcelUtil /** * 解析导出值 0=男,1=女,2=未知 - * + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -1264,7 +1280,7 @@ public class ExcelUtil /** * 反向解析值 男=0,女=1,未知=2 - * + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -1301,7 +1317,7 @@ public class ExcelUtil /** * 解析字典值 - * + * * @param dictValue 字典值 * @param dictType 字典类型 * @param separator 分隔符 @@ -1314,7 +1330,7 @@ public class ExcelUtil /** * 反向解析值字典值 - * + * * @param dictLabel 字典标签 * @param dictType 字典类型 * @param separator 分隔符 @@ -1327,7 +1343,7 @@ public class ExcelUtil /** * 数据处理器 - * + * * @param value 数据值 * @param excel 数据注解 * @return @@ -1404,7 +1420,7 @@ public class ExcelUtil /** * 获取下载路径 - * + * * @param filename 文件名称 */ public String getAbsoluteFile(String filename) @@ -1420,7 +1436,7 @@ public class ExcelUtil /** * 获取bean中的属性值 - * + * * @param vo 实体对象 * @param field 字段 * @param excel 注解 @@ -1451,7 +1467,7 @@ public class ExcelUtil /** * 以类的属性的get方法方法形式获取值 - * + * * @param o * @param name * @return value @@ -1557,7 +1573,7 @@ public class ExcelUtil /** * 创建工作表 - * + * * @param sheetNo sheet数量 * @param index 序号 */ @@ -1574,7 +1590,7 @@ public class ExcelUtil /** * 获取单元格值 - * + * * @param row 获取的行 * @param column 获取单元格列号 * @return 单元格值 @@ -1634,7 +1650,7 @@ public class ExcelUtil /** * 判断是否是空行 - * + * * @param row 判断的行 * @return */ @@ -1722,7 +1738,7 @@ public class ExcelUtil /** * 格式化不同类型的日期对象 - * + * * @param dateFormat 日期格式 * @param val 被格式化的日期对象 * @return 格式化后的日期字符 @@ -1788,7 +1804,7 @@ public class ExcelUtil /** * 获取对象的子列表方法 - * + * * @param name 名称 * @param pojoClass 类对象 * @return 子列表方法 diff --git a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java index 4852a4f..7c688aa 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDeptMapper.java @@ -6,14 +6,14 @@ import com.rzdata.common.core.domain.entity.SysDept; /** * 部门管理 数据层 - * + * * @author jian */ public interface SysDeptMapper { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +21,7 @@ public interface SysDeptMapper /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 @@ -30,7 +30,7 @@ public interface SysDeptMapper /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -38,7 +38,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门 - * + * * @param deptId 部门ID * @return 部门列表 */ @@ -46,7 +46,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -54,7 +54,7 @@ public interface SysDeptMapper /** * 是否存在子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -62,7 +62,7 @@ public interface SysDeptMapper /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 */ @@ -70,7 +70,7 @@ public interface SysDeptMapper /** * 校验部门名称是否唯一 - * + * * @param deptName 部门名称 * @param parentId 父部门ID * @return 结果 @@ -79,7 +79,7 @@ public interface SysDeptMapper /** * 新增部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -87,7 +87,7 @@ public interface SysDeptMapper /** * 修改部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -95,14 +95,14 @@ public interface SysDeptMapper /** * 修改所在部门正常状态 - * + * * @param deptIds 部门ID组 */ public void updateDeptStatusNormal(Long[] deptIds); /** * 修改子元素关系 - * + * * @param depts 子元素 * @return 结果 */ @@ -110,9 +110,11 @@ public interface SysDeptMapper /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ public int deleteDeptById(Long deptId); + + String getDeptNameByDeptId(String deptId); } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java index 35b3528..9910372 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDeptService.java @@ -6,14 +6,14 @@ import com.rzdata.common.core.domain.entity.SysDept; /** * 部门管理 服务层 - * + * * @author jian */ public interface ISysDeptService { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +21,7 @@ public interface ISysDeptService /** * 查询部门树结构信息 - * + * * @param dept 部门信息 * @return 部门树信息集合 */ @@ -29,7 +29,7 @@ public interface ISysDeptService /** * 构建前端所需要树结构 - * + * * @param depts 部门列表 * @return 树结构列表 */ @@ -37,7 +37,7 @@ public interface ISysDeptService /** * 构建前端所需要下拉树结构 - * + * * @param depts 部门列表 * @return 下拉树结构列表 */ @@ -45,7 +45,7 @@ public interface ISysDeptService /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @return 选中部门列表 */ @@ -53,7 +53,7 @@ public interface ISysDeptService /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -61,7 +61,7 @@ public interface ISysDeptService /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -69,7 +69,7 @@ public interface ISysDeptService /** * 是否存在部门子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -77,7 +77,7 @@ public interface ISysDeptService /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 true 存在 false 不存在 */ @@ -85,7 +85,7 @@ public interface ISysDeptService /** * 校验部门名称是否唯一 - * + * * @param dept 部门信息 * @return 结果 */ @@ -93,14 +93,14 @@ public interface ISysDeptService /** * 校验部门是否有数据权限 - * + * * @param deptId 部门id */ public void checkDeptDataScope(Long deptId); /** * 新增保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -108,7 +108,7 @@ public interface ISysDeptService /** * 修改保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -116,9 +116,11 @@ public interface ISysDeptService /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ public int deleteDeptById(Long deptId); + + String getDeptName(String deptId); } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java index 2f28bf0..1b22eb3 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java @@ -23,7 +23,7 @@ import com.rzdata.system.service.ISysDeptService; /** * 部门管理 服务实现 - * + * * @author ruoyi */ @Service @@ -37,7 +37,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -50,7 +50,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门树结构信息 - * + * * @param dept 部门信息 * @return 部门树信息集合 */ @@ -63,7 +63,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 构建前端所需要树结构 - * + * * @param depts 部门列表 * @return 树结构列表 */ @@ -90,7 +90,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 构建前端所需要下拉树结构 - * + * * @param depts 部门列表 * @return 下拉树结构列表 */ @@ -103,7 +103,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @return 选中部门列表 */ @@ -116,7 +116,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -128,7 +128,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -140,7 +140,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 是否存在子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -153,7 +153,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 true 存在 false 不存在 */ @@ -166,7 +166,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 校验部门名称是否唯一 - * + * * @param dept 部门信息 * @return 结果 */ @@ -184,7 +184,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 校验部门是否有数据权限 - * + * * @param deptId 部门id */ @Override @@ -204,7 +204,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 新增保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -223,7 +223,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -251,7 +251,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改该部门的父级部门状态 - * + * * @param dept 当前部门 */ private void updateParentDeptStatusNormal(SysDept dept) @@ -263,7 +263,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改子元素关系 - * + * * @param deptId 被修改的部门ID * @param newAncestors 新的父ID集合 * @param oldAncestors 旧的父ID集合 @@ -283,7 +283,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ @@ -335,4 +335,9 @@ public class SysDeptServiceImpl implements ISysDeptService { return getChildList(list, t).size() > 0; } + + @Override + public String getDeptName(String deptId){ + return deptMapper.getDeptNameByDeptId(deptId); + } } diff --git a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml index c5dbeac..c4deecc 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -21,12 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time from sys_dept d - + - + - + - + - + - + - + - + - + insert into sys_dept( dept_id, @@ -114,7 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - + update sys_dept @@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where dept_id = #{deptId} - + update sys_dept set ancestors = - + - update sys_dept set status = '0' where dept_id in + update sys_dept set status = '0' where dept_id in #{deptId} - + update sys_dept set del_flag = '2' where dept_id = #{deptId} - \ No newline at end of file + + From 423c2ad275471a5f40f936376425ea2842c3acd7 Mon Sep 17 00:00:00 2001 From: liukang Date: Wed, 28 Aug 2024 17:28:04 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BD=BF=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=BB=86=E8=8A=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/rzdata/web/domain/Tool.java | 4 ++-- .../src/main/resources/mapper/ToolMapper.xml | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 850c3e9..89abbdc 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -81,8 +81,8 @@ public class Tool extends BaseEntity @Excel(name = "备注",sort=12) private String remark; - /** 发布时间 */ - private String releaseTime; + /** 关联工具 */ + private String association; private BpmClientInputModelBo bpmClientInputModel; diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index ac642bd..fff079c 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -40,7 +40,7 @@ - select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time,proc_inst_id,record_status from t_tool + select tool_id, tool_code, tool_name, tool_type, tool_source, tool_use, test_situation, function_desc, apply_condition, operate_explain, tool_principals, tool_principals_name, tool_resp_dept, status, remark, create_by, create_time, update_by, update_time,proc_inst_id,record_status,association from t_tool 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, d.dept_name as tool_resp_dept_name from t_tool u + 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_dept d on u.tool_resp_dept = d.dept_id where 1=1 and u.record_status != 'cancel' @@ -170,6 +173,9 @@ AND (u.create_by = #{createBy} or u.record_status = 'done') + + AND u.record_status = #{recordStatus} + order by create_time desc From a272e0601850cb035d6f41d432a9c93250ad6e1f Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Wed, 28 Aug 2024 17:40:03 +0800 Subject: [PATCH 05/36] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86=202=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CommonController.java | 84 +++++++- .../document/DocumentCategoryController.java | 116 +++++++++++ .../java/com/rzdata/web/domain/Document.java | 109 +---------- .../web/mapper/DocumentCategoryMapper.java | 62 ++++++ .../web/service/IDocumentCategoryService.java | 71 +++++++ .../impl/DocumentCategoryServiceImpl.java | 183 ++++++++++++++++++ .../mapper/DocumentCategoryMapper.xml | 100 ++++++++++ .../main/resources/mapper/DocumentMapper.xml | 13 +- .../rzdata/common/config/SnowflakeConfig.java | 26 +++ .../common/core/domain/DocumentCategory.java | 54 ++++++ .../rzdata/common/core/domain/TreeSelect.java | 36 ++-- .../common/utils/file/FileUploadUtils.java | 48 +++++ 12 files changed, 769 insertions(+), 133 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java create mode 100644 tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml create mode 100644 tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java create mode 100644 tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 8d840cb..9bdf2ac 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -1,17 +1,25 @@ package com.rzdata.web.controller.common; -import java.util.ArrayList; -import java.util.List; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.rzdata.common.config.JaConfig; import com.rzdata.common.constant.Constants; @@ -160,4 +168,68 @@ public class CommonController log.error("下载文件失败", e); } } + + + @PostMapping("/initUpload") + public ResponseEntity> initUpload(@RequestParam("fileName") String fileName) { + // 上传文件路径 + String filePath = JaConfig.getUploadPath(); + String uploadId = UUID.randomUUID().toString(); + // 创建临时目录用于存放分片文件 + new File(filePath + "/" + uploadId).mkdirs(); + Map response = new HashMap<>(); + response.put("uploadId", uploadId); + return ResponseEntity.ok(response); + } + + @PostMapping("/uploadChunk") + public ResponseEntity> uploadChunk( + @RequestParam("chunkFile") MultipartFile chunkFile, + @RequestParam("uploadId") String uploadId, + @RequestParam("chunkId") int chunkId) { + String filePath = JaConfig.getUploadPath(); + String chunkFilePath = filePath + "/" + uploadId + "/" + chunkId; + try { + chunkFile.transferTo(new File(chunkFilePath)); + Map response = new HashMap<>(); + response.put("status", "200"); + return ResponseEntity.ok(response); + } catch (IOException e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + @PostMapping("/mergeFile") + public ResponseEntity> mergeFile(@RequestParam("uploadId") String uploadId, + @RequestParam("fileName") String fileName) { + String filePath = JaConfig.getUploadPath(); + //String finalFilePath = FileUploadUtils.generateMergedFilePath(filePath, fileName); + String fileNamePath = FileUploadUtils.getFilePath(filePath, fileName); + String finalFilePath = filePath + fileNamePath.replace("profile/upload/", "") ; + File dir = new File(filePath + "/" + uploadId); + File[] chunkFiles = dir.listFiles(); + + // 按文件名(即chunkId)排序 + Arrays.sort(chunkFiles, Comparator.comparingInt(f -> Integer.parseInt(f.getName()))); + + try (FileOutputStream fos = new FileOutputStream(finalFilePath)) { + for (File chunk : chunkFiles) { + Files.copy(chunk.toPath(), fos); + } + + Map response = new HashMap<>(); + String url = serverConfig.getUrl() + fileNamePath; + response.put("url", url); + response.put("fileUrl", finalFilePath); + response.put("fileNamePath", fileNamePath); + return ResponseEntity.ok(response); + } catch (IOException e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } finally { + // 清理临时文件 + Arrays.stream(chunkFiles).forEach(File::delete); + dir.delete(); + } + } + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java new file mode 100644 index 0000000..da8098d --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java @@ -0,0 +1,116 @@ +package com.rzdata.web.controller.document; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.common.core.domain.DocumentCategory; +import com.rzdata.web.service.IDocumentCategoryService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 文档资源分类管理Controller + * + * @author spongepan + * @date 2024-08-27 + */ +@RestController +@RequestMapping("/system/category") +public class DocumentCategoryController extends BaseController +{ + @Autowired + private IDocumentCategoryService documentCategoryService; + + /** + * 查询文档资源分类管理列表 + */ + @PreAuthorize("@ss.hasPermi('system:category:list')") + @GetMapping("/list") + public TableDataInfo list(DocumentCategory documentCategory) + { + startPage(); + List list = documentCategoryService.selectDocumentCategoryList(documentCategory); + return getDataTable(list); + } + + /** + * 导出文档资源分类管理列表 + */ + @PreAuthorize("@ss.hasPermi('system:category:export')") + @Log(title = "文档资源分类管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DocumentCategory documentCategory) + { + List list = documentCategoryService.selectDocumentCategoryList(documentCategory); + ExcelUtil util = new ExcelUtil(DocumentCategory.class); + util.exportExcel(response, list, "文档资源分类管理数据"); + } + + /** + * 获取文档资源分类管理详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:category:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(documentCategoryService.selectDocumentCategoryById(id)); + } + + /** + * 新增文档资源分类管理 + */ + @PreAuthorize("@ss.hasPermi('system:category:add')") + @Log(title = "文档资源分类管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DocumentCategory documentCategory) + { + return toAjax(documentCategoryService.insertDocumentCategory(documentCategory)); + } + + /** + * 修改文档资源分类管理 + */ + @PreAuthorize("@ss.hasPermi('system:category:edit')") + @Log(title = "文档资源分类管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DocumentCategory documentCategory) + { + return toAjax(documentCategoryService.updateDocumentCategory(documentCategory)); + } + + /** + * 删除文档资源分类管理 + */ + @PreAuthorize("@ss.hasPermi('system:category:remove')") + @Log(title = "文档资源分类管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(documentCategoryService.deleteDocumentCategoryByIds(ids)); + } + + + /** + * 获取文档分类树列表 + */ + @PreAuthorize("@ss.hasPermi('system:category:tree:list')") + @GetMapping("/documentTree") + public AjaxResult deptTree(DocumentCategory documentCategory) + { + return success(documentCategoryService.selectDocumentTreeList(documentCategory)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index 2d21e0c..ee1684a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -2,6 +2,7 @@ package com.rzdata.web.domain; import com.rzdata.common.annotation.Excel; import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,6 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; * @author ja * @date 2024-07-08 */ +@Data public class Document extends BaseEntity { private static final long serialVersionUID = 1L; @@ -49,106 +51,11 @@ public class Document extends BaseEntity { @Excel(name = "文档地址") private String docUrl; - public void setDocId(String docId) - { - this.docId = docId; - } + /** 备注 */ + @Excel(name = "备注") + private String remark; - public String getDocId() - { - return docId; - } - public void setDocCode(String docCode) - { - this.docCode = docCode; - } - - public String getDocCode() - { - return docCode; - } - public void setDocName(String docName) - { - this.docName = docName; - } - - public String getDocName() - { - return docName; - } - public void setDocType(String docType) - { - this.docType = docType; - } - - public String getDocType() - { - return docType; - } - public void setDocPrincipals(String docPrincipals) - { - this.docPrincipals = docPrincipals; - } - - public String getDocPrincipals() - { - return docPrincipals; - } - public void setDocRespDept(String docRespDept) - { - this.docRespDept = docRespDept; - } - - public String getDocRespDept() - { - return docRespDept; - } - public void setDocSource(String docSource) - { - this.docSource = docSource; - } - - public String getDocSource() - { - return docSource; - } - - public void setDocStatus(String docStatus) - { - this.docStatus = docStatus; - } - - public String getDocStatus() - { - return docStatus; - } - - public void setDocUrl(String docUrl) - { - this.docUrl = docUrl; - } - - public String getDocUrl() - { - return docUrl; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("docId", getDocId()) - .append("docCode", getDocCode()) - .append("docName", getDocName()) - .append("docType", getDocType()) - .append("docPrincipals", getDocPrincipals()) - .append("docRespDept", getDocRespDept()) - .append("docSource", getDocSource()) - .append("docStatus", getDocStatus()) - .append("docUrl", getDocUrl()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } + /** 文档分类id */ + @Excel(name = "文档分类id") + private String docCategoryId; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java new file mode 100644 index 0000000..106574c --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentCategoryMapper.java @@ -0,0 +1,62 @@ +package com.rzdata.web.mapper; + +import com.rzdata.common.core.domain.DocumentCategory; + +import java.util.List; + +/** + * 文档资源分类管理Mapper接口 + * + * @author spongepan + * @date 2024-08-27 + */ +public interface DocumentCategoryMapper +{ + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + public DocumentCategory selectDocumentCategoryById(String id); + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理集合 + */ + public List selectDocumentCategoryList(DocumentCategory documentCategory); + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int insertDocumentCategory(DocumentCategory documentCategory); + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int updateDocumentCategory(DocumentCategory documentCategory); + + /** + * 删除文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + public int deleteDocumentCategoryById(String id); + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDocumentCategoryByIds(String[] ids); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java new file mode 100644 index 0000000..1f6931b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java @@ -0,0 +1,71 @@ +package com.rzdata.web.service; + +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.core.domain.DocumentCategory; + +import java.util.List; + +/** + * 文档资源分类管理Service接口 + * + * @author spongepan + * @date 2024-08-27 + */ +public interface IDocumentCategoryService +{ + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + public DocumentCategory selectDocumentCategoryById(String id); + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理集合 + */ + public List selectDocumentCategoryList(DocumentCategory documentCategory); + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int insertDocumentCategory(DocumentCategory documentCategory); + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + public int updateDocumentCategory(DocumentCategory documentCategory); + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的文档资源分类管理主键集合 + * @return 结果 + */ + public int deleteDocumentCategoryByIds(String[] ids); + + /** + * 删除文档资源分类管理信息 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + public int deleteDocumentCategoryById(String id); + + + /** + * 获取文档资源树 + * @param documentCategory + * @return + */ + List selectDocumentTreeList(DocumentCategory documentCategory); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java new file mode 100644 index 0000000..85ee4da --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java @@ -0,0 +1,183 @@ +package com.rzdata.web.service.impl; + +import cn.hutool.core.lang.Snowflake; +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.common.core.domain.DocumentCategory; +import com.rzdata.web.mapper.DocumentCategoryMapper; +import com.rzdata.web.service.IDocumentCategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 文档资源分类管理Service业务层处理 + * + * @author spongepan + * @date 2024-08-27 + */ +@Service +public class DocumentCategoryServiceImpl implements IDocumentCategoryService +{ + @Autowired + private DocumentCategoryMapper documentCategoryMapper; + + @Autowired + private Snowflake snowflake; + + /** + * 查询文档资源分类管理 + * + * @param id 文档资源分类管理主键 + * @return 文档资源分类管理 + */ + @Override + public DocumentCategory selectDocumentCategoryById(String id) + { + return documentCategoryMapper.selectDocumentCategoryById(id); + } + + /** + * 查询文档资源分类管理列表 + * + * @param documentCategory 文档资源分类管理 + * @return 文档资源分类管理 + */ + @Override + public List selectDocumentCategoryList(DocumentCategory documentCategory) + { + return documentCategoryMapper.selectDocumentCategoryList(documentCategory); + } + + /** + * 新增文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + @Override + public int insertDocumentCategory(DocumentCategory documentCategory) + { + documentCategory.setId(String.valueOf(snowflake.nextId())); + documentCategory.setCreateTime(DateUtils.getNowDate()); + documentCategory.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + documentCategory.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + return documentCategoryMapper.insertDocumentCategory(documentCategory); + } + + /** + * 修改文档资源分类管理 + * + * @param documentCategory 文档资源分类管理 + * @return 结果 + */ + @Override + public int updateDocumentCategory(DocumentCategory documentCategory) + { + documentCategory.setUpdateTime(DateUtils.getNowDate()); + return documentCategoryMapper.updateDocumentCategory(documentCategory); + } + + /** + * 批量删除文档资源分类管理 + * + * @param ids 需要删除的文档资源分类管理主键 + * @return 结果 + */ + @Override + public int deleteDocumentCategoryByIds(String[] ids) + { + return documentCategoryMapper.deleteDocumentCategoryByIds(ids); + } + + /** + * 删除文档资源分类管理信息 + * + * @param id 文档资源分类管理主键 + * @return 结果 + */ + @Override + public int deleteDocumentCategoryById(String id) + { + return documentCategoryMapper.deleteDocumentCategoryById(id); + } + + @Override + public List selectDocumentTreeList(DocumentCategory documentCategory) { + List documentCategoryList = documentCategoryMapper.selectDocumentCategoryList(documentCategory); + return buildDeptTreeSelect(documentCategoryList); + } + + public List buildDeptTreeSelect(List documentCategory) + { + List docCategoryTree = buildDeptTree(documentCategory); + return docCategoryTree.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public List buildDeptTree(List documentCategoryList) + { + List returnList = new ArrayList(); + List tempList = documentCategoryList.stream().map(DocumentCategory::getId).collect(Collectors.toList()); + for (DocumentCategory documentCategory : documentCategoryList) + { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(documentCategory.getParentId())) + { + recursionFn(documentCategoryList, documentCategory); + returnList.add(documentCategory); + } + } + if (returnList.isEmpty()) + { + returnList = documentCategoryList; + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, DocumentCategory t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (DocumentCategory tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + private List getChildList(List list, DocumentCategory t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + DocumentCategory n = (DocumentCategory) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().equals(t.getId())) + { + tlist.add(n); + } + } + return tlist; + } + + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, DocumentCategory t) + { + return getChildList(list, t).size() > 0; + } +} diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml new file mode 100644 index 0000000..5685bec --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/DocumentCategoryMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + select id, category_name, category_description, parent_id, create_by, create_by_id, create_time, + update_by, update_by_id, update_time, types from t_document_category + + + + + + + + insert into t_document_category + + id, + category_name, + category_description, + parent_id, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + types, + + + #{id}, + #{categoryName}, + #{categoryDescription}, + #{parentId}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + #{types}, + + + + + update t_document_category + + category_name = #{categoryName}, + category_description = #{categoryDescription}, + parent_id = #{parentId}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + types = #{types}, + + where id = #{id} + + + + delete from t_document_category where id = #{id} + + + + delete from t_document_category where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index d4673b3..d2079e3 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -18,10 +18,14 @@ + + - select doc_id, doc_code, doc_name, doc_type, doc_principals, doc_resp_dept, doc_source, doc_status, doc_url, create_by, create_time, update_by, update_time from t_document + select doc_id, doc_code, doc_name, doc_type, doc_principals, doc_resp_dept, + doc_source, doc_status, doc_url, create_by, create_time, + update_by, update_time, remark, doc_category_id from t_document @@ -58,6 +63,8 @@ create_time, update_by, update_time, + remark, + doc_category_id, #{docId}, @@ -73,6 +80,8 @@ #{createTime}, #{updateBy}, #{updateTime}, + #{remark}, + #{doc_category_id}, @@ -91,6 +100,8 @@ create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, + remark = #{remark}, + docCategoryId = #{doc_category_id}, where doc_id = #{docId} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java b/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java new file mode 100644 index 0000000..9d5239f --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/config/SnowflakeConfig.java @@ -0,0 +1,26 @@ +package com.rzdata.common.config; + +import cn.hutool.core.lang.Snowflake; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 雪花算法订单号生成 + * @author lanhai + */ +@Configuration +public class SnowflakeConfig { + + @Value("${application.datacenterId}") + private Long datacenterId; + + @Value("${application.workerId}") + private Long workerId; + + @Bean + public Snowflake snowflake() { + return new Snowflake(workerId, datacenterId); + } + +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java new file mode 100644 index 0000000..ce7ff3a --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/DocumentCategory.java @@ -0,0 +1,54 @@ +package com.rzdata.common.core.domain; + +import com.rzdata.common.annotation.Excel; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 文档资源分类管理对象 t_document_category + * + * @author spongepan + * @date 2024-08-27 + */ +@Data +public class DocumentCategory extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private String id; + + /** 分类名称 */ + @Excel(name = "分类名称") + private String categoryName; + + /** 分类描述 */ + @Excel(name = "分类描述") + private String categoryDescription; + + /** 父分类ID,如果是一级分类,则为空 */ + @Excel(name = "父分类ID,如果是一级分类,则为空") + private String parentId; + + /** 创建人id */ + @Excel(name = "创建人id") + private String createById; + + /** 更新人id */ + @Excel(name = "更新人id") + private String updateById; + + /** 类型(system:系统,user:用户创建) */ + @Excel(name = "类型") + private String types; + + /** 文档分类id */ + @Excel(name = "文档分类id") + private String docCategoryId; + + /** 子分类 */ + private List children = new ArrayList(); + +} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java index 952babf..1a7afbe 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java @@ -6,12 +6,14 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonInclude; import com.rzdata.common.core.domain.entity.SysDept; import com.rzdata.common.core.domain.entity.SysMenu; +import lombok.Data; /** * Treeselect树结构实体类 * * @author ruoyi */ +@Data public class TreeSelect implements Serializable { private static final long serialVersionUID = 1L; @@ -22,6 +24,9 @@ public class TreeSelect implements Serializable /** 节点名称 */ private String label; + /** 类型 */ + private String types; + /** 子节点 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; @@ -45,33 +50,14 @@ public class TreeSelect implements Serializable this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } - public Long getId() + + public TreeSelect(DocumentCategory docCategory) { - return id; + this.id = Long.valueOf(docCategory.getId()); + this.label = docCategory.getCategoryName(); + this.types = docCategory.getTypes(); + this.children = docCategory.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } - public void setId(Long id) - { - this.id = id; - } - public String getLabel() - { - return label; - } - - public void setLabel(String label) - { - this.label = label; - } - - public List getChildren() - { - return children; - } - - public void setChildren(List children) - { - this.children = children; - } } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java b/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java index d18b825..f2714b7 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/utils/file/FileUploadUtils.java @@ -5,6 +5,8 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.Objects; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.rzdata.common.listener.PutObjectProgressListener; import org.apache.commons.io.FilenameUtils; import org.springframework.util.Assert; @@ -280,4 +282,50 @@ public class FileUploadUtils } return extension; } + + /** + * 生成合并后的文件路径 + * + * @param baseDir 文件存储根目录 + * @param fileName 上传的文件名 + * @return 合并后文件的完整路径 + */ + public static String generateMergedFilePath(String baseDir, String fileName) { + // 获取当前日期路径 + String datePath = DateUtil.today().replace("-", "/"); + + // 获取文件的基本名称和扩展名 + String baseName = StrUtil.subBefore(fileName, ".", true); + String extension = StrUtil.subAfter(fileName, ".", true); + + // 生成唯一文件名,使用时间戳 + String uniqueFileName = baseName + "_" + System.currentTimeMillis() + "." + extension; + + // 合并文件路径: baseDir/yyyy/MM/dd/uploadId/uniqueFileName + String mergedFilePath = Paths.get(baseDir, datePath, uniqueFileName).toString(); + + return mergedFilePath; + } + + + /** + * 获取文件名称 + * + * @param baseDir 文件存储根目录 + * @param fileNames 上传的文件名 + * @return 合并后文件的完整路径 + */ + public static String getFilePath(String baseDir, String fileNames) { + String extension = StrUtil.subAfter(fileNames, ".", true); + + String fileName = StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), + FilenameUtils.getBaseName(fileNames), Seq.getId(Seq.uploadSeqType), extension);; + + try { + return getPathFileName(baseDir, fileName); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } } From f0a14bcd3c733323adf0f6c320f8d6553193e30b Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Thu, 29 Aug 2024 22:01:03 +0800 Subject: [PATCH 06/36] =?UTF-8?q?1=E3=80=81=E5=8F=91=E5=B8=83=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=B5=81=E7=A8=8B-=E5=85=B3=E8=81=94=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=BB=86=E8=8A=82=E8=B0=83=E6=95=B4=202=E3=80=81?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CommonController.java | 44 +++-- .../document/DocumentController.java | 13 +- .../controller/tool/AttachmentController.java | 105 ++++++++++++ .../web/controller/tool/ToolController.java | 20 +++ .../com/rzdata/web/domain/Attachment.java | 83 +++++++++ .../java/com/rzdata/web/domain/Document.java | 27 +++ .../main/java/com/rzdata/web/domain/Tool.java | 3 + .../rzdata/web/mapper/AttachmentMapper.java | 71 ++++++++ .../com/rzdata/web/mapper/DocumentMapper.java | 10 +- .../web/service/IAttachmentService.java | 70 ++++++++ .../rzdata/web/service/IDocumentService.java | 12 ++ .../com/rzdata/web/service/IToolService.java | 14 ++ .../service/impl/AttachmentServiceImpl.java | 117 +++++++++++++ .../web/service/impl/DocumentServiceImpl.java | 149 ++++++++++++++-- .../web/service/impl/ToolServiceImpl.java | 59 ++++++- .../resources/mapper/AttachmentMapper.xml | 161 ++++++++++++++++++ .../main/resources/mapper/DocumentMapper.xml | 69 ++++++-- .../com/rzdata/common/constant/Constants.java | 13 ++ .../common/utils/file/FileUploadUtils.java | 8 + 19 files changed, 995 insertions(+), 53 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java create mode 100644 tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 9bdf2ac..025075a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -1,18 +1,12 @@ package com.rzdata.web.controller.common; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; +import com.rzdata.common.config.JaConfig; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.domain.AjaxResult; +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 org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -21,13 +15,14 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import com.rzdata.common.config.JaConfig; -import com.rzdata.common.constant.Constants; -import com.rzdata.common.core.domain.AjaxResult; -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 javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.util.*; /** * 通用请求处理 @@ -92,7 +87,8 @@ public class CommonController String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); - ajax.put("fileName", fileName); + ajax.put("filePath", fileName); + ajax.put("suffixType", FileUploadUtils.extractSuffix(fileName)); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; @@ -220,8 +216,10 @@ public class CommonController Map response = new HashMap<>(); String url = serverConfig.getUrl() + fileNamePath; response.put("url", url); - response.put("fileUrl", finalFilePath); - response.put("fileNamePath", fileNamePath); + response.put("filePath", fileNamePath); + response.put("suffixType", FileUploadUtils.extractSuffix(fileNamePath)); + response.put("newFileName", FileUtils.getName(fileNamePath)); + response.put("originalFilename", fileName); return ResponseEntity.ok(response); } catch (IOException e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java index 789ed60..489706b 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java @@ -10,7 +10,6 @@ import com.rzdata.common.utils.poi.ExcelUtil; import com.rzdata.web.domain.Document; import com.rzdata.web.service.IDocumentService; 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; @@ -88,10 +87,20 @@ public class DocumentController extends BaseController /** * 删除【文档资源信息】 */ - @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) + @Log(title = "【逻辑删除-文档资源信息】", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(documentService.deleteDocumentByIds(ids)); } + + /** + * 发布文档 + */ + @Log(title = "【发布逻辑】", businessType = BusinessType.UPDATE) + @PutMapping("/pushDoc/{ids}") + public AjaxResult pushDoc(@PathVariable String[] ids) + { + return toAjax(documentService.pushDoc(ids)); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java new file mode 100644 index 0000000..614ebb0 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java @@ -0,0 +1,105 @@ +package com.rzdata.web.controller.tool; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.service.IAttachmentService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.common.core.page.TableDataInfo; + +/** + * 附件Controller + * + * @author panchichun + * @date 2024-08-28 + */ +@RestController +@RequestMapping("/system/attachment") +public class AttachmentController extends BaseController +{ + @Autowired + private IAttachmentService attachmentService; + + /** + * 查询附件列表 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:list')") + @GetMapping("/list") + public TableDataInfo list(Attachment attachment) + { + startPage(); + List list = attachmentService.selectAttachmentList(attachment); + return getDataTable(list); + } + + /** + * 导出附件列表 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:export')") + @Log(title = "附件", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Attachment attachment) + { + List list = attachmentService.selectAttachmentList(attachment); + ExcelUtil util = new ExcelUtil(Attachment.class); + util.exportExcel(response, list, "附件数据"); + } + + /** + * 获取附件详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(attachmentService.selectAttachmentById(id)); + } + + /** + * 新增附件 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:add')") + @Log(title = "附件", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Attachment attachment) + { + return toAjax(attachmentService.insertAttachment(attachment)); + } + + /** + * 修改附件 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:edit')") + @Log(title = "附件", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Attachment attachment) + { + return toAjax(attachmentService.updateAttachment(attachment)); + } + + /** + * 删除附件 + */ + @PreAuthorize("@ss.hasPermi('system:attachment:remove')") + @Log(title = "附件", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(attachmentService.deleteAttachmentByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 418c75b..949ed17 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -1,5 +1,6 @@ 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; @@ -14,7 +15,9 @@ import com.rzdata.common.utils.SecurityUtils; import com.rzdata.common.utils.StringUtils; import com.rzdata.common.utils.poi.ExcelUtil; import com.rzdata.system.service.ISysDeptService; +import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; +import com.rzdata.web.service.IDocumentService; import com.rzdata.web.service.IToolService; import com.rzdata.web.service.IUseApplyService; import com.rzdata.web.service.WorkflowService; @@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 工具信息Controller @@ -48,6 +52,10 @@ public class ToolController extends BaseController @Autowired private ISysDeptService iSysDeptService; + + @Autowired + private IDocumentService iDocumentService; + /** * 查询工具信息列表 */ @@ -136,14 +144,26 @@ public class ToolController extends BaseController if (add) { tTool.setProcInstId(processInstanceModel.getProcInstId()); toolService.insertTool(tTool); + //保存文档和附件 + toolService.addDocAndAtt(tTool); }else if (BooleanUtil.isTrue(tTool.getEditStatus())){ toolService.updateTool(tTool); + //删除文档和附件 + toolService.deleteDocAndAtt(tTool); + //保存文档和附件 + toolService.addDocAndAtt(tTool); }else { Tool tool = new Tool(); tool.setToolId(tTool.getToolId()); tool.setRecordStatus(tTool.getRecordStatus()); toolService.updateTool(tool); } + + //办结 + if(RecordStatusEnum.DONE.getCode().equals(tTool.getRecordStatus())){ + //更新文档状态 + toolService.updateDocPushStatus(tTool); + } return AjaxResult.success("操作成功",processInstanceModel); }else { return AjaxResult.error(); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java new file mode 100644 index 0000000..4561dbe --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java @@ -0,0 +1,83 @@ +package com.rzdata.web.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; +import java.util.List; + +/** + * 附件对象 t_attachment + * + * @author panchichun + * @date 2024-08-28 + */ +@Data +public class Attachment extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String fileType; + + /** 业务类型 */ + @Excel(name = "业务类型") + private String bizType; + + /** 文件URL */ + @Excel(name = "文件URL") + private String fileUrl; + + /** 文件源名称 */ + @Excel(name = "文件源名称") + private String fileOldName; + + /** 文件新名称 */ + @Excel(name = "文件新名称") + private String fileNewName; + + /** 文件后缀 */ + @Excel(name = "文件后缀") + private String suffixType; + + /** 文件大小 */ + @Excel(name = "文件大小") + private Long fileSize; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String businessId; + + /** 序号 */ + @Excel(name = "序号") + private Long sorts; + + /** 删除;1是, 0:否 */ + @Excel(name = "删除;1是, 0:否") + private String del; + + /** 创建时间 */ + @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; + + /** 失效时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date failureTime; + + private List businessIds; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index ee1684a..92e8bd8 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -6,6 +6,8 @@ import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.List; + /** * 【请填写功能名称】对象 t_document * @@ -58,4 +60,29 @@ public class Document extends BaseEntity { /** 文档分类id */ @Excel(name = "文档分类id") private String docCategoryId; + + /** 创建人id */ + private String createById; + /** 更新人id */ + private String updateById; + /** 逻辑删除(1:删除,0:未删除) */ + private String isDeleted; + + /** 主键 **/ + private List ids; + + /** 附件名称 **/ + private Attachment attachment; + + /** 关联工具id对象 */ + private String toolId; + /** + * 工具名称 + */ + private String toolName; + /** 工具信息 **/ + private Tool tool; + + /** 文档部门名称 **/ + private String docRespDeptName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 89abbdc..c6761c6 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -86,6 +86,7 @@ public class Tool extends BaseEntity private BpmClientInputModelBo bpmClientInputModel; + /** done:办结,doing:进行中**/ private String recordStatus; private Boolean editStatus; @@ -101,4 +102,6 @@ public class Tool extends BaseEntity private Boolean downloadStatus; private List excludeFields; + + private List documentList; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java new file mode 100644 index 0000000..298ac70 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java @@ -0,0 +1,71 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.Attachment; + +import java.util.List; + +/** + * 附件Mapper接口 + * + * @author panchichun + * @date 2024-08-28 + */ +public interface AttachmentMapper +{ + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + public Attachment selectAttachmentById(String id); + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件集合 + */ + public List selectAttachmentList(Attachment attachment); + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int insertAttachment(Attachment attachment); + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int updateAttachment(Attachment attachment); + + /** + * 根据业务id更新附件 + * @param attachment + * @return + */ + public int updateAttachmentByBusinessId(Attachment attachment); + + /** + * 删除附件 + * + * @param id 附件主键 + * @return 结果 + */ + public int deleteAttachmentById(String id); + + /** + * 批量删除附件 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAttachmentByIds(String[] ids); + + public int deleteAttachmentByBusinessId(List list); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java index 6fb44b1..331e109 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java @@ -53,10 +53,14 @@ public interface DocumentMapper public int deleteDocumentById(String id); /** - * 批量删除【请填写功能名称】 + * 逻辑删除 * - * @param ids 需要删除的数据主键集合 + * @param Document 需要删除的数据主键集合 * @return 结果 */ - public int deleteDocumentByIds(String[] ids); + public int isDeleteDocumentByIds(Document Document); + + public int updatePushDoc(Document doc); + + public int batchDeleteById(List list); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java new file mode 100644 index 0000000..808c432 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java @@ -0,0 +1,70 @@ +package com.rzdata.web.service; + +import com.rzdata.web.domain.Attachment; + +import java.util.List; + +/** + * 附件Service接口 + * + * @author panchichun + * @date 2024-08-28 + */ +public interface IAttachmentService +{ + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + public Attachment selectAttachmentById(String id); + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件集合 + */ + public List selectAttachmentList(Attachment attachment); + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int insertAttachment(Attachment attachment); + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + public int updateAttachment(Attachment attachment); + public int updateAttachmentByBusinessId(Attachment attachment); + + /** + * 批量删除附件 + * + * @param ids 需要删除的附件主键集合 + * @return 结果 + */ + public int deleteAttachmentByIds(String[] ids); + + /** + * 根据业务id批量删除 + * @param businessIds + * @return + */ + public int deleteAttachmentByBusinessId(List businessIds); + + /** + * 删除附件信息 + * + * @param id 附件主键 + * @return 结果 + */ + public int deleteAttachmentById(String id); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java index c101578..43b1c0a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java @@ -28,6 +28,9 @@ public interface IDocumentService */ public List selectDocumentList(Document document); + + public List selectDocumentListAll(Document document); + /** * 新增【请填写功能名称】 * @@ -62,4 +65,13 @@ public interface IDocumentService * @return 结果 */ public int deleteDocumentById(String id); + + /** + * 发布文档 + * @param ids + * @return + */ + int pushDoc(String[] ids); + + public int batchDeleteById(List docIds); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index 3c5b240..0c740e6 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -63,4 +63,18 @@ public interface IToolService * @return 结果 */ public int deleteToolByToolId(String toolId); + + /** + * 删除文档和附件 + * @param tool + */ + public void deleteDocAndAtt(Tool tool); + + /** + * 新增文档和附件 + * @param tool + */ + public void addDocAndAtt(Tool tool); + + void updateDocPushStatus(Tool tTool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java new file mode 100644 index 0000000..3b33e73 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java @@ -0,0 +1,117 @@ +package com.rzdata.web.service.impl; + +import java.util.List; + +import com.rzdata.web.domain.Attachment; +import com.rzdata.web.mapper.AttachmentMapper; +import com.rzdata.web.service.IAttachmentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 附件Service业务层处理 + * + * @author panchichun + * @date 2024-08-28 + */ +@Service +public class AttachmentServiceImpl implements IAttachmentService +{ + @Autowired + private AttachmentMapper attachmentMapper; + + /** + * 查询附件 + * + * @param id 附件主键 + * @return 附件 + */ + @Override + public Attachment selectAttachmentById(String id) + { + return attachmentMapper.selectAttachmentById(id); + } + + /** + * 查询附件列表 + * + * @param attachment 附件 + * @return 附件 + */ + @Override + public List selectAttachmentList(Attachment attachment) + { + return attachmentMapper.selectAttachmentList(attachment); + } + + /** + * 新增附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int insertAttachment(Attachment attachment) + { + return attachmentMapper.insertAttachment(attachment); + } + + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int updateAttachment(Attachment attachment) + { + return attachmentMapper.updateAttachment(attachment); + } + /** + * 修改附件 + * + * @param attachment 附件 + * @return 结果 + */ + @Override + public int updateAttachmentByBusinessId(Attachment attachment) + { + return attachmentMapper.updateAttachmentByBusinessId(attachment); + } + + /** + * 批量删除附件 + * + * @param ids 需要删除的附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentByIds(String[] ids) + { + return attachmentMapper.deleteAttachmentByIds(ids); + } + + /** + * 批量删除附件 + * + * @param ids 需要删除的附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentByBusinessId(List businessIds) + { + return attachmentMapper.deleteAttachmentByBusinessId(businessIds); + } + + /** + * 删除附件信息 + * + * @param id 附件主键 + * @return 结果 + */ + @Override + public int deleteAttachmentById(String id) + { + return attachmentMapper.deleteAttachmentById(id); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index e21dbf1..4959a06 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -1,14 +1,25 @@ package com.rzdata.web.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.rzdata.common.constant.Constants; import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.Attachment; import com.rzdata.web.domain.Document; +import com.rzdata.web.domain.Tool; import com.rzdata.web.mapper.DocumentMapper; import com.rzdata.web.service.IDocumentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 【请填写功能名称】Service业务层处理 @@ -21,6 +32,10 @@ public class DocumentServiceImpl implements IDocumentService { @Autowired private DocumentMapper documentMapper; + @Autowired + private AttachmentServiceImpl attachmentService; + @Autowired + private ToolServiceImpl toolService; /** * 查询【请填写功能名称】 @@ -31,19 +46,65 @@ public class DocumentServiceImpl implements IDocumentService @Override public Document selectDocumentById(String docId) { - return documentMapper.selectDocumentById(docId); + Document document = documentMapper.selectDocumentById(docId); + if(StrUtil.isNotBlank(document.getToolId())){ + Tool tool = toolService.selectToolByToolId(document.getToolId()); + document.setToolName(tool.getToolName()); + } + Attachment attachment = new Attachment(); + attachment.setBusinessId(document.getDocId()); + attachment.setDel(Constants.STR_ZERO); + List attachments = attachmentService.selectAttachmentList(attachment); + if(CollUtil.isNotEmpty(attachments)){ + document.setAttachment(attachments.get(0)); + } + return document; } /** * 查询【请填写功能名称】列表 * - * @param Document 【请填写功能名称】 + * @param document 【请填写功能名称】 * @return 【请填写功能名称】 */ @Override - public List selectDocumentList(Document Document) + public List selectDocumentList(Document document) { - return documentMapper.selectDocumentList(Document); + List documents = documentMapper.selectDocumentList(document); + if(CollUtil.isEmpty(documents)){ + return documents; + } + List docIds = documents.stream().map(Document::getDocId).collect(Collectors.toList()); + Attachment attachment = new Attachment(); + attachment.setBusinessIds(docIds); + attachment.setDel(Constants.STR_ZERO); + List attachments = attachmentService.selectAttachmentList(attachment); + if(CollUtil.isEmpty(attachments)){ + return documents; + } + for (Document doc : documents) { + for (Attachment att : attachments) { + if(doc.getDocId().equals(att.getBusinessId())){ + doc.setAttachment(att); + break; + } + } + } + return documents; + } + + + /** + * 查询【请填写功能名称】列表 + * + * @param document 【请填写功能名称】 + * @return 【请填写功能名称】 + */ + @Override + public List selectDocumentListAll(Document document) + { + List documents = documentMapper.selectDocumentList(document); + return documents; } /** @@ -60,11 +121,26 @@ public class DocumentServiceImpl implements IDocumentService return documentMapper.insertDocument(document); } + @Override + @Transactional(rollbackFor = Exception.class) public String saveDocument(Document document){ - document.setCreateTime(DateUtils.getNowDate()); String docId = IdUtil.simpleUUID(); document.setDocId(docId); + document.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + document.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + document.setIsDeleted(Constants.STR_ZERO); + document.setCreateTime(new Date()); int result = documentMapper.insertDocument(document); + 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); + } if(result > 0){ return docId; } @@ -74,14 +150,36 @@ public class DocumentServiceImpl implements IDocumentService /** * 修改【请填写功能名称】 * - * @param Document 【请填写功能名称】 + * @param document 【请填写功能名称】 * @return 结果 */ @Override - public int updateDocument(Document Document) + @Transactional(rollbackFor = Exception.class) + public int updateDocument(Document document) { - Document.setUpdateTime(DateUtils.getNowDate()); - return documentMapper.updateDocument(Document); + document.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + document.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + document.setUpdateTime(new Date()); + int result = documentMapper.updateDocument(document); + + 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); + } + + return result; } /** @@ -93,7 +191,12 @@ public class DocumentServiceImpl implements IDocumentService @Override public int deleteDocumentByIds(String[] ids) { - return documentMapper.deleteDocumentByIds(ids); + Document doc = new Document(); + doc.setIds(Arrays.asList(ids)); + doc.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); + doc.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + doc.setUpdateTime(new Date()); + return documentMapper.isDeleteDocumentByIds(doc); } /** @@ -107,5 +210,31 @@ public class DocumentServiceImpl implements IDocumentService { return documentMapper.deleteDocumentById(id); } + + /** + * 发布文档 + * @param ids + * @return + */ + @Override + public int pushDoc(String[] ids) { + Document doc = new Document(); + doc.setIds(Arrays.asList(ids)); + 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); + } + + /** + * 删除附件 + * @param docIds + * @return + */ + @Override + public int batchDeleteById(List docIds){ + return documentMapper.batchDeleteById(docIds); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 742a0e9..6fac579 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -1,17 +1,23 @@ package com.rzdata.web.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; import com.rzdata.common.constant.Constants; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; import com.rzdata.web.mapper.ToolMapper; +import com.rzdata.web.service.IAttachmentService; +import com.rzdata.web.service.IDocumentService; import com.rzdata.web.service.IToolService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** * 工具信息Service业务层处理 @@ -25,6 +31,12 @@ public class ToolServiceImpl implements IToolService @Autowired private ToolMapper toolMapper; + @Autowired + private IAttachmentService iAttachmentService; + + @Autowired + private IDocumentService documentService; + /** * 查询工具信息 * @@ -84,11 +96,43 @@ public class ToolServiceImpl implements IToolService * @return 结果 */ @Override + @Transactional(rollbackFor = Exception.class) public int updateTool(Tool tool) { tool.setUpdateBy(SecurityUtils.getUserId().toString()); tool.setUpdateTime(DateUtils.getNowDate()); - return toolMapper.updateTool(tool); + int result = toolMapper.updateTool(tool); + deleteDocAndAtt(tool); + addDocAndAtt(tool); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDocAndAtt(Tool tool) { + List documentList = tool.getDocumentList(); + if(CollUtil.isEmpty(documentList)){ + return; + } + //先删除,后新增 + List docIds = documentList.stream().map(Document::getDocId).collect(Collectors.toList()); + iAttachmentService.deleteAttachmentByBusinessId(docIds); + documentService.batchDeleteById(docIds); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addDocAndAtt(Tool tool) { + List documentList = tool.getDocumentList(); + if(CollUtil.isEmpty(documentList)){ + return; + } + //新增 + for (Document document : documentList) { + document.setToolId(tool.getToolId()); + document.setDocStatus(Constants.DOC_STATUS_SHZ); + documentService.saveDocument(document); + } } /** @@ -114,4 +158,17 @@ public class ToolServiceImpl implements IToolService { return toolMapper.deleteToolByToolId(toolId); } + + @Override + public void updateDocPushStatus(Tool tTool) { + Document document = new Document(); + document.setToolId(tTool.getToolId()); + List documents = documentService.selectDocumentListAll(document); + if(CollUtil.isEmpty(documents)){ + return; + } + List ids = documents.stream().map(Document::getDocId).collect(Collectors.toList()); + String[] idsArray = ids.stream().toArray(String[]::new); + documentService.pushDoc(idsArray); + } } diff --git a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml new file mode 100644 index 0000000..7a27c95 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + insert into t_attachment + + 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, + + + #{id}, + #{bizType}, + #{fileUrl}, + #{fileOldName}, + #{fileNewName}, + #{suffixType}, + #{fileSize}, + #{businessId}, + #{sorts}, + #{remark}, + #{del}, + #{createBy}, + #{createDate}, + #{updateBy}, + #{updateDate}, + #{failureTime}, + + + + + update t_attachment + + biz_type = #{bizType}, + file_url = #{fileUrl}, + file_old_name = #{fileOldName}, + file_new_name = #{fileNewName}, + suffix_type = #{suffixType}, + file_size = #{fileSize}, + business_id = #{businessId}, + sorts = #{sorts}, + remark = #{remark}, + del = #{del}, + create_by = #{createBy}, + create_date = #{createDate}, + update_by = #{updateBy}, + update_date = #{updateDate}, + failure_time = #{failureTime}, + + where id = #{id} + + + + + update t_attachment + + biz_type = #{bizType}, + file_url = #{fileUrl}, + file_old_name = #{fileOldName}, + file_new_name = #{fileNewName}, + suffix_type = #{suffixType}, + file_size = #{fileSize}, + sorts = #{sorts}, + remark = #{remark}, + del = #{del}, + create_by = #{createBy}, + create_date = #{createDate}, + update_by = #{updateBy}, + update_date = #{updateDate}, + failure_time = #{failureTime}, + + where business_id = #{businessId} + + + + delete from t_attachment where id = #{id} + + + + delete from t_attachment where id in + + #{id} + + + + + delete from t_attachment where business_id in + + #{id} + + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index d2079e3..eb88460 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -20,26 +20,36 @@ + + + + select doc_id, doc_code, doc_name, doc_type, doc_principals, doc_resp_dept, doc_source, doc_status, doc_url, create_by, create_time, - update_by, update_time, remark, doc_category_id from t_document + update_by, update_time, remark, doc_category_id,is_deleted,tool_id from t_document + select td.*,su.nick_name + from t_discussions td + left join sys_user su on su.user_id = td.create_by_id + + and td.business_id = #{businessId} + and td.type = #{type} + and td.content = #{content} + and td.is_delete = #{isDelete} + and td.create_by_id = #{createById} + and td.update_by_id = #{updateById} + and td.is_delete = '0' + + + + + + + insert into t_discussions + + id, + business_id, + type, + content, + is_delete, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{businessId}, + #{type}, + #{content}, + #{isDelete}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_discussions + + business_id = #{businessId}, + type = #{type}, + content = #{content}, + is_delete = #{isDelete}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_discussions where id = #{id} + + + + delete from t_discussions where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index eb88460..db63e8c 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -38,15 +38,21 @@ 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 - and td.doc_code = #{docCode} + and td.doc_code like concat('%', #{docCode}, '%') and td.doc_name like concat('%', #{docName}, '%') and td.doc_type = #{docType} - and td.doc_principals = #{docPrincipals} + and td.doc_principals like concat('%', #{docPrincipals}, '%') and td.doc_resp_dept = #{docRespDept} and td.doc_source = #{docSource} and td.doc_status = #{docStatus} and td.tool_id = #{toolId} and td.doc_category_id = #{docCategoryId} + + AND date_format(td.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + + + AND date_format(td.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and td.is_deleted = '0' order by td.create_time desc diff --git a/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml new file mode 100644 index 0000000..1badccf --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + select id, discussion_id, content, is_delete, create_by, create_by_id, create_time, update_by, update_by_id, update_time from t_replies + + + + + + + + insert into t_replies + + id, + discussion_id, + content, + is_delete, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{discussionId}, + #{content}, + #{isDelete}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_replies + + discussion_id = #{discussionId}, + content = #{content}, + is_delete = #{isDelete}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_replies where id = #{id} + + + + delete from t_replies where id in + + #{id} + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index fff079c..cce5287 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -145,8 +145,11 @@ diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java index 1b22eb3..cf842dc 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java @@ -42,7 +42,6 @@ public class SysDeptServiceImpl implements ISysDeptService * @return 部门信息集合 */ @Override - @DataScope(deptAlias = "d") public List selectDeptList(SysDept dept) { return deptMapper.selectDeptList(dept); @@ -57,7 +56,7 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public List selectDeptTreeList(SysDept dept) { - List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + List depts = this.selectDeptList(dept); return buildDeptTreeSelect(depts); } diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java index 0381b1f..2fd30e8 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysUserServiceImpl.java @@ -69,7 +69,6 @@ public class SysUserServiceImpl implements ISysUserService * @return 用户信息集合信息 */ @Override - @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { return userMapper.selectUserList(user); From 9331b57b5828523a4cfb51d9248c4ad9132a194c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=B4=E6=9C=97?= <464174023@qq.com> Date: Sat, 31 Aug 2024 15:18:27 +0800 Subject: [PATCH 08/36] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E4=B8=9A=E5=8A=A1=E5=AD=97=E5=85=B8=EF=BC=8C=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=E5=AF=BC=E5=87=BA=E6=8C=89=E9=92=AE=EF=BC=9B=E5=9C=A8?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E7=B1=BB=E5=9E=8B=E5=88=97=E8=A1=A8=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E6=96=B0=E5=A2=9E=E3=80=81=E4=BF=AE=E6=94=B9=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=EF=BC=9B=20=E7=82=B9=E5=87=BB=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=BF=9B=E5=85=A5=E5=AD=97=E5=85=B8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=86=85=E5=8F=AF=E4=BB=A5=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysDictTypeController.java | 10 ++++++++ .../system/mapper/SysDictTypeMapper.java | 8 ++++++ .../system/service/ISysDictTypeService.java | 8 ++++++ .../service/impl/SysDictTypeServiceImpl.java | 12 +++++++++ .../mapper/system/SysDictTypeMapper.xml | 25 +++++++++++++++++++ 5 files changed, 63 insertions(+) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java index c3f989d..62ecfe0 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java @@ -43,6 +43,16 @@ public class SysDictTypeController extends BaseController return getDataTable(list); } + + @PreAuthorize("@ss.hasPermi('system:bizlist:list')") + @GetMapping("/bizlist") + public TableDataInfo bizlist(SysDictType dictType) + { + startPage(); + List list = dictTypeService.selectBizDictTypeList(dictType); + return getDataTable(list); + } + @Log(title = "字典类型", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:dict:export')") @PostMapping("/export") diff --git a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java index d9a5e66..059ba8c 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/mapper/SysDictTypeMapper.java @@ -18,6 +18,14 @@ public interface SysDictTypeMapper */ public List selectDictTypeList(SysDictType dictType); + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectBizDictTypeList(SysDictType dictType); + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java index fc3d69c..d88c228 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/ISysDictTypeService.java @@ -19,6 +19,14 @@ public interface ISysDictTypeService */ public List selectDictTypeList(SysDictType dictType); + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectBizDictTypeList(SysDictType dictType); + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java index a11a689..49909aa 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDictTypeServiceImpl.java @@ -53,6 +53,18 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService return dictTypeMapper.selectDictTypeList(dictType); } + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectBizDictTypeList(SysDictType dictType) + { + return dictTypeMapper.selectBizDictTypeList(dictType); + } + /** * 根据所有字典类型 * diff --git a/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml index 498c32c..7655e2a 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -40,6 +40,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + select + tdc.tool_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 + + + AND date_format(tdc.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + + + AND date_format(tdc.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + + + group by tdc.tool_id,tl.tool_code,tl.tool_name + + + + + + insert into t_download_count + + id, + tool_id, + create_by, + create_by_id, + create_time, + update_by, + update_by_id, + update_time, + + + #{id}, + #{toolId}, + #{createBy}, + #{createById}, + #{createTime}, + #{updateBy}, + #{updateById}, + #{updateTime}, + + + + + update t_download_count + + tool_id = #{toolId}, + create_by = #{createBy}, + create_by_id = #{createById}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_by_id = #{updateById}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from t_download_count where id = #{id} + + + + delete from t_download_count where id in + + #{id} + + + + + + + \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index cce5287..510d5b2 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -193,4 +193,14 @@ #{toolId} + + + + diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml new file mode 100644 index 0000000..f1215e1 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + insert into tz_message + + id, + receiver_id, + states, + content, + deleted, + create_by, + create_time, + update_by, + update_time, + remark, + create_by_id, + update_by_id, + + + #{id}, + #{receiverId}, + #{states}, + #{content}, + #{deleted}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{create_by_id}, + #{update_by_id}, + + + + + update tz_message + + receiver_id = #{receiverId}, + states = #{states}, + content = #{content}, + deleted = #{deleted}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + create_by_id = #{createById}, + update_by_id = #{updateById}, + + where id = #{id} + + + + delete from tz_message where id = #{id} + + + + delete from tz_message where id in + + #{id} + + + + + update tz_message set states = '2' where create_by_id = #{createById} + + + + + insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_time + values + + #{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy}, #{item.createTime} + + + \ No newline at end of file From 7820d4907f4101a3a678d76253ca808febbed78a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=B4=E6=9C=97?= <464174023@qq.com> Date: Sat, 31 Aug 2024 17:58:10 +0800 Subject: [PATCH 10/36] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../document/DocumentController.java | 10 ++++ .../com/rzdata/web/mapper/DocumentMapper.java | 5 ++ .../rzdata/web/service/IDocumentService.java | 3 ++ .../web/service/impl/DocumentServiceImpl.java | 49 +++++++++++++++++-- .../main/resources/mapper/DocumentMapper.xml | 10 ++++ 5 files changed, 74 insertions(+), 3 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java index 73ae114..cc014b2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java @@ -110,4 +110,14 @@ public class DocumentController extends BaseController { return toAjax(documentService.pushDoc(ids)); } + + + /** + * 文档统计,涉及文档类别统计、文档来源统计 + */ + @GetMapping("/statistics") + public AjaxResult statistics() + { + return AjaxResult.success(documentService.statistics()); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java index 331e109..f42ac8a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DocumentMapper.java @@ -3,6 +3,7 @@ package com.rzdata.web.mapper; import com.rzdata.web.domain.Document; import java.util.List; +import java.util.Map; /** * 【请填写功能名称】Mapper接口 @@ -63,4 +64,8 @@ public interface DocumentMapper public int updatePushDoc(Document doc); public int batchDeleteById(List list); + + List> countType(); + + List> countSource(); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java index 43b1c0a..7f77659 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java @@ -3,6 +3,7 @@ package com.rzdata.web.service; import com.rzdata.web.domain.Document; import java.util.List; +import java.util.Map; /** * 【请填写功能名称】Service接口 @@ -74,4 +75,6 @@ public interface IDocumentService int pushDoc(String[] ids); public int batchDeleteById(List docIds); + + Map statistics(); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 4959a06..56f87e0 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -5,8 +5,10 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.domain.entity.SysDictData; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.system.service.ISysDictTypeService; import com.rzdata.web.domain.Attachment; import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; @@ -16,9 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +37,9 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private ToolServiceImpl toolService; + @Autowired + private ISysDictTypeService sysDictTypeService; + /** * 查询【请填写功能名称】 * @@ -236,5 +239,45 @@ public class DocumentServiceImpl implements IDocumentService public int batchDeleteById(List docIds){ return documentMapper.batchDeleteById(docIds); } + + @Override + public Map statistics() { + Map result = new HashMap<>(); + List> countType = this.documentMapper.countType(); + List> countSource = this.documentMapper.countSource(); + //组织数据 + assembleData(countType, countSource); + result.put("countType", countType); + result.put("countSource", countSource); + return result; + } + + private void assembleData(List> countType, List> countSource) { + // + List toolTypeList = sysDictTypeService.selectDictDataByType("doc_class"); + List toolSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + if(CollUtil.isNotEmpty(countType)){ + for (Map map : countType) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : toolTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + if(CollUtil.isNotEmpty(countSource)){ + for (Map map : countSource) { + map.put("value", map.get("statistics")); + for (SysDictData sysDictData : toolSourceList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + map.put("name", sysDictData.getDictLabel()); + break; + } + } + } + } + } } diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index db63e8c..5337fce 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -163,4 +163,14 @@ + + + + + + \ No newline at end of file From 10ee4fbc4d23200a9b4d7494315e9bd283ebed70 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Sun, 1 Sep 2024 10:58:06 +0800 Subject: [PATCH 11/36] =?UTF-8?q?1=E3=80=81=E6=96=87=E6=A1=A3=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4=202=E3=80=81?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4=203?= =?UTF-8?q?=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=204=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A2=84=E8=A7=88=E5=85=B3=E9=97=AD=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E6=97=B6=E8=A7=86=E5=B1=8F=E6=92=AD=E6=94=BE=E6=9A=82?= =?UTF-8?q?=E5=81=9C=E4=B8=8D=E4=BA=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/rzdata/web/domain/Document.java | 8 ++++++ .../com/rzdata/web/domain/DownloadCount.java | 1 + .../web/service/impl/DocumentServiceImpl.java | 28 +++++++++++++++++++ .../impl/DownloadCountServiceImpl.java | 9 ++++++ .../main/resources/mapper/DocumentMapper.xml | 3 ++ .../resources/mapper/DownloadCountMapper.xml | 3 +- .../main/resources/mapper/UseApplyMapper.xml | 2 +- .../com/rzdata/common/constant/Constants.java | 4 +++ 8 files changed, 56 insertions(+), 2 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index 5bae6e9..ce34d8e 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -96,4 +96,12 @@ public class Document extends BaseEntity { private List excludeFields; + + private Boolean downloadCheck; + + private Boolean downloadStatus; + + private Boolean permissionCheck; + + private Boolean permission; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java index 375eda6..ba94060 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java @@ -38,5 +38,6 @@ public class DownloadCount extends BaseEntity private String toolName; /** 工具下载数量 */ private String toolDownNum; + private String nickName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 56f87e0..c1a82e7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -1,11 +1,15 @@ package com.rzdata.web.service.impl; import cn.hutool.core.collection.CollUtil; +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.constant.Constants; import com.rzdata.common.core.domain.entity.SysDictData; +import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.core.domain.model.LoginUser; +import com.rzdata.common.enums.RecordStatusEnum; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.system.service.ISysDictTypeService; @@ -14,6 +18,7 @@ import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; import com.rzdata.web.mapper.DocumentMapper; import com.rzdata.web.service.IDocumentService; +import com.rzdata.web.service.IUseApplyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -37,6 +42,9 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private ToolServiceImpl toolService; + @Autowired + private IUseApplyService iUseApplyService; + @Autowired private ISysDictTypeService sysDictTypeService; @@ -73,6 +81,11 @@ public class DocumentServiceImpl implements IDocumentService @Override public List selectDocumentList(Document document) { + if (BooleanUtil.isTrue(document.getPermissionCheck())) { + if(!SysUser.isAdmin(SecurityUtils.getUserId())){ + document.setPermission(SecurityUtils.hasPermi(Constants.DOC_VIEW_PERMISSION)); + } + } List documents = documentMapper.selectDocumentList(document); if(CollUtil.isEmpty(documents)){ return documents; @@ -93,6 +106,21 @@ public class DocumentServiceImpl implements IDocumentService } } } + + //前端传传参开启下载权限验证 + if (BooleanUtil.isTrue(document.getDownloadCheck())) { + String userId = SecurityUtils.getUserId().toString(); + for (Document dc: documents) { + //文档中 是创建人 或者 配置了下载权限 + 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.checkUseApply(dc.getToolId(),userId)){ + downStatus = true; + } + dc.setDownloadStatus(downStatus); + } + } return documents; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java index a6b0a1b..1300816 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java @@ -1,7 +1,10 @@ package com.rzdata.web.service.impl; import java.util.List; + +import cn.hutool.core.lang.Snowflake; import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.SecurityUtils; import com.rzdata.web.domain.DownloadCount; import com.rzdata.web.mapper.DownloadCountMapper; import com.rzdata.web.service.IDownloadCountService; @@ -20,6 +23,9 @@ public class DownloadCountServiceImpl implements IDownloadCountService @Autowired private DownloadCountMapper downloadCountMapper; + @Autowired + private Snowflake snowflake; + /** * 查询工具下载统计 * @@ -53,7 +59,10 @@ public class DownloadCountServiceImpl implements IDownloadCountService @Override public int insertDownloadCount(DownloadCount downloadCount) { + downloadCount.setId(String.valueOf(snowflake.nextId())); downloadCount.setCreateTime(DateUtils.getNowDate()); + downloadCount.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + downloadCount.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); return downloadCountMapper.insertDownloadCount(downloadCount); } diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index 5337fce..45cbb02 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -53,6 +53,9 @@ AND date_format(td.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + + AND (td.create_by_id = #{createById} or td.doc_status = 'yfb') + and td.is_deleted = '0' order by td.create_time desc diff --git a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml index 662d966..7fc6b7b 100644 --- a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml @@ -16,6 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -95,7 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT count(*) FROM `t_use_apply_item` uai - left join `t_use_apply` ua on uai.apply_id = ua.id + 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} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index 6ee116b..d9bb90a 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -182,6 +182,7 @@ public class Constants public static final String DOWNLOAD_TOOL_PERMISSION = "download:done:tool"; + /** 文档-状态-已发布 **/ public static final String DOC_STATUS_YFB = "yfb"; /** 文档-状态-已上传 **/ @@ -195,4 +196,7 @@ public class Constants public static final String STR_ZERO = "0"; public static final String STR_ONE = "1"; + + public static final String DOC_DOWNLOAD_PERMISSION = "document:download"; + public static final String DOC_VIEW_PERMISSION = "document:query:data:all"; } From 2e06c76916b4d5c6c79b068a493f4cf400f59ddb Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Mon, 2 Sep 2024 08:39:58 +0800 Subject: [PATCH 12/36] update --- .../controller/tool/ToolApplyController.java | 175 ++++++++++++++++++ .../web/controller/tool/ToolController.java | 28 ++- .../controller/tool/UseApplyController.java | 167 ----------------- .../domain/{UseApply.java => ToolApply.java} | 16 +- ...eApplyMapper.java => ToolApplyMapper.java} | 30 +-- ...plyService.java => IToolApplyService.java} | 29 ++- .../com/rzdata/web/service/IToolService.java | 2 + .../rzdata/web/service/WorkflowService.java | 24 ++- .../web/service/impl/DocumentServiceImpl.java | 8 +- ...iceImpl.java => ToolApplyServiceImpl.java} | 65 ++++--- .../web/service/impl/ToolServiceImpl.java | 47 ++++- .../src/main/resources/application.yml | 2 +- ...UseApplyMapper.xml => ToolApplyMapper.xml} | 66 +++++-- .../com/rzdata/common/constant/Constants.java | 10 + 14 files changed, 393 insertions(+), 276 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java delete mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java rename tool-tech-admin/src/main/java/com/rzdata/web/domain/{UseApply.java => ToolApply.java} (71%) rename tool-tech-admin/src/main/java/com/rzdata/web/mapper/{UseApplyMapper.java => ToolApplyMapper.java} (53%) rename tool-tech-admin/src/main/java/com/rzdata/web/service/{IUseApplyService.java => IToolApplyService.java} (52%) rename tool-tech-admin/src/main/java/com/rzdata/web/service/impl/{UseApplyServiceImpl.java => ToolApplyServiceImpl.java} (57%) rename tool-tech-admin/src/main/resources/mapper/{UseApplyMapper.xml => ToolApplyMapper.xml} (58%) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java new file mode 100644 index 0000000..4361ccb --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java @@ -0,0 +1,175 @@ +package com.rzdata.web.controller.tool; + +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.blueland.bpmclient.model.BpmClientInputModel; +import com.blueland.bpmclient.model.ProcessInstanceModel; +import com.rzdata.common.annotation.Log; +import com.rzdata.common.constant.Constants; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.page.TableDataInfo; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.enums.RecordStatusEnum; +import com.rzdata.common.utils.DateUtils; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.web.domain.ToolApply; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; +import com.rzdata.web.service.IToolApplyService; +import com.rzdata.web.service.IUseApplyItemService; +import com.rzdata.web.service.WorkflowService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 申请Controller + * + * @author ja + * @date 2024-08-21 + */ +@RestController +@RequestMapping("/tool/apply") +public class ToolApplyController extends BaseController +{ + @Autowired + private IToolApplyService toolApplyService; + + @Autowired + private WorkflowService workflowService; + + @Autowired + private IUseApplyItemService useApplyItemService; + + + /** + * 查询使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:list')") + @GetMapping("/list") + public TableDataInfo list(ToolApply toolApply) + { + startPage(); + List list = toolApplyService.selectToolApplyList(toolApply); + return getDataTable(list); + } + + /** + * 获取工具信息详细信息 + */ + @GetMapping(value = "/bpmc/{bpmcId}") + public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) + { + return success(toolApplyService.getInfoByBpmcId(bpmcId)); + } + + /** + * 导出使用申请列表 + */ + @PreAuthorize("@ss.hasPermi('system:apply:export')") + @Log(title = "使用申请", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ToolApply toolApply) + { + List list = toolApplyService.selectToolApplyList(toolApply); + ExcelUtil util = new ExcelUtil(ToolApply.class); + util.exportExcel(response, list, "使用申请数据"); + } + + /** + * 获取使用申请详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:apply:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(toolApplyService.selectToolApplyById(id)); + } + + /** + * 新增使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ToolApply toolApply) + { + boolean add = false; + if (StringUtils.isEmpty(toolApply.getId())) { + toolApply.setId(IdUtil.simpleUUID()); + add = true; + } + ProcessInstanceModel processInstanceModel = null; + try { + if(StringUtils.equals(toolApply.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ + processInstanceModel = workflowService.saveExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + }else if (StringUtils.equals(toolApply.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ + processInstanceModel = workflowService.cancelExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + }else{ + processInstanceModel = workflowService.nextExecute(toolApply.getBpmClientInputModel(), toolApply.getId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + if (processInstanceModel != null && StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (add) { + BpmClientInputModelBo bpmClientInputModelBo = toolApply.getBpmClientInputModel(); + if(null != bpmClientInputModelBo){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + toolApply.setProcTitle(StrUtil.isNotEmpty(bpmClientInputModel.getWf_procTitle()) ? bpmClientInputModel.getWf_procTitle() : ""); + } + if(toolApply.getItemList().size() > 0){ + toolApply.setToolId(toolApply.getItemList().get(0).getToolId()); + } + toolApply.setApplyType(Constants.TOOL_APPLY_TYPE_USE); + toolApply.setProcInstId(processInstanceModel.getProcInstId()); + toolApplyService.insertToolApply(toolApply); + useApplyItemService.updateItemList(toolApply.getItemList(), toolApply.getId()); + }else if (BooleanUtil.isTrue(toolApply.getEditStatus())){ + toolApplyService.updateToolApply(toolApply); + useApplyItemService.updateItemList(toolApply.getItemList(), toolApply.getId()); + }else { + ToolApply updateStatus = new ToolApply(); + updateStatus.setId(toolApply.getId()); + updateStatus.setRecordStatus(toolApply.getRecordStatus()); + if("done".equals(toolApply.getRecordStatus())){ + toolApply.setEndTime(DateUtils.getNowDate()); + } + toolApplyService.updateToolApply(updateStatus); + } + //办结 + if(RecordStatusEnum.DONE.getCode().equals(toolApply)){ + //给消息中心发送消息 + toolApplyService.sendTzMessage(toolApply); + } + return AjaxResult.success("操作成功",processInstanceModel); + }else { + return AjaxResult.error(); + } + } + + /** + * 修改使用申请 + */ + @Log(title = "使用申请", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ToolApply toolApply) + { + return toAjax(toolApplyService.updateToolApply(toolApply)); + } + + /** + * 删除使用申请 + */ + @PreAuthorize("@ss.hasPermi('system:apply:remove')") + @Log(title = "使用申请", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(toolApplyService.deleteToolApplyByIds(ids)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 5fed35a..476d9a3 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -1,5 +1,6 @@ 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; @@ -10,14 +11,16 @@ import com.rzdata.common.core.domain.AjaxResult; import com.rzdata.common.core.page.TableDataInfo; import com.rzdata.common.enums.BusinessType; import com.rzdata.common.enums.RecordStatusEnum; +import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.common.utils.StringUtils; import com.rzdata.common.utils.poi.ExcelUtil; import com.rzdata.system.service.ISysDeptService; import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolApply; import com.rzdata.web.service.IDocumentService; +import com.rzdata.web.service.IToolApplyService; import com.rzdata.web.service.IToolService; -import com.rzdata.web.service.IUseApplyService; import com.rzdata.web.service.WorkflowService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -45,15 +48,17 @@ public class ToolController extends BaseController private WorkflowService workflowService; @Autowired - private IUseApplyService iUseApplyService; + private IToolApplyService iToolApplyService; @Autowired private ISysDeptService iSysDeptService; - @Autowired private IDocumentService iDocumentService; + @Autowired + private IToolApplyService toolApplyService; + /** * 查询工具信息列表 */ @@ -71,7 +76,7 @@ public class ToolController extends BaseController vo.setDownloadStatus(RecordStatusEnum.DONE.getCode().equals(vo.getRecordStatus())&& (userId.equals(vo.getCreateBy())|| SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION)|| - iUseApplyService.checkUseApply(vo.getToolId(),userId))); + iToolApplyService.checkToolApply(vo.getToolId(),userId))); } } return getDataTable(list); @@ -139,22 +144,31 @@ public class ToolController extends BaseController } catch (Exception e) { e.printStackTrace(); } - if (processInstanceModel!=null&&StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { + if (processInstanceModel != null && StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { if (add) { tTool.setProcInstId(processInstanceModel.getProcInstId()); toolService.insertTool(tTool); //保存文档和附件 toolService.addDocAndAtt(tTool); - }else if (BooleanUtil.isTrue(tTool.getEditStatus())){ + + //记录申请数据 + toolService.recordToolApply(tTool); + } else if (BooleanUtil.isTrue(tTool.getEditStatus())){ toolService.updateTool(tTool); //删除文档和附件 toolService.deleteDocAndAtt(tTool); //保存文档和附件 toolService.addDocAndAtt(tTool); - }else { + } else { Tool tool = new Tool(); tool.setToolId(tTool.getToolId()); tool.setRecordStatus(tTool.getRecordStatus()); + if("done".equals(tTool.getRecordStatus())){ + ToolApply toolApply = toolApplyService.getInfoByBpmcId(tTool.getProcInstId()); + toolApply.setRecordStatus(tTool.getRecordStatus()); + toolApply.setEndTime(DateUtils.getNowDate()); + toolApplyService.updateToolApply(toolApply); + } toolService.updateTool(tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java deleted file mode 100644 index f8483bd..0000000 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/UseApplyController.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.rzdata.web.controller.tool; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; - -import cn.hutool.core.util.BooleanUtil; -import cn.hutool.core.util.IdUtil; -import com.blueland.bpmclient.model.ProcessInstanceModel; -import com.rzdata.common.enums.RecordStatusEnum; -import com.rzdata.common.utils.DateUtils; -import com.rzdata.common.utils.StringUtils; -import com.rzdata.web.domain.Tool; -import com.rzdata.web.service.IUseApplyItemService; -import com.rzdata.web.service.WorkflowService; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.rzdata.common.annotation.Log; -import com.rzdata.common.core.controller.BaseController; -import com.rzdata.common.core.domain.AjaxResult; -import com.rzdata.common.enums.BusinessType; -import com.rzdata.web.domain.UseApply; -import com.rzdata.web.service.IUseApplyService; -import com.rzdata.common.utils.poi.ExcelUtil; -import com.rzdata.common.core.page.TableDataInfo; - -/** - * 使用申请Controller - * - * @author ja - * @date 2024-08-21 - */ -@RestController -@RequestMapping("/use/apply") -public class UseApplyController extends BaseController -{ - @Autowired - private IUseApplyService useApplyService; - - @Autowired - private WorkflowService workflowService; - - @Autowired - private IUseApplyItemService useApplyItemService; - - - /** - * 查询使用申请列表 - */ - @PreAuthorize("@ss.hasPermi('system:apply:list')") - @GetMapping("/list") - public TableDataInfo list(UseApply useApply) - { - startPage(); - List list = useApplyService.selectUseApplyList(useApply); - return getDataTable(list); - } - - /** - * 获取工具信息详细信息 - */ - @GetMapping(value = "/bpmc/{bpmcId}") - public AjaxResult getInfoByBpmcId(@PathVariable("bpmcId") String bpmcId) - { - return success(useApplyService.getInfoByBpmcId(bpmcId)); - } - - /** - * 导出使用申请列表 - */ - @PreAuthorize("@ss.hasPermi('system:apply:export')") - @Log(title = "使用申请", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, UseApply useApply) - { - List list = useApplyService.selectUseApplyList(useApply); - ExcelUtil util = new ExcelUtil(UseApply.class); - util.exportExcel(response, list, "使用申请数据"); - } - - /** - * 获取使用申请详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:apply:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { - return success(useApplyService.selectUseApplyById(id)); - } - - /** - * 新增使用申请 - */ - @Log(title = "使用申请", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody UseApply useApply) - { - boolean add = false; - if (StringUtils.isEmpty(useApply.getId())) { - useApply.setId(IdUtil.simpleUUID()); - add = true; - } - ProcessInstanceModel processInstanceModel = null; - try { - if(StringUtils.equals(useApply.getRecordStatus(), RecordStatusEnum.DRAFT.getCode())){ - processInstanceModel = workflowService.saveExecute(useApply.getBpmClientInputModel(), useApply.getId()); - }else if (StringUtils.equals(useApply.getRecordStatus(), RecordStatusEnum.CANCEL.getCode())){ - processInstanceModel = workflowService.cancelExecute(useApply.getBpmClientInputModel(), useApply.getId()); - }else{ - processInstanceModel = workflowService.nextExecute(useApply.getBpmClientInputModel(), useApply.getId()); - } - } catch (Exception e) { - e.printStackTrace(); - } - if (processInstanceModel!=null&&StringUtils.isNotEmpty(processInstanceModel.getProcInstId())) { - if (add) { - useApply.setProcInstId(processInstanceModel.getProcInstId()); - useApplyService.insertUseApply(useApply); - useApplyItemService.updateItemList(useApply.getItemList(),useApply.getId()); - }else if (BooleanUtil.isTrue(useApply.getEditStatus())){ - useApplyService.updateUseApply(useApply); - useApplyItemService.updateItemList(useApply.getItemList(),useApply.getId()); - }else { - UseApply updateStatus = new UseApply(); - updateStatus.setId(useApply.getId()); - updateStatus.setRecordStatus(useApply.getRecordStatus()); - useApplyService.updateUseApply(updateStatus); - } - //办结 - if(RecordStatusEnum.DONE.getCode().equals(useApply)){ - //给消息中心发送消息 - useApplyService.sendTzMessage(useApply); - } - return AjaxResult.success("操作成功",processInstanceModel); - }else { - return AjaxResult.error(); - } - } - - /** - * 修改使用申请 - */ - @Log(title = "使用申请", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - public AjaxResult edit(@RequestBody UseApply useApply) - { - return toAjax(useApplyService.updateUseApply(useApply)); - } - - /** - * 删除使用申请 - */ - @PreAuthorize("@ss.hasPermi('system:apply:remove')") - @Log(title = "使用申请", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { - return toAjax(useApplyService.deleteUseApplyByIds(ids)); - } -} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java similarity index 71% rename from tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java rename to tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java index e2c7a61..73bf387 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/UseApply.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolApply.java @@ -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; /** @@ -14,7 +16,7 @@ import java.util.List; * @date 2024-08-21 */ @Data -public class UseApply extends BaseEntity +public class ToolApply extends BaseEntity { private static final long serialVersionUID = 1L; @@ -25,6 +27,15 @@ public class UseApply extends BaseEntity @Excel(name = "申请人id") private String userId; + @Excel(name = "工具ID") + private String toolId; + + @Excel(name = "流程标题") + private String procTitle; + + @Excel(name = "申请类型") + private String applyType; + @Excel(name = "申请人名称") private String nickName; @@ -39,6 +50,9 @@ public class UseApply extends BaseEntity @Excel(name = "申请理由") private String reason; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + private BpmClientInputModelBo bpmClientInputModel; private String recordStatus; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java similarity index 53% rename from tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java rename to tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java index d7957cb..4f6b418 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/UseApplyMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java @@ -1,17 +1,17 @@ package com.rzdata.web.mapper; -import java.util.List; -import com.rzdata.web.domain.UseApply; -import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolApply; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 使用申请Mapper接口 * * @author ja * @date 2024-08-21 */ -public interface UseApplyMapper +public interface ToolApplyMapper { /** * 查询使用申请 @@ -19,33 +19,33 @@ public interface UseApplyMapper * @param id 使用申请主键 * @return 使用申请 */ - public UseApply selectUseApplyById(String id); + public ToolApply selectToolApplyById(String id); - UseApply getInfoByBpmcId(String bpmcId); + ToolApply getInfoByBpmcId(String bpmcId); /** * 查询使用申请列表 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 使用申请集合 */ - public List selectUseApplyList(UseApply useApply); + public List selectToolApplyList(ToolApply toolApply); /** * 新增使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ - public int insertUseApply(UseApply useApply); + public int insertToolApply(ToolApply toolApply); /** * 修改使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ - public int updateUseApply(UseApply useApply); + public int updateToolApply(ToolApply toolApply); /** * 删除使用申请 @@ -53,7 +53,7 @@ public interface UseApplyMapper * @param id 使用申请主键 * @return 结果 */ - public int deleteUseApplyById(String id); + public int deleteToolApplyById(String id); /** * 批量删除使用申请 @@ -61,7 +61,7 @@ public interface UseApplyMapper * @param ids 需要删除的数据主键集合 * @return 结果 */ - public int deleteUseApplyByIds(String[] ids); + public int deleteToolApplyByIds(String[] ids); - int checkUseApply(@Param("toolId") String toolId, @Param("userId") String userId); + int checkToolApply(@Param("toolId") String toolId, @Param("userId") String userId); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java similarity index 52% rename from tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java rename to tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java index ea2f4aa..d59e9f2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IUseApplyService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java @@ -1,8 +1,7 @@ package com.rzdata.web.service; import java.util.List; -import com.rzdata.web.domain.UseApply; -import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolApply; /** * 使用申请Service接口 @@ -10,7 +9,7 @@ import com.rzdata.web.domain.Tool; * @author ja * @date 2024-08-21 */ -public interface IUseApplyService +public interface IToolApplyService { /** * 查询使用申请 @@ -18,33 +17,33 @@ public interface IUseApplyService * @param id 使用申请主键 * @return 使用申请 */ - public UseApply selectUseApplyById(String id); + public ToolApply selectToolApplyById(String id); - UseApply getInfoByBpmcId(String bpmcId); + ToolApply getInfoByBpmcId(String bpmcId); /** * 查询使用申请列表 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 使用申请集合 */ - public List selectUseApplyList(UseApply useApply); + public List selectToolApplyList(ToolApply toolApply); /** * 新增使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ - public int insertUseApply(UseApply useApply); + public int insertToolApply(ToolApply toolApply); /** * 修改使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ - public int updateUseApply(UseApply useApply); + public int updateToolApply(ToolApply toolApply); /** * 批量删除使用申请 @@ -52,7 +51,7 @@ public interface IUseApplyService * @param ids 需要删除的使用申请主键集合 * @return 结果 */ - public int deleteUseApplyByIds(String[] ids); + public int deleteToolApplyByIds(String[] ids); /** * 删除使用申请信息 @@ -60,9 +59,9 @@ public interface IUseApplyService * @param id 使用申请主键 * @return 结果 */ - public int deleteUseApplyById(String id); + public int deleteToolApplyById(String id); - boolean checkUseApply(String toolId, String userId); + boolean checkToolApply(String toolId, String userId); - void sendTzMessage(UseApply useApply); + void sendTzMessage(ToolApply toolApply); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index 5b4316c..9905ac7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -77,6 +77,8 @@ public interface IToolService */ public void addDocAndAtt(Tool tool); + void recordToolApply(Tool tool); + void updateDocPushStatus(Tool tTool); void sendTzMessage(Tool tTool); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java index 9b01ed6..d6220b6 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java @@ -1,8 +1,6 @@ package com.rzdata.web.service; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; @@ -10,10 +8,12 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.blueland.bpmclient.BpmClient; import com.blueland.bpmclient.model.*; +import com.rzdata.common.core.domain.entity.SysUser; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.common.utils.StringUtils; import com.rzdata.system.service.ISysConfigService; import com.rzdata.system.service.ISysDeptService; +import com.rzdata.system.service.ISysUserService; import com.rzdata.web.core.config.BpmcConfig; import com.rzdata.web.domain.WorkFlowInfo; import com.rzdata.web.domain.bo.BpmClientInputModelBo; @@ -23,9 +23,10 @@ import org.apache.commons.compress.utils.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.rmi.ServerException; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Slf4j @Service("workflowService") @@ -48,6 +49,9 @@ public class WorkflowService { @Autowired ISysDeptService sysDeptService; + @Autowired + ISysUserService sysUserService; + @Autowired IWorkflowLogService iWorkflowLogService; private final static String CUR_ACT_DEF_KEY = "curActDef"; @@ -359,6 +363,16 @@ public class WorkflowService { pageVo.setPageNumber(pageResultModel.getThisPageNumber()); pageVo.setTotalCount(pageResultModel.getTotalCount()); List workFlowInfos = JSONUtil.toList(JSONUtil.toJsonStr(pageResultModel.getResult()), WorkFlowInfo.class); + for(WorkFlowInfo workFlowInfo : workFlowInfos){ + SysUser startSysUser = sysUserService.selectUserByUserName(workFlowInfo.getStartUserId()); + if(null != startSysUser){ + workFlowInfo.setStartUserName(startSysUser.getUserName()); + } + SysUser sendSysUser = sysUserService.selectUserByUserName(workFlowInfo.getSendUserId()); + if(null != sendSysUser){ + workFlowInfo.setSendUserName(sendSysUser.getUserName()); + } + } pageVo.setResult(workFlowInfos); return pageVo; } catch (Exception ex) { diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index c1a82e7..e86ae5c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -8,8 +8,6 @@ import cn.hutool.core.util.StrUtil; 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.core.domain.model.LoginUser; -import com.rzdata.common.enums.RecordStatusEnum; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.system.service.ISysDictTypeService; @@ -18,7 +16,7 @@ import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; import com.rzdata.web.mapper.DocumentMapper; import com.rzdata.web.service.IDocumentService; -import com.rzdata.web.service.IUseApplyService; +import com.rzdata.web.service.IToolApplyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,7 +41,7 @@ public class DocumentServiceImpl implements IDocumentService private ToolServiceImpl toolService; @Autowired - private IUseApplyService iUseApplyService; + private IToolApplyService iUseApplyService; @Autowired private ISysDictTypeService sysDictTypeService; @@ -115,7 +113,7 @@ public class DocumentServiceImpl implements IDocumentService 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.checkUseApply(dc.getToolId(),userId)){ + }else if(StrUtil.isNotBlank(dc.getToolId()) && iUseApplyService.checkToolApply(dc.getToolId(),userId)){ downStatus = true; } dc.setDownloadStatus(downStatus); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java similarity index 57% rename from tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java rename to tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java index 88ffff3..2a47e6f 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/UseApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -5,20 +5,17 @@ import com.rzdata.common.core.domain.entity.SysUser; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.system.service.ISysUserService; +import com.rzdata.web.domain.ToolApply; import com.rzdata.web.domain.TzMessage; -import com.rzdata.web.domain.UseApply; import com.rzdata.web.domain.UseApplyItem; -import com.rzdata.web.mapper.UseApplyMapper; +import com.rzdata.web.mapper.ToolApplyMapper; +import com.rzdata.web.service.IToolApplyService; import com.rzdata.web.service.ITzMessageService; -import com.rzdata.web.service.IUseApplyService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; /** * 使用申请Service业务层处理 @@ -28,10 +25,10 @@ import java.util.stream.Collectors; */ @Slf4j @Service -public class UseApplyServiceImpl implements IUseApplyService +public class ToolApplyServiceImpl implements IToolApplyService { @Autowired - private UseApplyMapper useApplyMapper; + private ToolApplyMapper toolApplyMapper; @Autowired @@ -52,53 +49,53 @@ public class UseApplyServiceImpl implements IUseApplyService * @return 使用申请 */ @Override - public UseApply selectUseApplyById(String id) + public ToolApply selectToolApplyById(String id) { - return useApplyMapper.selectUseApplyById(id); + return toolApplyMapper.selectToolApplyById(id); } @Override - public UseApply getInfoByBpmcId(String bpmcId){ - return useApplyMapper.getInfoByBpmcId(bpmcId); + public ToolApply getInfoByBpmcId(String bpmcId){ + return toolApplyMapper.getInfoByBpmcId(bpmcId); } /** * 查询使用申请列表 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 使用申请 */ @Override - public List selectUseApplyList(UseApply useApply) + public List selectToolApplyList(ToolApply toolApply) { - return useApplyMapper.selectUseApplyList(useApply); + return toolApplyMapper.selectToolApplyList(toolApply); } /** * 新增使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ @Override - public int insertUseApply(UseApply useApply) + public int insertToolApply(ToolApply toolApply) { - useApply.setCreateBy(SecurityUtils.getUserId().toString()); - useApply.setCreateTime(DateUtils.getNowDate()); - return useApplyMapper.insertUseApply(useApply); + toolApply.setCreateBy(SecurityUtils.getUserId().toString()); + toolApply.setCreateTime(DateUtils.getNowDate()); + return toolApplyMapper.insertToolApply(toolApply); } /** * 修改使用申请 * - * @param useApply 使用申请 + * @param toolApply 使用申请 * @return 结果 */ @Override - public int updateUseApply(UseApply useApply) + public int updateToolApply(ToolApply toolApply) { - useApply.setUpdateBy(SecurityUtils.getUserId().toString()); - useApply.setUpdateTime(DateUtils.getNowDate()); - return useApplyMapper.updateUseApply(useApply); + toolApply.setUpdateBy(SecurityUtils.getUserId().toString()); + toolApply.setUpdateTime(DateUtils.getNowDate()); + return toolApplyMapper.updateToolApply(toolApply); } /** @@ -108,9 +105,9 @@ public class UseApplyServiceImpl implements IUseApplyService * @return 结果 */ @Override - public int deleteUseApplyByIds(String[] ids) + public int deleteToolApplyByIds(String[] ids) { - return useApplyMapper.deleteUseApplyByIds(ids); + return toolApplyMapper.deleteToolApplyByIds(ids); } /** @@ -120,21 +117,21 @@ public class UseApplyServiceImpl implements IUseApplyService * @return 结果 */ @Override - public int deleteUseApplyById(String id) + public int deleteToolApplyById(String id) { - return useApplyMapper.deleteUseApplyById(id); + return toolApplyMapper.deleteToolApplyById(id); } - public boolean checkUseApply(String toolId, String userId){ - return useApplyMapper.checkUseApply(toolId, userId)>0; + public boolean checkToolApply(String toolId, String userId){ + return toolApplyMapper.checkToolApply(toolId, userId)>0; } @Override - public void sendTzMessage(UseApply useApply) { + public void sendTzMessage(ToolApply toolApply) { try{ - SysUser sysUser = sysUserService.selectUserById(Long.valueOf(useApply.getUserId())); + SysUser sysUser = sysUserService.selectUserById(Long.valueOf(toolApply.getUserId())); - UseApplyItem useApplyItem = useApply.getItemList().get(0); + UseApplyItem useApplyItem = toolApply.getItemList().get(0); String toolName = useApplyItem.getToolName(); String content = toolName + "下载权限已通过"; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 3c77aee..998ac08 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -4,24 +4,25 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import 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.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; -import com.rzdata.system.service.ISysDictDataService; +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.UseApplyItem; +import com.rzdata.web.domain.bo.BpmClientInputModelBo; import com.rzdata.web.mapper.ToolMapper; -import com.rzdata.web.service.IAttachmentService; -import com.rzdata.web.service.IDocumentService; -import com.rzdata.web.service.IToolService; -import com.rzdata.web.service.ITzMessageService; +import com.rzdata.web.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -68,6 +69,12 @@ public class ToolServiceImpl implements IToolService private ISysDictTypeService sysDictTypeService; + @Autowired + private IToolApplyService toolApplyService; + + @Autowired + private ISysDeptService sysDeptService; + /** * 查询工具信息 * @@ -167,6 +174,34 @@ public class ToolServiceImpl implements IToolService } } + @Override + @Transactional(rollbackFor = Exception.class) + public void recordToolApply(Tool tool) { + ToolApply toolApply = new ToolApply(); + toolApply.setId(IdUtil.simpleUUID()); + toolApply.setApplyType(Constants.TOOL_APPLY_TYPE_PUBLISH); + toolApply.setToolId(tool.getToolId()); + toolApply.setDeptId(String.valueOf(SecurityUtils.getDeptId())); + toolApply.setProcInstId(tool.getProcInstId()); + toolApply.setRecordStatus(tool.getRecordStatus()); + toolApply.setUserId(String.valueOf(SecurityUtils.getUserId())); + + BpmClientInputModelBo bpmClientInputModelBo = tool.getBpmClientInputModel(); + if(null != bpmClientInputModelBo){ + BpmClientInputModel bpmClientInputModel = bpmClientInputModelBo.getModel(); + toolApply.setProcTitle(StrUtil.isNotEmpty(bpmClientInputModel.getWf_procTitle()) ? bpmClientInputModel.getWf_procTitle() : ""); + } + SysDept sysDept = sysDeptService.selectDeptById(SecurityUtils.getDeptId()); + if(null != sysDept){ + toolApply.setDeptName(sysDept.getDeptName()); + } + SysUser sysUser = sysUserService.selectUserById(SecurityUtils.getUserId()); + if(null != sysUser){ + toolApply.setNickName(sysUser.getNickName()); + } + toolApplyService.insertToolApply(toolApply); + } + /** * 批量删除工具信息 * diff --git a/tool-tech-admin/src/main/resources/application.yml b/tool-tech-admin/src/main/resources/application.yml index 3946a06..b42c837 100644 --- a/tool-tech-admin/src/main/resources/application.yml +++ b/tool-tech-admin/src/main/resources/application.yml @@ -136,5 +136,5 @@ application: bpmc: tenantId: TLTC_SYS - serviceUrl: http://192.168.2.6:8081/ebpm-process-rest/ + serviceUrl: http://124.223.108.21:9081/ebpm-process-rest/ uniteWorkUrl: http://localhost/tool-tech/workflowRouter diff --git a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml similarity index 58% rename from tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml rename to tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml index 216a915..ef46f07 100644 --- a/tool-tech-admin/src/main/resources/mapper/UseApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml @@ -2,11 +2,14 @@ - + - + + + + @@ -16,37 +19,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - - select id, user_id, nick_name, dept_id, dept_name, reason, create_by, create_time, update_by, update_time from t_use_apply + + select id, user_id, nick_name, tool_id, apply_type, proc_title, proc_inst_id, end_time, dept_id, record_status, dept_name, reason, create_by, create_time, update_by, update_time from t_tool_apply - + and user_id like concat('%', #{userId}, '%') and dept_id = #{deptId} + and apply_type = #{applyType} and reason = #{reason} + and record_status = #{recordStatus} + and proc_title like concat('%', #{procTitle}, '%') + + AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + + + AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + + order by create_time desc - + where id = #{id} - + where proc_inst_id = #{bpmcId} - - insert into t_use_apply + + insert into t_tool_apply id, user_id, + tool_id, + proc_title, + apply_type, nick_name, dept_id, dept_name, @@ -56,11 +73,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, update_time, proc_inst_id, + end_time, record_status, #{id}, #{userId}, + #{toolId}, + #{procTitle}, + #{applyType}, #{nickName}, #{deptId}, #{deptName}, @@ -69,16 +90,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{createTime}, #{updateBy}, #{updateTime}, + #{endTime}, #{procInstId}, #{recordStatus}, - - update t_use_apply + + update t_tool_apply user_id = #{userId}, nick_name = #{nickName}, + tool_id = #{toolId}, + proc_title = #{procTitle}, + apply_type = #{applyType}, dept_id = #{deptId}, dept_name = #{deptName}, reason = #{reason}, @@ -86,24 +111,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, + end_time = #{endTime}, record_status = #{recordStatus}, where id = #{id} - - delete from t_use_apply where id = #{id} + + delete from t_tool_apply where id = #{id} - - delete from t_use_apply where id in + + delete from t_tool_apply where id in #{id} - + 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} diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index d9bb90a..974d50f 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -197,6 +197,16 @@ public class Constants public static final String STR_ZERO = "0"; public static final String STR_ONE = "1"; + /** + * 申请类型-发布申请 + */ + public static final String TOOL_APPLY_TYPE_PUBLISH = "publish"; + + /** + * 申请类型-使用申请 + */ + public static final String TOOL_APPLY_TYPE_USE = "use"; + public static final String DOC_DOWNLOAD_PERMISSION = "document:download"; public static final String DOC_VIEW_PERMISSION = "document:query:data:all"; } From a2b843bdf396e2a1094a394656fa7fb171dce451 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 2 Sep 2024 10:41:34 +0800 Subject: [PATCH 13/36] =?UTF-8?q?1=E3=80=81=E9=83=A8=E9=97=A8=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/rzdata/web/service/impl/ToolServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 998ac08..a5d63ab 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -84,7 +84,9 @@ public class ToolServiceImpl implements IToolService @Override public Tool selectToolByToolId(String toolId) { - return toolMapper.selectToolByToolId(toolId); + Tool tool = toolMapper.selectToolByToolId(toolId); + tool.setToolRespDeptName(sysDeptService.getDeptName(tool.getToolRespDept())); + return tool; } @Override From 29ce3e1ce9030c80b3fc36a7c763cb9a50e46af4 Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Mon, 2 Sep 2024 11:08:42 +0800 Subject: [PATCH 14/36] update --- .../src/main/resources/banner.txt | 17 ++++++----------- .../src/main/resources/web/fileNotSupported.ftl | 1 - .../src/main/resources/web/main/index.ftl | 7 ++----- .../src/main/resources/web/main/integrated.ftl | 6 ++---- .../src/main/resources/web/notTrustDir.html | 1 - .../src/main/resources/web/notTrustHost.html | 4 ---- .../src/main/resources/web/tiff.ftl | 1 - 7 files changed, 10 insertions(+), 27 deletions(-) diff --git a/tool-tech-file-view/src/main/resources/banner.txt b/tool-tech-file-view/src/main/resources/banner.txt index 043fb51..ad7fab2 100644 --- a/tool-tech-file-view/src/main/resources/banner.txt +++ b/tool-tech-file-view/src/main/resources/banner.txt @@ -1,14 +1,9 @@ - _ _ ______ _ _ __ __ _ - | | | | | ____| (_) | | \ \ / / (_) - | | __ | | __ | |__ _ | | ___ \ \ / / _ ___ __ __ - | |/ / | |/ / | __| | | | | / _ \ \ \/ / | | / _ \ \ \ /\ / / - | < | < | | | | | | | __/ \ / | | | __/ \ V V / - |_|\_\ |_|\_\ |_| |_| |_| \___| \/ |_| \___| \_/\_/ + ______ _ _ __ __ _ +| ____| (_) | | \ \ / / (_) +| |__ _ | | ___ \ \ / / _ ___ __ __ +| __| | | | | / _ \ \ \/ / | | / _ \ \ \ /\ / / +| | | | | | | __/ \ / | | | __/ \ V V / +|_| |_| |_| \___| \/ |_| \___| \_/\_/ => Spring Boot :: ${spring-boot.version} - => kkFileView :: 4.4.0-beta - => Home site :: https://kkview.cn - => Github :: https://github.com/kekingcn/kkFileView - => Gitee :: https://gitee.com/kekingcn/file-online-preview - => kk opensource community :: https://t.zsxq.com/09ZHSXbsQ diff --git a/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl b/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl index 78a3d5e..3cebfc2 100644 --- a/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl +++ b/tool-tech-file-view/src/main/resources/web/fileNotSupported.ftl @@ -38,7 +38,6 @@ 该(${fileType})文件,系统暂不支持在线预览,具体原因如下:

${msg}

-

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

diff --git a/tool-tech-file-view/src/main/resources/web/main/index.ftl b/tool-tech-file-view/src/main/resources/web/main/index.ftl index c4ebb5f..5fcb1f0 100644 --- a/tool-tech-file-view/src/main/resources/web/main/index.ftl +++ b/tool-tech-file-view/src/main/resources/web/main/index.ftl @@ -4,7 +4,7 @@ - kkFileView演示首页 + tool-tech-file-view演示首页 @@ -64,13 +64,11 @@ @@ -79,7 +77,6 @@ <#-- 接入说明 -->
    diff --git a/tool-tech-file-view/src/main/resources/web/main/integrated.ftl b/tool-tech-file-view/src/main/resources/web/main/integrated.ftl index 5ca1115..bbce769 100644 --- a/tool-tech-file-view/src/main/resources/web/main/integrated.ftl +++ b/tool-tech-file-view/src/main/resources/web/main/integrated.ftl @@ -17,13 +17,11 @@ @@ -32,7 +30,7 @@ <#-- 接入说明 -->
    diff --git a/tool-tech-file-view/src/main/resources/web/notTrustDir.html b/tool-tech-file-view/src/main/resources/web/notTrustDir.html index 18049af..ea8f438 100644 --- a/tool-tech-file-view/src/main/resources/web/notTrustDir.html +++ b/tool-tech-file-view/src/main/resources/web/notTrustDir.html @@ -35,7 +35,6 @@

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

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

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

    diff --git a/tool-tech-file-view/src/main/resources/web/tiff.ftl b/tool-tech-file-view/src/main/resources/web/tiff.ftl index fa1daaf..e03cf28 100644 --- a/tool-tech-file-view/src/main/resources/web/tiff.ftl +++ b/tool-tech-file-view/src/main/resources/web/tiff.ftl @@ -105,7 +105,6 @@ html += " "; html += " 该(tif)文件,系统解析错误,具体原因如下:"; html += "

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

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

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

    "; html += "
"; html += ""; html += ""; From a9324dffcf62891a206cfe10ba10408648de8fa7 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 2 Sep 2024 11:11:20 +0800 Subject: [PATCH 15/36] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tool-tech-admin/src/main/resources/application-test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tool-tech-admin/src/main/resources/application-test.yml b/tool-tech-admin/src/main/resources/application-test.yml index d426f47..2e8d050 100644 --- a/tool-tech-admin/src/main/resources/application-test.yml +++ b/tool-tech-admin/src/main/resources/application-test.yml @@ -58,4 +58,9 @@ spring: merge-sql: true wall: config: - multi-statement-allow: true \ No newline at end of file + multi-statement-allow: true + +bpmc: + tenantId: TLTC_SYS + serviceUrl: http://124.223.108.21:9081/ebpm-process-rest/ + uniteWorkUrl: https://www.rzdata.net/tool-tech/workflowRouter From ca62286f98aebe5087e6a86308894219f80cb452 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 2 Sep 2024 13:33:29 +0800 Subject: [PATCH 16/36] =?UTF-8?q?1=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/rzdata/web/service/impl/TzMessageServiceImpl.java | 6 +++++- .../src/main/resources/mapper/TzMessageMapper.xml | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java index 337d8c5..a0fab22 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java @@ -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); } diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml index f1215e1..0416368 100644 --- a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -101,15 +101,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- 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} - insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_time + insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_by_id, create_time) values - #{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy}, #{item.createTime} + #{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime}
\ No newline at end of file From 242fa6736e0927029f1fb431d39b24ddeeeb2b7b Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 2 Sep 2024 17:14:52 +0800 Subject: [PATCH 17/36] =?UTF-8?q?1=E3=80=81=E5=8F=91=E5=B8=83=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=9D=83=E9=99=90=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rzdata/web/controller/tool/ToolController.java | 13 ++++++++----- .../web/controller/tool/TzMessageController.java | 1 - .../web/service/impl/ToolApplyServiceImpl.java | 7 +++++++ .../rzdata/web/service/impl/ToolServiceImpl.java | 2 +- .../src/main/resources/mapper/ToolApplyMapper.xml | 3 ++- .../src/main/resources/mapper/ToolMapper.xml | 6 +++--- .../java/com/rzdata/common/constant/Constants.java | 3 +++ .../rzdata/framework/aspectj/DataScopeAspect.java | 7 ++++++- 8 files changed, 30 insertions(+), 12 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 476d9a3..e244f87 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -8,6 +8,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 +30,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.Map; /** * 工具信息Controller @@ -72,10 +72,13 @@ 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)|| + //创建人、下载权限、系统管理员 + //1.已经审核通过、并且有下载权限 + vo.setDownloadStatus( + userId.equals(vo.getCreateBy())|| + SysUser.isAdmin(SecurityUtils.getUserId()) || + SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION) || + ( RecordStatusEnum.DONE.getCode().equals(vo.getRecordStatus())&& iToolApplyService.checkToolApply(vo.getToolId(),userId))); } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java index 3d0fc07..5e3c215 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java @@ -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) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java index 2a47e6f..797b8cf 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -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 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); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index a5d63ab..8630583 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -101,7 +101,7 @@ public class ToolServiceImpl implements IToolService * @return 工具信息 */ @Override - @DataScope(deptAlias = "d") + @DataScope(deptAlias = "d", userAlias = "su") public List selectToolList(Tool tool) { if (BooleanUtil.isTrue(tool.getPermissionCheck())) { diff --git a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml index ef46f07..e1c60dc 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml @@ -36,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and reason = #{reason} and record_status = #{recordStatus} and proc_title like concat('%', #{procTitle}, '%') + and create_by = #{createBy} AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') @@ -129,7 +130,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 + 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 d.dept_id = su.dept_Id + left join sys_dept d on u.tool_resp_dept = d.dept_id where 1=1 and u.record_status != 'cancel' diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index 974d50f..2873d2b 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -209,4 +209,7 @@ 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"; } diff --git a/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java b/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java index a4a3d01..af163f3 100644 --- a/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java +++ b/tool-tech-framework/src/main/java/com/rzdata/framework/aspectj/DataScopeAspect.java @@ -131,7 +131,12 @@ public class DataScopeAspect } else if (DATA_SCOPE_DEPT.equals(dataScope)) { - sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + if (StringUtils.isNotBlank(userAlias)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id = {} Or {}.user_id = {}", deptAlias, user.getDeptId() , userAlias, user.getUserId())); + }else{ + sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + } } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { From a869af50bec9cd8b66e4974505b085e8372e0a24 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 2 Sep 2024 18:06:41 +0800 Subject: [PATCH 18/36] =?UTF-8?q?1.=E5=AD=97=E5=85=B8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rzdata/web/controller/system/SysDictTypeController.java | 1 - .../rzdata/web/controller/tool/DownloadCountController.java | 5 ----- .../com/rzdata/system/service/impl/SysDeptServiceImpl.java | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java index 62ecfe0..091382a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysDictTypeController.java @@ -44,7 +44,6 @@ public class SysDictTypeController extends BaseController } - @PreAuthorize("@ss.hasPermi('system:bizlist:list')") @GetMapping("/bizlist") public TableDataInfo bizlist(SysDictType dictType) { diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java index 495fc85..1b3346f 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java @@ -63,7 +63,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 +75,6 @@ public class DownloadCountController extends BaseController /** * 获取工具下载统计详细信息 */ - @PreAuthorize("@ss.hasPermi('system:count:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { @@ -86,7 +84,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 +94,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 +104,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) diff --git a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java index cf842dc..2d3778f 100644 --- a/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java +++ b/tool-tech-system/src/main/java/com/rzdata/system/service/impl/SysDeptServiceImpl.java @@ -193,7 +193,7 @@ public class SysDeptServiceImpl implements ISysDeptService { SysDept dept = new SysDept(); dept.setDeptId(deptId); - List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + List depts = deptMapper.selectDeptList(dept); if (StringUtils.isEmpty(depts)) { throw new ServiceException("没有权限访问部门数据!"); From aa5178ac926190ac45ffa894ae367b6e367faee2 Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Mon, 2 Sep 2024 20:54:44 +0800 Subject: [PATCH 19/36] update --- tool-tech-file-view/src/main/bin/showlog.sh | 2 +- tool-tech-file-view/src/main/bin/shutdown.sh | 22 ++++--------- tool-tech-file-view/src/main/bin/startup.bat | 15 ++++----- tool-tech-file-view/src/main/bin/startup.sh | 32 ++++++------------- .../src/main/resources/web/code.ftl | 2 +- .../src/main/resources/web/csv.ftl | 2 +- .../src/main/resources/web/dcm.ftl | 2 +- .../src/main/resources/web/drawio.ftl | 2 +- .../src/main/resources/web/eml.ftl | 2 +- .../src/main/resources/web/epub.ftl | 2 +- .../src/main/resources/web/html.ftl | 2 +- .../src/main/resources/web/markdown.ftl | 2 +- .../src/main/resources/web/media.ftl | 2 +- .../src/main/resources/web/ofd.ftl | 2 +- .../src/main/resources/web/officePicture.ftl | 2 +- .../src/main/resources/web/officeweb.ftl | 2 +- .../src/main/resources/web/online3D.ftl | 2 +- .../src/main/resources/web/pdf.ftl | 2 +- .../src/main/resources/web/picture.ftl | 2 +- .../src/main/resources/web/ppt.ftl | 2 +- .../src/main/resources/web/svg.ftl | 2 +- .../src/main/resources/web/tiff.ftl | 2 +- .../src/main/resources/web/txt.ftl | 4 +-- .../src/main/resources/web/xmind.ftl | 2 +- .../src/main/resources/web/xml.ftl | 2 +- 25 files changed, 46 insertions(+), 69 deletions(-) diff --git a/tool-tech-file-view/src/main/bin/showlog.sh b/tool-tech-file-view/src/main/bin/showlog.sh index 5f32596..a28138b 100644 --- a/tool-tech-file-view/src/main/bin/showlog.sh +++ b/tool-tech-file-view/src/main/bin/showlog.sh @@ -1,2 +1,2 @@ #!/bin/bash -tail -fn 300 ../log/kkFileView.log \ No newline at end of file +tail -fn 300 ../log/toolTechFileView.log \ No newline at end of file diff --git a/tool-tech-file-view/src/main/bin/shutdown.sh b/tool-tech-file-view/src/main/bin/shutdown.sh index a505923..a8cacb3 100644 --- a/tool-tech-file-view/src/main/bin/shutdown.sh +++ b/tool-tech-file-view/src/main/bin/shutdown.sh @@ -1,21 +1,13 @@ #!/bin/bash -# -# -############################# -# Author: sanxi -# Version: 1.0 -# Date: 2021/09/17 -# Description: v1.0:修改kkFileView关闭进程机制 -############################# -# -KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) -PID_FILE_NAME="kkFileView.pid" -PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" -export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER + +TTFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) +PID_FILE_NAME="toolTechFileView.pid" +PID_FILE="${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" +export TTFILEVIEW_BIN_FOLDER=$TTFILEVIEW_BIN_FOLDER # ## pid文件是否存在 if [ ! -e "$PID_FILE" ]; then - echo "kkFileView.pid文件不存在!" + echo "toolTechFileView.pid文件不存在!" exit 1 else ## 文件不为空代表程序正在运行,则循环关闭进程。 @@ -31,6 +23,6 @@ else # 关闭所有进程后,重置pid。 cat /dev/null > "$PID_FILE" else - echo "kkFileView进程尚未运行!" + echo "toolTechFileView进程尚未运行!" fi fi diff --git a/tool-tech-file-view/src/main/bin/startup.bat b/tool-tech-file-view/src/main/bin/startup.bat index 13a1452..e6588f8 100644 --- a/tool-tech-file-view/src/main/bin/startup.bat +++ b/tool-tech-file-view/src/main/bin/startup.bat @@ -1,10 +1,7 @@ @echo off -set "KKFILEVIEW_BIN_FOLDER=%cd%" -cd "%KKFILEVIEW_BIN_FOLDER%" -echo Using KKFILEVIEW_BIN_FOLDER %KKFILEVIEW_BIN_FOLDER% -echo Starting kkFileView... -echo Please check log file in ../log/kkFileView.log for more information -echo You can get help in our official home site: https://kkview.cn -echo If you need further help, please join our kk opensource community: https://t.zsxq.com/09ZHSXbsQ -echo If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers -java -Dspring.config.location=..\config\application.properties -jar kkFileView-4.4.0-beta.jar -> ..\log\kkFileView.log +set "TTFILEVIEW_BIN_FOLDER=%cd%" +cd "%TTFILEVIEW_BIN_FOLDER%" +echo Using TTFILEVIEW_BIN_FOLDER %TTFILEVIEW_BIN_FOLDER% +echo Starting toolTechFileView... +echo Please check log file in ../log/toolTechFileView.log for more information +java -Dspring.config.location=..\config\application.properties -jar tool-tech-file-view-4.4.0.jar -> ..\log\toolTechFileView.log diff --git a/tool-tech-file-view/src/main/bin/startup.sh b/tool-tech-file-view/src/main/bin/startup.sh index 1a7f129..d0927ba 100644 --- a/tool-tech-file-view/src/main/bin/startup.sh +++ b/tool-tech-file-view/src/main/bin/startup.sh @@ -1,25 +1,16 @@ #!/bin/bash -# -# -############################# -# First_Author: 凯京科技 -# Second_Author: sanxi -# Version: 1.1 -# Date: 2021/09/17 -# Description: v1.1:修改进程启动机制为pid形式。 -############################# -# + DIR_HOME=("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1" "/opt/libreoffice7.2" "/opt/libreoffice7.3" "/opt/libreoffice7.4" "/opt/libreoffice7.5" "/opt/libreoffice7.6" "/opt/openoffice4" "/usr/lib/openoffice" "/usr/lib/libreoffice") FLAG= OFFICE_HOME= -KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) -PID_FILE_NAME="kkFileView.pid" -PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" -export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER +TTFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd) +PID_FILE_NAME="toolTechFileView.pid" +PID_FILE="${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" +export TTFILEVIEW_BIN_FOLDER=$TTFILEVIEW_BIN_FOLDER # ## 如pid文件不存在则自动创建 if [ ! -f ${PID_FILE_NAME} ]; then - touch "${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" + touch "${TTFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}" fi ## 判断当前是否有进程处于运行状态 if [ -s "${PID_FILE}" ]; then @@ -27,8 +18,8 @@ if [ -s "${PID_FILE}" ]; then echo "进程已处于运行状态,进程号为:${PID}" exit 1 else - cd "$KKFILEVIEW_BIN_FOLDER" || exit 1 - echo "Using KKFILEVIEW_BIN_FOLDER $KKFILEVIEW_BIN_FOLDER" + cd "$TTFILEVIEW_BIN_FOLDER" || exit 1 + echo "Using TTFILEVIEW_BIN_FOLDER $TTFILEVIEW_BIN_FOLDER" grep 'office\.home' ../config/application.properties | grep '!^#' if [ $? -eq 0 ]; then echo "Using customized office.home" @@ -50,12 +41,9 @@ else fi ## 启动kkFileView - echo "Starting kkFileView..." - nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.4.0-beta.jar > ../log/kkFileView.log 2>&1 & + echo "Starting ToolTechFileView..." + nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar tool-tech-file-view-4.4.0.jar > ../log/toolTechFileView.log 2>&1 & echo "Please execute ./showlog.sh to check log for more information" - echo "You can get help in our official home site: https://kkview.cn" - echo "If you need further help, please join our kk opensource community: https://t.zsxq.com/09ZHSXbsQ" - echo "If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers" PROCESS=$(ps -ef | grep -v grep | grep java | grep kkFileView | awk 'NR==1{print $2}') # 启动成功后将进程号写入pid文件 echo "$PROCESS" > "$PID_FILE" diff --git a/tool-tech-file-view/src/main/resources/web/code.ftl b/tool-tech-file-view/src/main/resources/web/code.ftl index 454eb7c..e1f0ce3 100644 --- a/tool-tech-file-view/src/main/resources/web/code.ftl +++ b/tool-tech-file-view/src/main/resources/web/code.ftl @@ -44,7 +44,7 @@ * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); loadText(); } diff --git a/tool-tech-file-view/src/main/resources/web/csv.ftl b/tool-tech-file-view/src/main/resources/web/csv.ftl index d3a3a59..c4698b2 100644 --- a/tool-tech-file-view/src/main/resources/web/csv.ftl +++ b/tool-tech-file-view/src/main/resources/web/csv.ftl @@ -76,7 +76,7 @@ reader.readAsArrayBuffer(file); if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/dcm.ftl b/tool-tech-file-view/src/main/resources/web/dcm.ftl index 4d8d24f..7a74daf 100644 --- a/tool-tech-file-view/src/main/resources/web/dcm.ftl +++ b/tool-tech-file-view/src/main/resources/web/dcm.ftl @@ -96,7 +96,7 @@ ); /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/drawio.ftl b/tool-tech-file-view/src/main/resources/web/drawio.ftl index 377a97e..7eb3c54 100644 --- a/tool-tech-file-view/src/main/resources/web/drawio.ftl +++ b/tool-tech-file-view/src/main/resources/web/drawio.ftl @@ -34,7 +34,7 @@ /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/eml.ftl b/tool-tech-file-view/src/main/resources/web/eml.ftl index 5c6336d..1c9458f 100644 --- a/tool-tech-file-view/src/main/resources/web/eml.ftl +++ b/tool-tech-file-view/src/main/resources/web/eml.ftl @@ -38,7 +38,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/epub.ftl b/tool-tech-file-view/src/main/resources/web/epub.ftl index 42f0c14..52948bf 100644 --- a/tool-tech-file-view/src/main/resources/web/epub.ftl +++ b/tool-tech-file-view/src/main/resources/web/epub.ftl @@ -153,7 +153,7 @@ function blobToArrayBuffer(blob) { if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/html.ftl b/tool-tech-file-view/src/main/resources/web/html.ftl index f4da55b..925dea9 100644 --- a/tool-tech-file-view/src/main/resources/web/html.ftl +++ b/tool-tech-file-view/src/main/resources/web/html.ftl @@ -27,7 +27,7 @@ } /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/markdown.ftl b/tool-tech-file-view/src/main/resources/web/markdown.ftl index cfd882e..b3869a3 100644 --- a/tool-tech-file-view/src/main/resources/web/markdown.ftl +++ b/tool-tech-file-view/src/main/resources/web/markdown.ftl @@ -42,7 +42,7 @@ */ window.onload = function () { $("#markdown_btn").hide() - initWaterMark(); + //initWaterMark(); loadMarkdown(); } function htmlEscape(str){ diff --git a/tool-tech-file-view/src/main/resources/web/media.ftl b/tool-tech-file-view/src/main/resources/web/media.ftl index c16d030..2d50af1 100644 --- a/tool-tech-file-view/src/main/resources/web/media.ftl +++ b/tool-tech-file-view/src/main/resources/web/media.ftl @@ -102,7 +102,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/ofd.ftl b/tool-tech-file-view/src/main/resources/web/ofd.ftl index d05ea30..0370305 100644 --- a/tool-tech-file-view/src/main/resources/web/ofd.ftl +++ b/tool-tech-file-view/src/main/resources/web/ofd.ftl @@ -45,7 +45,7 @@ } /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/officePicture.ftl b/tool-tech-file-view/src/main/resources/web/officePicture.ftl index e9d6903..b46fedc 100644 --- a/tool-tech-file-view/src/main/resources/web/officePicture.ftl +++ b/tool-tech-file-view/src/main/resources/web/officePicture.ftl @@ -43,7 +43,7 @@ \ No newline at end of file diff --git a/tool-tech-file-view/src/main/resources/web/pdf.ftl b/tool-tech-file-view/src/main/resources/web/pdf.ftl index 845ac8c..756355e 100644 --- a/tool-tech-file-view/src/main/resources/web/pdf.ftl +++ b/tool-tech-file-view/src/main/resources/web/pdf.ftl @@ -55,7 +55,7 @@ /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/picture.ftl b/tool-tech-file-view/src/main/resources/web/picture.ftl index 39ea6b6..53b85ab 100644 --- a/tool-tech-file-view/src/main/resources/web/picture.ftl +++ b/tool-tech-file-view/src/main/resources/web/picture.ftl @@ -40,7 +40,7 @@ /*初始化水印*/ window.onload = function() { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/ppt.ftl b/tool-tech-file-view/src/main/resources/web/ppt.ftl index 5709205..d343aa5 100644 --- a/tool-tech-file-view/src/main/resources/web/ppt.ftl +++ b/tool-tech-file-view/src/main/resources/web/ppt.ftl @@ -138,7 +138,7 @@ } window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/svg.ftl b/tool-tech-file-view/src/main/resources/web/svg.ftl index 82f4f9a..3865d5b 100644 --- a/tool-tech-file-view/src/main/resources/web/svg.ftl +++ b/tool-tech-file-view/src/main/resources/web/svg.ftl @@ -46,7 +46,7 @@ createNewEmbed(url); /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/tiff.ftl b/tool-tech-file-view/src/main/resources/web/tiff.ftl index e03cf28..13e0e9a 100644 --- a/tool-tech-file-view/src/main/resources/web/tiff.ftl +++ b/tool-tech-file-view/src/main/resources/web/tiff.ftl @@ -138,7 +138,7 @@ html += ""; /*初始化水印*/ window.onload = function () { - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/txt.ftl b/tool-tech-file-view/src/main/resources/web/txt.ftl index bb7167a..c5a3239 100644 --- a/tool-tech-file-view/src/main/resources/web/txt.ftl +++ b/tool-tech-file-view/src/main/resources/web/txt.ftl @@ -288,7 +288,7 @@ background-color:#000000 * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); } <#else/> @@ -322,7 +322,7 @@ background-color:#000000 * 初始化 */ window.onload = function () { - initWaterMark(); + //initWaterMark(); loadText(); } diff --git a/tool-tech-file-view/src/main/resources/web/xmind.ftl b/tool-tech-file-view/src/main/resources/web/xmind.ftl index 3912e34..f7dedea 100644 --- a/tool-tech-file-view/src/main/resources/web/xmind.ftl +++ b/tool-tech-file-view/src/main/resources/web/xmind.ftl @@ -47,7 +47,7 @@ if (!!window.ActiveXObject || "ActiveXObject" in window) { }else{ - initWaterMark(); + //initWaterMark(); } diff --git a/tool-tech-file-view/src/main/resources/web/xml.ftl b/tool-tech-file-view/src/main/resources/web/xml.ftl index dd7a277..c05938b 100644 --- a/tool-tech-file-view/src/main/resources/web/xml.ftl +++ b/tool-tech-file-view/src/main/resources/web/xml.ftl @@ -43,7 +43,7 @@ */ window.onload = function () { $("#xml_btn").hide() - initWaterMark(); + //initWaterMark(); loadXmlData() } From e6902853386fc1daafb422cd9d04d8a64b119f52 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Tue, 3 Sep 2024 09:28:01 +0800 Subject: [PATCH 20/36] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=AF=A6=E6=83=85=E3=80=81=E8=AF=84=E8=AE=BA=EF=BC=8C?= =?UTF-8?q?=E5=92=8C=E5=AF=BC=E5=87=BAword=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CommonController.java | 2 + .../document/DocumentController.java | 8 ++++ .../web/controller/tool/ToolController.java | 13 ++++++ .../java/com/rzdata/web/domain/Document.java | 5 +++ .../main/java/com/rzdata/web/domain/Tool.java | 12 +++++- .../rzdata/web/service/IDocumentService.java | 2 + .../com/rzdata/web/service/IToolService.java | 2 + .../web/service/impl/DocumentServiceImpl.java | 41 +++++++++++++++++++ .../web/service/impl/ToolServiceImpl.java | 37 +++++++++++++++++ .../main/resources/mapper/DocumentMapper.xml | 2 + .../src/main/resources/mapper/ToolMapper.xml | 1 - 11 files changed, 122 insertions(+), 3 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 025075a..78a0fc5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -191,6 +191,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); } } @@ -222,6 +223,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 { // 清理临时文件 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java index cc014b2..d0c6a50 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java @@ -120,4 +120,12 @@ public class DocumentController extends BaseController { return AjaxResult.success(documentService.statistics()); } + + + @GetMapping("/all/list") + public AjaxResult allList(Document Document) + { + List list = documentService.selectAllList(Document); + return AjaxResult.success(list); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index e244f87..530f01d 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -97,6 +97,19 @@ public class ToolController extends BaseController util.exportExcel(response, list, "工具信息数据",tTool.getExcludeFields()); } + + + /** + * 导出工具信息列表 + */ + @Log(title = "工具信息", businessType = BusinessType.EXPORT) + @GetMapping("/export/word/list") + public AjaxResult exportWordList(Tool tool) + { + List list = toolService.selectAllList(tool); + return AjaxResult.success(list); + } + /** * 获取工具信息详细信息 */ diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index ce34d8e..85669f7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -104,4 +104,9 @@ public class Document extends BaseEntity { private Boolean permissionCheck; private Boolean permission; + + private String docTypeName; + private String docSourceName; + private String statusName; + private String createNowTime; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index ad5856b..5dac1f4 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -33,9 +33,11 @@ public class Tool extends BaseEntity private String toolType; /** 来源 */ - @Excel(name = "工具来源",sort=3) + @Excel(name = "工具来源",dictType="tool_source",sort=3) private String toolSource; + private String toolSourceName; + /** 用途 */ @Excel(name = "工具用途",sort=7) private String toolUse; @@ -70,7 +72,7 @@ public class Tool extends BaseEntity private String toolRespDeptName; /** 状态 */ - @Excel(name = "状态",dictType="sys_normal_disable",sort=6) + @Excel(name = "状态",dictType="tool_status",sort=6) private String status; /** 备注 */ @@ -100,4 +102,10 @@ public class Tool extends BaseEntity private List excludeFields; private List documentList; + + + /** 工具类型名称 **/ + private String toolTypeName; + /** 状态名称 **/ + private String statusName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java index 7f77659..352b298 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentService.java @@ -77,4 +77,6 @@ public interface IDocumentService public int batchDeleteById(List docIds); Map statistics(); + + List selectAllList(Document document); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index 9905ac7..dbd3e41 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -84,4 +84,6 @@ public interface IToolService void sendTzMessage(Tool tTool); Map statistics(); + + List selectAllList(Tool tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index e86ae5c..c6a7ec9 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -1,6 +1,7 @@ package com.rzdata.web.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -10,6 +11,7 @@ import com.rzdata.common.core.domain.entity.SysDictData; import com.rzdata.common.core.domain.entity.SysUser; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; +import com.rzdata.system.service.ISysDeptService; import com.rzdata.system.service.ISysDictTypeService; import com.rzdata.web.domain.Attachment; import com.rzdata.web.domain.Document; @@ -46,6 +48,10 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private ISysDictTypeService sysDictTypeService; + + @Autowired + private ISysDeptService sysDeptService; + /** * 查询【请填写功能名称】 * @@ -305,5 +311,40 @@ public class DocumentServiceImpl implements IDocumentService } } } + + @Override + public List selectAllList(Document document) { + List documents = documentMapper.selectDocumentList(document); + List docClassList = sysDictTypeService.selectDictDataByType("doc_class"); + List docSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + List docStatusList = sysDictTypeService.selectDictDataByType("doc_upload_status"); + for (Document item : documents) { + for (SysDictData sysDictData : docClassList) { + if(sysDictData.getDictValue().equals(item.getDocType())){ + item.setDocTypeName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : docSourceList) { + if(sysDictData.getDictValue().equals(item.getDocSource())){ + item.setDocSourceName(sysDictData.getDictLabel()); + break; + } + } + + for (SysDictData sysDictData : docStatusList) { + if(sysDictData.getDictValue().equals(item.getDocStatus())){ + item.setStatusName(sysDictData.getDictLabel()); + break; + } + } + if( StrUtil.isNotBlank(item.getDocRespDept())){ + item.setDocRespDeptName(sysDeptService.getDeptName(item.getDocRespDept())); + } + item.setCreateNowTime(DateUtil.format(item.getCreateTime(), "yyyy-MM-dd hh:mm")); + } + return documents; + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 8630583..25a5cc5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -339,4 +339,41 @@ public class ToolServiceImpl implements IToolService } } } + + + @Override + public List selectAllList(Tool tool) { + List tools = toolMapper.selectToolList(tool); + List toolSource = sysDictTypeService.selectDictDataByType("tool_source"); + List toolTypeList = sysDictTypeService.selectDictDataByType("tool_type"); + List toolStatus = sysDictTypeService.selectDictDataByType("tool_status"); + + 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; + } + } + if( StrUtil.isNotBlank(tool.getToolRespDept())){ + item.setToolRespDeptName(sysDeptService.getDeptName(tool.getToolRespDept())); + } + + } + return tools; + } } diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index 45cbb02..e4222b6 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -24,6 +24,8 @@ + + diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index af84003..ecec678 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -148,7 +148,6 @@ 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 d on u.tool_resp_dept = d.dept_id where 1=1 and u.record_status != 'cancel' From df7e623f4fb5c823549c8e7e869a2106804d7bee Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Tue, 3 Sep 2024 16:16:36 +0800 Subject: [PATCH 21/36] =?UTF-8?q?1.=E6=89=80=E6=9C=89=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4=202.=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=88=86=E6=9E=90=E8=B0=83=E6=95=B4=203.=E5=AF=BC=E5=87=BAword?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/impl/DocumentServiceImpl.java | 34 ++++++++++++++++--- .../web/service/impl/ToolServiceImpl.java | 29 ++++++++++++++-- .../resources/mapper/DownloadCountMapper.xml | 6 ++++ .../src/main/resources/mapper/ToolMapper.xml | 2 +- 4 files changed, 64 insertions(+), 7 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index c6a7ec9..9ee4e17 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -286,12 +286,17 @@ public class DocumentServiceImpl implements IDocumentService private void assembleData(List> countType, List> countSource) { // - List toolTypeList = sysDictTypeService.selectDictDataByType("doc_class"); - List toolSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + List docClassList = sysDictTypeService.selectDictDataByType("doc_class"); + List docSourceList = sysDictTypeService.selectDictDataByType("doc_source"); + + //初始化数据 + initDictData(docClassList,countType); + initDictData(docSourceList, countSource); + if(CollUtil.isNotEmpty(countType)){ for (Map map : countType) { map.put("value", map.get("statistics")); - for (SysDictData sysDictData : toolTypeList) { + for (SysDictData sysDictData : docClassList) { if(sysDictData.getDictValue().equals(map.get("types"))){ map.put("name", sysDictData.getDictLabel()); break; @@ -302,7 +307,7 @@ public class DocumentServiceImpl implements IDocumentService if(CollUtil.isNotEmpty(countSource)){ for (Map 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; @@ -312,6 +317,27 @@ public class DocumentServiceImpl implements IDocumentService } } + private void initDictData(List dictDataList, List> mapTypeList) { + for (SysDictData sysDictData : dictDataList) { + boolean flag = false; + for (Map map : mapTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + flag = true; + break; + } + } + if(!flag){ + Map map = new HashMap<>(); + map.put("value", "0"); + map.put("name", sysDictData.getDictLabel()); + map.put("types", sysDictData.getDictValue()); + map.put("statistics", "0"); + mapTypeList.add(map); + } + } + } + + @Override public List selectAllList(Document document) { List documents = documentMapper.selectDocumentList(document); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 25a5cc5..636e25e 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -286,7 +286,7 @@ public class ToolServiceImpl implements IToolService List> countToolType = toolMapper.countToolType(); List> toolSource = toolMapper.toolSource(); List> recordStatus = toolMapper.recordStatus(); - //组织数据 + //组装数据 assembleData(countToolType, toolSource, recordStatus); result.put("countToolType", countToolType); @@ -298,9 +298,14 @@ public class ToolServiceImpl implements IToolService private void assembleData(List> countToolType, List> toolSource, List> recordStatus) { List toolTypeList = sysDictTypeService.selectDictDataByType("tool_type"); - List flowStatusList = sysDictTypeService.selectDictDataByType("flow_status"); + List flowStatusList = sysDictTypeService.selectDictDataByType("flow_status").stream().filter(item -> !item.getDictValue().equals("cancel")).collect(Collectors.toList()); List toolSourceList = sysDictTypeService.selectDictDataByType("tool_source"); + //初始化数据 + initDictData(toolTypeList, countToolType); + initDictData(toolSourceList, toolSource); + initDictData(flowStatusList, recordStatus); + if(CollUtil.isNotEmpty(countToolType)){ for (Map map : countToolType) { map.put("value", map.get("statistics")); @@ -340,6 +345,26 @@ public class ToolServiceImpl implements IToolService } } + private void initDictData(List dictDataList, List> mapTypeList) { + for (SysDictData sysDictData : dictDataList) { + boolean flag = false; + for (Map map : mapTypeList) { + if(sysDictData.getDictValue().equals(map.get("types"))){ + flag = true; + break; + } + } + if(!flag){ + Map map = new HashMap<>(); + map.put("value", "0"); + map.put("name", sysDictData.getDictLabel()); + map.put("types", sysDictData.getDictValue()); + map.put("statistics", "0"); + mapTypeList.add(map); + } + } + } + @Override public List selectAllList(Tool tool) { diff --git a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml index 7fc6b7b..09eac70 100644 --- a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml @@ -35,6 +35,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND date_format(tdc.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + + AND tl.tool_code like concat('%', #{toolCode}, '%') + + + AND tl.tool_name like concat('%', #{toolName}, '%') + group by tdc.tool_id,tl.tool_code,tl.tool_name diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index ecec678..d722bfc 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -155,7 +155,7 @@ AND u.tool_id = #{toolId} - AND u.tool_code = #{toolCode} + AND u.tool_code like concat('%', #{toolCode}, '%') AND u.tool_name like concat('%', #{toolName}, '%') From 801ad634dc31cc880b7a1a1cd1b6c10169b2932e Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Tue, 3 Sep 2024 17:30:11 +0800 Subject: [PATCH 22/36] =?UTF-8?q?1=E3=80=81=E9=97=AE=E9=A2=98=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../document/DocumentCategoryController.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java index 3b62910..2d34d88 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentCategoryController.java @@ -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) From c57babe9ce900fb8f3cedd6d2a7ef380c744ec9f Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Wed, 4 Sep 2024 22:15:51 +0800 Subject: [PATCH 23/36] update --- .../rzdata/web/controller/tool/ToolApplyController.java | 2 +- .../com/rzdata/web/controller/tool/ToolController.java | 8 +++++++- .../src/main/java/com/rzdata/web/domain/Tool.java | 2 ++ .../src/main/resources/mapper/system/SysUserMapper.xml | 3 +++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java index 4361ccb..bebb20e 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolApplyController.java @@ -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); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index e244f87..cc80bc7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -71,7 +71,7 @@ public class ToolController extends BaseController //前端传传参开启下载权限验证 if (BooleanUtil.isTrue(tool.getDownloadCheck())) { String userId = SecurityUtils.getUserId().toString(); - for (Tool vo:list) { + for (Tool vo : list) { //创建人、下载权限、系统管理员 //1.已经审核通过、并且有下载权限 vo.setDownloadStatus( @@ -80,6 +80,12 @@ public class ToolController extends BaseController SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION) || ( RecordStatusEnum.DONE.getCode().equals(vo.getRecordStatus())&& iToolApplyService.checkToolApply(vo.getToolId(),userId))); + + ToolApply toolApply = new ToolApply(); + toolApply.setToolId(vo.getToolId()); + toolApply.setUserId(userId); + List hasApplyUsToolApplyList = iToolApplyService.selectToolApplyList(toolApply); + vo.setIsHasApplyUse(hasApplyUsToolApplyList.size() > 0); } } return getDataTable(list); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index ad5856b..a0aefe5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -97,6 +97,8 @@ public class Tool extends BaseEntity private Boolean downloadStatus; + private Boolean isHasApplyUse; + private List excludeFields; private List documentList; diff --git a/tool-tech-system/src/main/resources/mapper/system/SysUserMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysUserMapper.xml index 628dce5..786ebfb 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -66,6 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND u.user_name like concat('%', #{userName}, '%') + + AND u.nick_name like concat('%', #{nickName}, '%') + AND u.status = #{status} From 6f70344177c73a4e4dffc016e99e73f728bcc327 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Thu, 5 Sep 2024 08:58:44 +0800 Subject: [PATCH 24/36] =?UTF-8?q?1=E3=80=81=E5=85=B3=E8=81=94=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=8B=AC=E7=AB=8B=E5=87=BA=E6=9D=A5=202=E3=80=81?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=AE=A1=E7=90=86=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E9=83=BD=E8=A6=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/tool/AttachmentController.java | 6 --- .../web/controller/tool/ToolController.java | 14 +++-- .../com/rzdata/web/domain/Attachment.java | 5 +- .../com/rzdata/web/domain/DownloadCount.java | 10 +++- .../main/java/com/rzdata/web/domain/Tool.java | 1 + .../rzdata/web/mapper/AttachmentMapper.java | 3 ++ .../web/service/IAttachmentService.java | 7 +++ .../com/rzdata/web/service/IToolService.java | 4 +- .../service/impl/AttachmentServiceImpl.java | 5 ++ .../web/service/impl/ToolServiceImpl.java | 53 +++++++++---------- .../resources/mapper/AttachmentMapper.xml | 14 ++++- .../resources/mapper/DownloadCountMapper.xml | 36 +++++++++---- .../com/rzdata/common/constant/Constants.java | 2 + 13 files changed, 101 insertions(+), 59 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java index 614ebb0..1dab487 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/AttachmentController.java @@ -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) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 32a687e..7d17169 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -1,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; @@ -170,17 +169,16 @@ public class ToolController extends BaseController if (add) { tTool.setProcInstId(processInstanceModel.getProcInstId()); toolService.insertTool(tTool); - //保存文档和附件 - toolService.addDocAndAtt(tTool); - + //保存附件 + toolService.addFileList(tTool); //记录申请数据 toolService.recordToolApply(tTool); } else if (BooleanUtil.isTrue(tTool.getEditStatus())){ toolService.updateTool(tTool); - //删除文档和附件 - toolService.deleteDocAndAtt(tTool); - //保存文档和附件 - toolService.addDocAndAtt(tTool); + //删除附件 + toolService.delFile(tTool); + //保存附件 + toolService.addFileList(tTool); } else { Tool tool = new Tool(); tool.setToolId(tTool.getToolId()); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java index 4561dbe..f51155a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java @@ -65,12 +65,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 +78,7 @@ public class Attachment extends BaseEntity private Date failureTime; private List businessIds; + + /** 文件名称 **/ + private String fileName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java index ba94060..0411827 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java @@ -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") diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index adb0d61..f098ea1 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -104,6 +104,7 @@ public class Tool extends BaseEntity private List excludeFields; private List documentList; + private List attachmentList; /** 工具类型名称 **/ diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java index 298ac70..f288efc 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/AttachmentMapper.java @@ -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 list); + + int batchInsert(@Param("attachmentList") List attachmentList); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java index 808c432..4b2f2b1 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java @@ -67,4 +67,11 @@ public interface IAttachmentService * @return 结果 */ public int deleteAttachmentById(String id); + + /** + * 批量插入 + * @param batch + * @return + */ + public int batchInsert(List batch); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index dbd3e41..6823579 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -69,13 +69,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); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java index 3b33e73..71f5e3c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java @@ -114,4 +114,9 @@ public class AttachmentServiceImpl implements IAttachmentService { return attachmentMapper.deleteAttachmentById(id); } + + @Override + public int batchInsert(List batch) { + return attachmentMapper.batchInsert(batch); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 636e25e..602a620 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -16,10 +16,7 @@ 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 +25,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; @@ -143,37 +137,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 documentList = tool.getDocumentList(); - if(CollUtil.isEmpty(documentList)){ - return; - } - //先删除,后新增 - List docIds = documentList.stream().map(Document::getDocId).collect(Collectors.toList()); - iAttachmentService.deleteAttachmentByBusinessId(docIds); - documentService.batchDeleteById(docIds); + public void delFile(Tool tool) { + List toolIds = Collections.singletonList(tool.getToolId()); + iAttachmentService.deleteAttachmentByBusinessId(toolIds); } @Override @Transactional(rollbackFor = Exception.class) - public void addDocAndAtt(Tool tool) { - List documentList = tool.getDocumentList(); - if(CollUtil.isEmpty(documentList)){ + public void addFileList(Tool tool) { + List 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> grouped = attachmentList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> iAttachmentService.batchInsert(batch)); } @Override diff --git a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml index 7a27c95..0faba97 100644 --- a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml @@ -21,10 +21,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - 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_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 select - tdc.tool_id,tl.tool_code,tl.tool_name,sum(1) as tool_down_num + tdc.business_id,tdc.att_name,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 + and business_type = 'tool' AND date_format(tdc.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') @@ -42,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND tl.tool_name like concat('%', #{toolName}, '%') - group by tdc.tool_id,tl.tool_code,tl.tool_name + group by tdc.business_id,tdc.att_name,tl.tool_code,tl.tool_name 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 - - AND tool_id = #{toolId} + + AND business_id = #{businessId} group by su.nick_name diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index 2873d2b..2d0ed14 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -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"; From 3d679da3c302b9535677c1c83f0114049a6e6ef5 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Thu, 5 Sep 2024 21:26:23 +0800 Subject: [PATCH 25/36] =?UTF-8?q?1=E3=80=81=E6=96=87=E6=A1=A3=E3=80=81?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=8B=AC=E7=AB=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tool-tech-admin/pom.xml | 12 +++ .../controller/common/CommonController.java | 24 ++++++ .../document/DocumentController.java | 6 +- .../web/controller/tool/ToolController.java | 6 +- .../com/rzdata/web/domain/Attachment.java | 4 + .../java/com/rzdata/web/domain/Document.java | 8 +- .../web/domain/FileOperationRequest.java | 20 +++++ .../main/java/com/rzdata/web/domain/Tool.java | 2 + .../web/service/IAttachmentService.java | 3 + .../service/impl/AttachmentServiceImpl.java | 74 ++++++++++++++++++- .../web/service/impl/DocumentServiceImpl.java | 68 ++++++++++------- .../web/service/impl/ToolServiceImpl.java | 4 +- .../resources/mapper/AttachmentMapper.xml | 12 ++- .../main/resources/mapper/DocumentMapper.xml | 13 +++- .../src/main/resources/mapper/ToolMapper.xml | 6 ++ .../com/rzdata/common/constant/Constants.java | 10 +++ 16 files changed, 230 insertions(+), 42 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java diff --git a/tool-tech-admin/pom.xml b/tool-tech-admin/pom.xml index 6a1b9d0..3b63802 100644 --- a/tool-tech-admin/pom.xml +++ b/tool-tech-admin/pom.xml @@ -85,6 +85,18 @@ lombok
+ + + com.documents4j + documents4j-local + 1.0.3 + + + com.documents4j + documents4j-transformer-msoffice-word + 1.0.3 + +
diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 78a0fc5..51ca39f 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -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 resourceDownload(@RequestBody Attachment attachment) + { + byte[] bytes = attachmentService.loadFileAsBytes(attachment); + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/octet-stream")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + attachment.getFileOldName() + "\"") + .body(bytes); + } + @PostMapping("/initUpload") public ResponseEntity> initUpload(@RequestParam("fileName") String fileName) { // 上传文件路径 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java index d0c6a50..8986f4d 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/document/DocumentController.java @@ -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) { @@ -122,8 +122,8 @@ public class DocumentController extends BaseController } - @GetMapping("/all/list") - public AjaxResult allList(Document Document) + @PostMapping("/export/word/list") + public AjaxResult exportWordList(Document Document) { List list = documentService.selectAllList(Document); return AjaxResult.success(list); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 7d17169..db06763 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -94,6 +94,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) { @@ -108,7 +109,8 @@ public class ToolController extends BaseController * 导出工具信息列表 */ @Log(title = "工具信息", businessType = BusinessType.EXPORT) - @GetMapping("/export/word/list") + @PreAuthorize("@ss.hasPermi('tool:list')") + @PostMapping("/export/word/list") public AjaxResult exportWordList(Tool tool) { List list = toolService.selectAllList(tool); @@ -194,8 +196,6 @@ public class ToolController extends BaseController //办结 if(RecordStatusEnum.DONE.getCode().equals(tTool.getRecordStatus())){ - //更新文档状态 - toolService.updateDocPushStatus(tTool); //给消息中心发送消息 toolService.sendTzMessage(tTool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java index f51155a..efd3e0b 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Attachment.java @@ -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; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index 85669f7..21469c7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -37,9 +37,11 @@ public class Document extends BaseEntity { private String docType; /** 文档负责人 */ - @Excel(name = "负责人") private String docPrincipals; + /** 文档负责人名称 */ + private String docPrincipalsName; + /** 归属单位 **/ @Excel(name = "归属单位") private String docRespDeptName; @@ -109,4 +111,8 @@ public class Document extends BaseEntity { private String docSourceName; private String statusName; private String createNowTime; + + private List attachmentList; + /** 主键 **/ + private List docIdList; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java new file mode 100644 index 0000000..a9d917b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/FileOperationRequest.java @@ -0,0 +1,20 @@ +package com.rzdata.web.domain; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FileOperationRequest { + private String id; + private String name; + private Boolean isLocal; + /** preview:预览,download:下载 **/ + private String type; + /** + * 模板下载类型 + * 1: 导入模板 + * 2:示例请求模板 + */ + private String templateDownloadType; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index f098ea1..3b73df0 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -111,4 +111,6 @@ public class Tool extends BaseEntity private String toolTypeName; /** 状态名称 **/ private String statusName; + /** 主键 **/ + private List toolIdList; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java index 4b2f2b1..e7180da 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IAttachmentService.java @@ -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; @@ -74,4 +75,6 @@ public interface IAttachmentService * @return */ public int batchInsert(List batch); + + byte[] loadFileAsBytes(Attachment attachment); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java index 71f5e3c..84c5cd7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java @@ -1,10 +1,21 @@ package com.rzdata.web.service.impl; +import java.io.*; import java.util.List; +import cn.hutool.core.util.ObjectUtil; +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.domain.FileOperationRequest; 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; @@ -14,6 +25,7 @@ import org.springframework.stereotype.Service; * @author panchichun * @date 2024-08-28 */ +@Slf4j @Service public class AttachmentServiceImpl implements IAttachmentService { @@ -94,7 +106,7 @@ public class AttachmentServiceImpl implements IAttachmentService /** * 批量删除附件 * - * @param ids 需要删除的附件主键 + * @param businessIds 需要删除的附件主键 * @return 结果 */ @Override @@ -119,4 +131,64 @@ public class AttachmentServiceImpl implements IAttachmentService public int batchInsert(List batch) { return attachmentMapper.batchInsert(batch); } + + @Override + public byte[] loadFileAsBytes(Attachment attachment) { + // 本地资源路径 + String localPath = JaConfig.getProfile(); + // 全路径 + String uploadPath = localPath + StringUtils.substringAfter(attachment.getFilePath(), Constants.RESOURCE_PREFIX); + String fileName = attachment.getFileOldName(); + File file = null; + + if (fileName.endsWith(Constants.FILE_TYPE_DOC)) { + //获取doc名称转换为pdf名称 + String fileNameDocx = fileName.substring(0, fileName.lastIndexOf(Constants.SYMBOL_POINT)); + fileNameDocx += Constants.FILE_TYPE_PDF; + //获取转换的路径 + String pathDocx = uploadPath.substring(0, uploadPath.lastIndexOf('/') + 1) + fileNameDocx; + file = new File(pathDocx); + if (!file.exists()) { + convertDocToPdf(uploadPath,pathDocx); + // 再次检查转换后的文件是否存在 + if (!file.exists()) { + throw new ServiceException("转换后的文件不存在"); + } + } + }else{ + file = new File(uploadPath); + } + + byte[] result = null; + try (FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);) { + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + result = bos.toByteArray(); + } catch (Exception ex) { + log.error("AttachmentServiceImpl-->loadFileAsBytes----ex###", ex); + } + return result; + } + + /** + * word文件doc格式转换为pdf文件 + * @param docPath + * @param pdfPath + */ + public static void convertDocToPdf(String docPath, String pdfPath){ + File file = new File(docPath); + File outputFile = new File(pdfPath); + try (InputStream docxInputStream = new FileInputStream(file); + OutputStream outputStream = new FileOutputStream(outputFile)) { + IConverter converter = LocalConverter.builder().build(); + converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); + } catch (IOException e) { + log.error("AttachmentServiceImpl-->convertDocToPdf----e###", e); + throw new ServiceException("转换异常"); + } + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 9ee4e17..9729fb4 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -2,6 +2,7 @@ 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; @@ -24,6 +25,7 @@ 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; /** @@ -52,6 +54,9 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private ISysDeptService sysDeptService; + @Autowired + private Snowflake snowflake; + /** * 查询【请填写功能名称】 * @@ -166,22 +171,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 toolIds = Collections.singletonList(document.getDocId()); + attachmentService.deleteAttachmentByBusinessId(toolIds); + } + + @Transactional(rollbackFor = Exception.class) + public void addFileList(Document document) { + List attachmentList = document.getAttachmentList(); + if(CollUtil.isEmpty(attachmentList)){ + return; + } + for (Attachment attachment : attachmentList) { + attachment.setId(String.valueOf(snowflake.nextId())); + attachment.setBusinessId(document.getDocId()); + attachment.setBizType(Constants.DOC_TYPE_DOC); + attachment.setDel(Constants.STR_ZERO); + attachment.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + attachment.setCreateDate(new Date()); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = attachmentList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> attachmentService.batchInsert(batch)); + } + /** * 修改【请填写功能名称】 * @@ -196,24 +224,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; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 602a620..2783b2f 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -137,8 +137,8 @@ public class ToolServiceImpl implements IToolService tool.setUpdateBy(SecurityUtils.getUserId().toString()); tool.setUpdateTime(DateUtils.getNowDate()); int result = toolMapper.updateTool(tool); - delFile(tool); - addFileList(tool); + /* delFile(tool); + addFileList(tool);*/ return result; } diff --git a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml index 0faba97..d55df7f 100644 --- a/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/AttachmentMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -25,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, biz_type, file_url, file_old_name, file_new_name, suffix_type, + 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 @@ -35,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and biz_type = #{bizType} + and file_path = #{filePath} and file_url = #{fileUrl} and file_old_name like concat('%', #{fileOldName}, '%') and file_new_name like concat('%', #{fileNewName}, '%') @@ -65,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id, biz_type, + file_path, file_url, file_old_name, file_new_name, @@ -83,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id}, #{bizType}, + #{filePath}, #{fileUrl}, #{fileOldName}, #{fileNewName}, @@ -105,6 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" biz_type = #{bizType}, file_url = #{fileUrl}, + file_path = #{filePath}, file_old_name = #{fileOldName}, file_new_name = #{fileNewName}, suffix_type = #{suffixType}, @@ -128,6 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" biz_type = #{bizType}, file_url = #{fileUrl}, + file_path = #{filePath}, file_old_name = #{fileOldName}, file_new_name = #{fileNewName}, suffix_type = #{suffixType}, @@ -164,10 +170,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - INSERT INTO t_attachment (id, biz_type, file_url, file_old_name, file_new_name, suffix_type, file_size, business_id, sorts, remark, del, create_by, create_date) + INSERT INTO t_attachment (id, biz_type, file_path, file_url, file_old_name, file_new_name, suffix_type, file_size, business_id, sorts, remark, del, create_by, create_date) VALUES - #{item.id}, #{item.bizType}, #{item.fileUrl}, #{item.fileOldName}, #{item.fileNewName}, #{item.suffixType}, #{item.fileSize}, #{item.businessId}, #{item.sorts}, #{item.remark}, #{item.del}, #{item.createBy}, #{item.createDate} + #{item.id}, #{item.bizType}, #{item.filePath}, #{item.fileUrl}, #{item.fileOldName}, #{item.fileNewName}, #{item.suffixType}, #{item.fileSize}, #{item.businessId}, #{item.sorts}, #{item.remark}, #{item.del}, #{item.createBy}, #{item.createDate} \ No newline at end of file diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index e4222b6..6befa39 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -10,6 +10,7 @@ + @@ -30,7 +31,7 @@ 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 @@ -58,6 +59,13 @@ AND (td.create_by_id = #{createById} or td.doc_status = 'yfb') + + and td.doc_id in + + #{id} + + + and td.is_deleted = '0' order by td.create_time desc @@ -76,6 +84,7 @@ doc_name, doc_type, doc_principals, + doc_principals_name, doc_resp_dept, doc_source, doc_status, @@ -97,6 +106,7 @@ #{docName}, #{docType}, #{docPrincipals}, + #{docPrincipalsName}, #{docRespDept}, #{docSource}, #{docStatus}, @@ -121,6 +131,7 @@ doc_name = #{docName}, doc_type = #{docType}, doc_principals = #{docPrincipals}, + doc_principals_name = #{docPrincipalsName}, doc_resp_dept = #{docRespDept}, doc_source = #{docSource}, doc_status = #{docStatus}, diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index d722bfc..360d0d1 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -178,6 +178,12 @@ AND u.record_status = #{recordStatus} + + and u.tool_id in + + #{id} + + ${params.dataScope} order by create_time desc diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java index 2d0ed14..612835f 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/Constants.java @@ -214,4 +214,14 @@ public class Constants /** 申请查看素哟偶数据 **/ 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 ="/"; } From f90c8e0c6f8cf6f81b571b0533ee37aac5c12d51 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Thu, 5 Sep 2024 22:36:07 +0800 Subject: [PATCH 26/36] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=92=8C=E5=B7=A5=E5=85=B7=E7=BB=9F=E8=AE=A1=202?= =?UTF-8?q?=E3=80=81=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4=203=E3=80=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E5=88=86=E9=A1=B5=EF=BC=88?= =?UTF-8?q?=E8=BF=98=E6=9C=89=E4=B8=80=E9=83=A8=E5=88=86=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/DownloadCountController.java | 34 ++++++++++--------- .../com/rzdata/web/domain/DownloadCount.java | 7 ++++ .../web/mapper/DownloadCountMapper.java | 3 ++ .../web/service/IDownloadCountService.java | 8 +++++ .../impl/DownloadCountServiceImpl.java | 5 +++ .../resources/mapper/DownloadCountMapper.xml | 33 ++++++++++++++++-- 6 files changed, 71 insertions(+), 19 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java index 1b3346f..c870af9 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/DownloadCountController.java @@ -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 list = downloadCountService.selectDownloadDocCountList(downloadCount); + return getDataTable(list); + } + /** * 根据详情统计 */ diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java index 0411827..b568e07 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/DownloadCount.java @@ -46,4 +46,11 @@ public class DownloadCount extends BaseEntity private String toolDownNum; private String nickName; + /** 文档code */ + private String docCode; + /** 文档名称 */ + private String docName; + /** 文档下载数量 */ + private String docDownNum; + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java index 43c7028..8950a2a 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/DownloadCountMapper.java @@ -61,4 +61,7 @@ public interface DownloadCountMapper public int deleteDownloadCountByIds(String[] ids); List userDownList(DownloadCount downloadCount); + + /** 文档下载统计 **/ + List selectDownloadDocCountList(DownloadCount downloadCount); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java index a976e40..1a3be04 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDownloadCountService.java @@ -66,4 +66,12 @@ public interface IDownloadCountService * @return */ List userDownList(DownloadCount downloadCount); + + /** + * 文档下载统计 + * @param downloadCount + * @return + */ + List selectDownloadDocCountList(DownloadCount downloadCount); + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java index 1300816..602f444 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DownloadCountServiceImpl.java @@ -107,4 +107,9 @@ public class DownloadCountServiceImpl implements IDownloadCountService public List userDownList(DownloadCount downloadCount) { return downloadCountMapper.userDownList(downloadCount); } + + @Override + public List selectDownloadDocCountList(DownloadCount downloadCount) { + return downloadCountMapper.selectDownloadDocCountList(downloadCount); + } } diff --git a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml index 94e7504..be41d49 100644 --- a/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DownloadCountMapper.xml @@ -19,6 +19,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -29,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + \ No newline at end of file From 7131d744a4c202a3ca986dacdf9825b18bea7c45 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Fri, 6 Sep 2024 19:59:46 +0800 Subject: [PATCH 27/36] =?UTF-8?q?1=E3=80=81=E5=8F=B3=E4=B8=8A=E8=A7=92?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=202=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=BF=9E=E6=8E=A5=E7=82=B9=E5=87=BB=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=AF=B9=E5=BA=94=E7=9A=84=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=203=E3=80=81=E9=A1=B5=E9=9D=A2=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E5=85=B3=E8=81=94=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=89=8D=E7=AB=AF=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 12 +++ .../controller/tool/TzMessageController.java | 10 +++ .../java/com/rzdata/web/domain/TzMessage.java | 6 ++ .../rzdata/web/mapper/TzMessageMapper.java | 5 ++ .../rzdata/web/service/ITzMessageService.java | 7 ++ .../web/service/impl/DocumentServiceImpl.java | 75 ++++++++++++++++++- .../service/impl/ToolApplyServiceImpl.java | 2 + .../web/service/impl/ToolServiceImpl.java | 2 + .../service/impl/TzMessageServiceImpl.java | 5 ++ .../main/resources/mapper/DocumentMapper.xml | 5 +- .../main/resources/mapper/TzMessageMapper.xml | 25 +++++-- 11 files changed, 145 insertions(+), 9 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java index 5993734..5992991 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java @@ -2,6 +2,9 @@ package com.rzdata.web.controller.system; import java.util.List; import java.util.Set; + +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.service.ITzMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -34,6 +37,10 @@ public class SysLoginController @Autowired private SysPermissionService permissionService; + /** 消息中心 **/ + @Autowired + private ITzMessageService tzMessageService; + /** * 登录方法 * @@ -64,9 +71,14 @@ public class SysLoginController Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + + /** 未读消息 **/ + int unMsgNumber = tzMessageService.selectTzMessageByUserCount(String.valueOf(user.getUserId())); + AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); + ajax.put("unMsgNumber", unMsgNumber); ajax.put("permissions", permissions); return ajax; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java index 5e3c215..cda8b68 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java @@ -108,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)); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java index 8f39667..1a63479 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java @@ -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; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java index 8c62b40..d272354 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java @@ -74,4 +74,9 @@ public interface TzMessageMapper * @return */ public int batchInsert(@Param("tzMessageList") List tzMessageList); + + /** + * 消息中心未读消息数量查询 + * **/ + int selectTzMessageByUserCount(String userId); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java index 9444c12..a1f5bf2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java @@ -64,4 +64,11 @@ public interface ITzMessageService int allMarkedRead(TzMessage tzMessage); public int batchInsert(List tzMessageList); + + /** + * 未读消息数量 + * @param userId + * @return + */ + int selectTzMessageByUserCount(String userId); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 9729fb4..d6b2b23 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -7,19 +7,25 @@ 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; @@ -34,6 +40,7 @@ import java.util.stream.Collectors; * @author ja * @date 2024-07-09 */ +@Slf4j @Service public class DocumentServiceImpl implements IDocumentService { @@ -57,6 +64,13 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private Snowflake snowflake; + @Autowired + private ISysUserService iSysUserService; + + + @Autowired + private ITzMessageService tzMessageService; + /** * 查询【请填写功能名称】 * @@ -71,6 +85,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); @@ -88,6 +103,7 @@ public class DocumentServiceImpl implements IDocumentService * @return 【请填写功能名称】 */ @Override + @DataScope(deptAlias = "sd") public List selectDocumentList(Document document) { if (BooleanUtil.isTrue(document.getPermissionCheck())) { @@ -265,13 +281,68 @@ public class DocumentServiceImpl implements IDocumentService */ @Override public int pushDoc(String[] ids) { + List 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 documents = documentMapper.selectDocumentList(document); + + SysUser sysUser = new SysUser(); + sysUser.setStatus("0"); + sysUser.setDelFlag("0"); + List sysUsers = iSysUserService.selectUserList(sysUser); + for (Document docItem : documents) { + sendTzMessage(docItem, sysUsers); + } + + + return result; + } + + /** + * 给消息中心发送消息 + */ + public void sendTzMessage(Document doc, List sysUsers) { + try{ + String content = doc.getDocName() + "已发布"; + List addList = new ArrayList<>(); + for (SysUser user : sysUsers) { + TzMessage tzMessage = new TzMessage(); + //雪花 + tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(doc.getDocId()); + tzMessage.setBusinessType(Constants.DOC_TYPE_DOC); + tzMessage.setReceiverId(String.valueOf(user.getUserId())); + tzMessage.setStates(1); + tzMessage.setContent(content); + tzMessage.setDeleted("0"); + tzMessage.setCreateTime(DateUtils.getNowDate()); + tzMessage.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + addList.add(tzMessage); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = addList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> tzMessageService.batchInsert(batch)); + }catch (Exception e){ + log.error("UseApplyServiceImpl-->sendTzMessage--发送消息中心异常--e###", e); + } } /** diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java index 797b8cf..9d1cddf 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -146,6 +146,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); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 2783b2f..6087bf5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -256,6 +256,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); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java index a0fab22..e04d890 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java @@ -121,4 +121,9 @@ public class TzMessageServiceImpl implements ITzMessageService public int batchInsert(List tzMessageList) { return tzMessageMapper.batchInsert(tzMessageList); } + + @Override + public int selectTzMessageByUserCount(String userId) { + return tzMessageMapper.selectTzMessageByUserCount(userId); + } } diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index 6befa39..b8096a0 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -36,10 +36,10 @@ diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml index 0416368..2aa7071 100644 --- a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -7,6 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -20,7 +22,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 @@ -44,6 +49,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id, receiver_id, + business_id, + business_type, states, content, deleted, @@ -58,6 +65,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id}, #{receiverId}, + #{businessId}, + #{businessType}, #{states}, #{content}, #{deleted}, @@ -66,8 +75,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateBy}, #{updateTime}, #{remark}, - #{create_by_id}, - #{update_by_id}, + #{createById}, + #{updateById}, @@ -75,6 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update tz_message receiver_id = #{receiverId}, + business_id = #{businessId}, + business_type = #{businessType}, states = #{states}, content = #{content}, deleted = #{deleted}, @@ -106,10 +117,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_by_id, create_time) + insert into tz_message (id, business_id, business_type, receiver_id, states, content, deleted, create_by, create_by_id, create_time) values - #{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime} + #{item.id}, #{item.businessId}, #{item.businessType}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime} + + \ No newline at end of file From 5607c957fb6010056fe3af37b7eb160bb0f4b37d Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Sat, 7 Sep 2024 20:53:10 +0800 Subject: [PATCH 28/36] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/rzdata/web/service/impl/DocumentServiceImpl.java | 2 +- tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index d6b2b23..d530c79 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -103,7 +103,7 @@ public class DocumentServiceImpl implements IDocumentService * @return 【请填写功能名称】 */ @Override - @DataScope(deptAlias = "sd") + @DataScope(deptAlias = "sd", userAlias = "su") public List selectDocumentList(Document document) { if (BooleanUtil.isTrue(document.getPermissionCheck())) { diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index b8096a0..50d551a 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -40,6 +40,7 @@ from t_document td left join t_tool on t_tool.tool_id = td.tool_id 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 and td.doc_code like concat('%', #{docCode}, '%') and td.doc_name like concat('%', #{docName}, '%') From b69682c2d08cfadda8f476d6a9846c465fcd4bcf Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Sun, 8 Sep 2024 20:32:22 +0800 Subject: [PATCH 29/36] update --- .../controller/tool/WorkflowController.java | 15 +++++++++ .../rzdata/web/service/WorkflowService.java | 33 +++++++++++++++++++ .../main/resources/mapper/TzMessageMapper.xml | 1 + .../common/core/domain/entity/SysDept.java | 12 +++++++ .../service/impl/SysDeptServiceImpl.java | 10 ++++++ .../resources/mapper/system/SysDeptMapper.xml | 6 +++- 6 files changed, 76 insertions(+), 1 deletion(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java index 5b6d5d0..efec991 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/WorkflowController.java @@ -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 resultMap = workflowService.selectUserMsgCount(loginUser.getUser()); + ajax.put("msgCount", resultMap.get("msgCount")); + ajax.put("taskCount", resultMap.get("taskCount")); + ajax.put("totalMsgCount", resultMap.get("totalMsgCount")); + return ajax; + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java index d6220b6..d708952 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/WorkflowService.java @@ -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 selectUserMsgCount(SysUser user) { + Map resultMap = Maps.newHashMap(); + int totalMsgCount = 0; + int msgCount = 0; + int taskCount = 0; + try { + msgCount = tzMessageService.selectTzMessageByUserCount(String.valueOf(user.getUserId())); + totalMsgCount = msgCount; + resultMap.put("msgCount", msgCount); + } catch (Exception e){ + log.error("查询消息中心未读消息数量异常", e); + } + try { + SearchQuery searchQuery = new SearchQuery(); + searchQuery.setRecUserId(user.getUserName()); + searchQuery.setStatus(1); + Map resultRecordCount = getRecordCount(searchQuery); + taskCount = resultRecordCount.get("count"); + totalMsgCount += taskCount; + } catch (Exception e){ + log.error("查询待办消息数量异常", e); + } + resultMap.put("msgCount", msgCount); + resultMap.put("taskCount", taskCount); + resultMap.put("totalMsgCount", totalMsgCount); + return resultMap; + } } diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml index 2aa7071..b5f34a4 100644 --- a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and business_type = #{businessType} and deleted = '0' + order by create_time desc diff --git a/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml new file mode 100644 index 0000000..681c0e4 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + select id, resource_id, target_id from t_tool_relation + + + + + + + + + + + insert into t_tool_relation + + id, + resource_id, + target_id, + + + #{id}, + #{resourceId}, + #{targetId}, + + + + + update t_tool_relation + + resource_id = #{resourceId}, + target_id = #{targetId}, + + where id = #{id} + + + + delete from t_tool_relation where id = #{id} + + + + delete from t_tool_relation where resource_id = #{resourceId} and target_id = #{targetId} + + + + delete from t_tool_relation where target_id = #{targetId} and resource_id = #{resourceId} + + + + delete from t_tool_relation where id in + + #{id} + + + + + + + insert into t_tool_relation (id, resource_id, target_id) + values + + #{item.id}, #{item.resourceId}, #{item.targetId} + + + \ No newline at end of file diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java new file mode 100644 index 0000000..46fa4a0 --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java @@ -0,0 +1,39 @@ +package com.rzdata.common.core.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.core.domain.entity.SysMenu; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author ruoyi + */ +@Data +public class ToolTreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private String id; + + /** 节点名称 */ + private String label; + + /** 类型 */ + private String types; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public ToolTreeSelect() + { + + } +} From d3ec27eb1b559f641a6744adceca1d2328e10a20 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Sun, 8 Sep 2024 23:10:11 +0800 Subject: [PATCH 31/36] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E7=A6=85?= =?UTF-8?q?=E9=81=93bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/rzdata/web/domain/Document.java | 8 +++---- .../main/java/com/rzdata/web/domain/Tool.java | 21 +++++++++++++------ .../web/service/IDocumentCategoryService.java | 3 ++- .../impl/DocumentCategoryServiceImpl.java | 7 ++++--- .../web/service/impl/DocumentServiceImpl.java | 1 + .../web/service/impl/ToolServiceImpl.java | 7 +++++++ .../common/core/domain/ToolTreeSelect.java | 9 ++++++++ .../rzdata/common/core/domain/TreeSelect.java | 3 ++- .../resources/mapper/system/SysDeptMapper.xml | 2 +- .../mapper/system/SysDictTypeMapper.xml | 2 +- 10 files changed, 46 insertions(+), 17 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java index 21469c7..bf21870 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Document.java @@ -33,13 +33,14 @@ public class Document extends BaseEntity { private String docName; /** 文档类别 */ - @Excel(name = "类别", dictType="doc_class") + @Excel(name = "文档类别", dictType="doc_class") private String docType; /** 文档负责人 */ private String docPrincipals; /** 文档负责人名称 */ + @Excel(name = "负责人") private String docPrincipalsName; /** 归属单位 **/ @@ -50,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; /** 文档地址 */ diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index bc36538..a025295 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -1,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; /** @@ -39,23 +41,23 @@ public class Tool extends BaseEntity private String toolSourceName; /** 用途 */ - @Excel(name = "工具用途",sort=7) + //@Excel(name = "工具用途",sort=7) private String toolUse; /** 测试情况 */ - @Excel(name = "测评情况",sort=8) + //@Excel(name = "测评情况",sort=8) private String testSituation; /** 功能描述 */ - @Excel(name = "功能描述",sort=9) + //@Excel(name = "功能描述",sort=9) private String functionDesc; /** 适用条件 */ - @Excel(name = "适用条件",sort=10) + //@Excel(name = "适用条件",sort=10) private String applyCondition; /** 操作说明 */ - @Excel(name = "操作说明",sort=11) + //@Excel(name = "操作说明",sort=11) private String operateExplain; /** 负责人 */ @@ -76,7 +78,7 @@ public class Tool extends BaseEntity private String status; /** 备注 */ - @Excel(name = "备注",sort=12) + //@Excel(name = "备注",sort=12) private String remark; /** 关联工具 */ @@ -85,8 +87,14 @@ public class Tool extends BaseEntity private BpmClientInputModelBo bpmClientInputModel; /** done:办结,doing:进行中**/ + @Excel(name = "流程状态",dictType="flow_status",sort=7) private String recordStatus; + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", dateFormat="yyyy-MM-dd") + private Date createTime; + private Boolean editStatus; private String procInstId; @@ -115,4 +123,5 @@ public class Tool extends BaseEntity private List toolIdList; /** 需要过滤的主键 **/ private List filterToolIds; + private String recordStatusName; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java index 1f6931b..b6493f9 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IDocumentCategoryService.java @@ -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 selectDocumentTreeList(DocumentCategory documentCategory); + List selectDocumentTreeList(DocumentCategory documentCategory); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java index 85ee4da..f2ecb40 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentCategoryServiceImpl.java @@ -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 selectDocumentTreeList(DocumentCategory documentCategory) { + public List selectDocumentTreeList(DocumentCategory documentCategory) { List documentCategoryList = documentCategoryMapper.selectDocumentCategoryList(documentCategory); return buildDeptTreeSelect(documentCategoryList); } - public List buildDeptTreeSelect(List documentCategory) + public List buildDeptTreeSelect(List documentCategory) { List docCategoryTree = buildDeptTree(documentCategory); - return docCategoryTree.stream().map(TreeSelect::new).collect(Collectors.toList()); + return docCategoryTree.stream().map(ToolTreeSelect::new).collect(Collectors.toList()); } public List buildDeptTree(List documentCategoryList) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index d530c79..108b40d 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -448,6 +448,7 @@ public class DocumentServiceImpl implements IDocumentService break; } } + if( StrUtil.isNotBlank(item.getDocRespDept())){ item.setDocRespDeptName(sysDeptService.getDeptName(item.getDocRespDept())); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 61d49ae..fa078a7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -418,6 +418,7 @@ public class ToolServiceImpl implements IToolService List toolSource = sysDictTypeService.selectDictDataByType("tool_source"); List toolTypeList = sysDictTypeService.selectDictDataByType("tool_type"); List toolStatus = sysDictTypeService.selectDictDataByType("tool_status"); + List flowStatusList = sysDictTypeService.selectDictDataByType("flow_status"); for (Tool item : tools) { for (SysDictData sysDictData : toolSource) { @@ -440,6 +441,12 @@ public class ToolServiceImpl implements IToolService 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())); } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java index 46fa4a0..2612b7a 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java @@ -36,4 +36,13 @@ public class ToolTreeSelect implements Serializable { } + + + public ToolTreeSelect(DocumentCategory docCategory) + { + this.id = docCategory.getId(); + this.label = docCategory.getCategoryName(); + this.types = docCategory.getTypes(); + this.children = docCategory.getChildren().stream().map(ToolTreeSelect::new).collect(Collectors.toList()); + } } diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java index 1a7afbe..fc7282d 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/TreeSelect.java @@ -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()); diff --git a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml index 98bf8f6..c4f18a4 100644 --- a/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/tool-tech-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -30,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" From d461048c745f8a9f4a81e10e502ef0f4a4b2b5c3 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 9 Sep 2024 01:18:41 +0800 Subject: [PATCH 32/36] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/rzdata/common/constant/CacheConstants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java b/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java index 8c0c291..4527b92 100644 --- a/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java +++ b/tool-tech-common/src/main/java/com/rzdata/common/constant/CacheConstants.java @@ -10,7 +10,7 @@ public class CacheConstants /** * 登录用户 redis key */ - public static final String LOGIN_TOKEN_KEY = "ja_login_tokens:"; + public static final String LOGIN_TOKEN_KEY = "ja_tool_login_tokens:"; /** * 验证码 redis key From 6c53e4c9ae8b37577484203a7e59da2816374e97 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Mon, 9 Sep 2024 13:51:34 +0800 Subject: [PATCH 33/36] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=86=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rzdata/web/controller/common/CommonController.java | 10 ++++++++++ .../rzdata/web/service/impl/AttachmentServiceImpl.java | 8 +++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java index 51ca39f..4cf0343 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/common/CommonController.java @@ -230,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()))); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java index 84c5cd7..3fb63ad 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/AttachmentServiceImpl.java @@ -1,9 +1,5 @@ package com.rzdata.web.service.impl; -import java.io.*; -import java.util.List; - -import cn.hutool.core.util.ObjectUtil; import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; @@ -12,13 +8,15 @@ 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.domain.FileOperationRequest; 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业务层处理 * From 045d857ae27db727ea8b95d654f367182166c15f Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Mon, 9 Sep 2024 14:28:36 +0800 Subject: [PATCH 34/36] update --- .../web/controller/tool/ToolController.java | 20 +++++++--------- .../rzdata/web/mapper/ToolApplyMapper.java | 4 +++- .../rzdata/web/service/IToolApplyService.java | 4 +++- .../com/rzdata/web/service/IToolService.java | 2 ++ .../web/service/impl/DocumentServiceImpl.java | 23 +++++++++++-------- .../service/impl/ToolApplyServiceImpl.java | 10 ++++++-- .../web/service/impl/ToolServiceImpl.java | 15 ++++++++++++ .../main/resources/mapper/ToolApplyMapper.xml | 16 ++++++++----- 8 files changed, 63 insertions(+), 31 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index 87cb7b4..c891f71 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -73,18 +73,10 @@ public class ToolController extends BaseController for (Tool vo : list) { //创建人、下载权限、系统管理员 //1.已经审核通过、并且有下载权限 - vo.setDownloadStatus( - userId.equals(vo.getCreateBy())|| - SysUser.isAdmin(SecurityUtils.getUserId()) || - SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION) || - ( RecordStatusEnum.DONE.getCode().equals(vo.getRecordStatus())&& - iToolApplyService.checkToolApply(vo.getToolId(),userId))); + vo.setDownloadStatus(toolService.isDownloadStatus(userId, vo)); - ToolApply toolApply = new ToolApply(); - toolApply.setToolId(vo.getToolId()); - toolApply.setUserId(userId); - List hasApplyUsToolApplyList = iToolApplyService.selectToolApplyList(toolApply); - vo.setIsHasApplyUse(hasApplyUsToolApplyList.size() > 0); + // 是否已发起使用申请 + vo.setIsHasApplyUse(iToolApplyService.hasToolUseApply(vo.getToolId(), userId)); } } return getDataTable(list); @@ -123,7 +115,10 @@ public class ToolController extends BaseController @GetMapping(value = "/{toolId}") public AjaxResult getInfo(@PathVariable("toolId") String toolId) { - return success(toolService.selectToolByToolId(toolId)); + Tool tool = toolService.selectToolByToolId(toolId); + String userId = SecurityUtils.getUserId().toString(); + tool.setDownloadStatus(toolService.isDownloadStatus(userId, tool)); + return success(tool); } /** @@ -237,4 +232,5 @@ public class ToolController extends BaseController { return AjaxResult.success(toolService.statistics()); } + } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java index 4f6b418..9b92df4 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolApplyMapper.java @@ -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); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java index d59e9f2..e1d91b5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolApplyService.java @@ -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); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index a00ee4b..37e223c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -98,4 +98,6 @@ public interface IToolService Map statistics(); List selectAllList(Tool tool); + + boolean isDownloadStatus(String userId, Tool tool); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 108b40d..abe2aa7 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -5,7 +5,6 @@ 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; @@ -93,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; } @@ -136,19 +137,23 @@ public class DocumentServiceImpl implements IDocumentService if (BooleanUtil.isTrue(document.getDownloadCheck())) { String userId = SecurityUtils.getUserId().toString(); for (Document dc: documents) { - //文档中 是创建人 或者 配置了下载权限 - 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)){ - downStatus = true; - } - dc.setDownloadStatus(downStatus); + dc.setDownloadStatus(isDownloadStatus(userId, dc)); } } return documents; } + private boolean isDownloadStatus(String userId, Document dc){ + //文档中 是创建人 或者 配置了下载权限 + boolean downStatus = false; + if(SecurityUtils.hasPermi(Constants.DOC_DOWNLOAD_PERMISSION) || userId.equals(dc.getCreateById()) || SysUser.isAdmin(SecurityUtils.getUserId())){ + downStatus = true; + }else if(StrUtil.isNotBlank(dc.getToolId()) && iUseApplyService.checkToolUseApply(dc.getToolId(), userId)){ + downStatus = true; + } + return downStatus; + } + /** * 查询【请填写功能名称】列表 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java index 9d1cddf..5597f51 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -129,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 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index fa078a7..20449e2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -12,6 +12,7 @@ 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; @@ -72,6 +73,9 @@ public class ToolServiceImpl implements IToolService @Autowired private IToolRelationService iToolRelationService; + @Autowired + private IToolApplyService iToolApplyService; + /** * 查询工具信息 * @@ -454,4 +458,15 @@ public class ToolServiceImpl implements IToolService } return tools; } + + @Override + public boolean isDownloadStatus(String userId, Tool tool){ + //创建人、下载权限、系统管理员 + //1.已经审核通过、并且有下载权限 + return userId.equals(tool.getCreateBy()) || + SysUser.isAdmin(SecurityUtils.getUserId()) || + SecurityUtils.hasPermi(Constants.DOWNLOAD_TOOL_PERMISSION) || + ( RecordStatusEnum.DONE.getCode().equals(tool.getRecordStatus())&& + iToolApplyService.checkToolUseApply(tool.getToolId(), userId)); + } } diff --git a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml index e1c60dc..b756f5d 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml @@ -129,11 +129,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + SELECT count(*) FROM t_tool_apply ta + WHERE ta.apply_type='use' and ta.tool_id = #{toolId} and ta.user_id = #{userId} + + + From 596a721894e6be01a90109ee513d46a5177f9e71 Mon Sep 17 00:00:00 2001 From: hanjian <272005125@qq.com> Date: Mon, 9 Sep 2024 16:40:32 +0800 Subject: [PATCH 35/36] update --- .../src/main/java/com/rzdata/web/domain/Replies.java | 5 +++++ .../web/service/impl/DiscussionsServiceImpl.java | 5 +++++ .../src/main/resources/mapper/RepliesMapper.xml | 12 +++++++++--- .../src/main/resources/mapper/ToolApplyMapper.xml | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java index d6e605f..73c4f7d 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Replies.java @@ -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 discussionIdList; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java index 83668f0..ddef10c 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DiscussionsServiceImpl.java @@ -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 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); } } diff --git a/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml index 1badccf..a10ffab 100644 --- a/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/RepliesMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -19,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 @@ -51,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id, discussion_id, + rep_id, content, is_delete, create_by, @@ -63,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id}, #{discussionId}, + #{repId}, #{content}, #{isDelete}, #{createBy}, @@ -78,6 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update t_replies discussion_id = #{discussionId}, + rep_id = #{repId}, content = #{content}, is_delete = #{isDelete}, create_by = #{createBy}, diff --git a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml index b756f5d..11349b1 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolApplyMapper.xml @@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"