From 9e28453dba6ecf93c6c2234ba38def7c41cf12f0 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 20 一月 2025 18:25:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- flowable/src/main/java/com/ycl/service/IFlowTaskService.java | 2 start/src/main/resources/application-dev.yml | 2 business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java | 41 +++ flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 36 +- business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java | 8 flowable/src/main/java/com/ycl/controller/FlowTaskController.java | 10 common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java | 4 flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java | 42 +- business/src/main/resources/mapper/PlanMapper.xml | 2 business/src/main/resources/mapper/ProjectProcessMapper.xml | 2 business/src/main/java/com/ycl/domain/vo/CustomerTaskVO.java | 10 system/src/main/java/com/ycl/framework/config/SecurityConfig.java | 1 system/src/main/java/com/ycl/system/domain/base/AbsQuery.java | 5 system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java | 8 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 251 +++++++++++------- flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | 23 + business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java | 4 business/src/main/java/com/ycl/service/ProjectInfoService.java | 2 business/src/main/resources/mapper/ProjectInfoMapper.xml | 11 flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java | 4 business/src/main/java/com/ycl/mapper/PlanMapper.java | 4 flowable/src/main/java/com/ycl/service/ProcessLogService.java | 12 business/src/main/java/com/ycl/domain/json/DelegateData.java | 2 /dev/null | 33 -- flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java | 32 ++ business/src/main/java/com/ycl/controller/ProjectInfoController.java | 8 business/src/main/java/com/ycl/event/event/TaskLogEvent.java | 62 ++++ business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java | 63 +++- flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java | 10 flowable/src/main/resources/mapper/ProcessLogMapper.xml | 8 business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java | 2 flowable/src/main/java/com/ycl/controller/FlowLogController.java | 10 system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java | 2 flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java | 2 business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java | 3 flowable/src/main/java/com/ycl/domain/entity/ProcessLog.java | 12 36 files changed, 486 insertions(+), 247 deletions(-) diff --git a/business/src/main/java/com/ycl/controller/ProjectInfoController.java b/business/src/main/java/com/ycl/controller/ProjectInfoController.java index b590707..ee060f8 100644 --- a/business/src/main/java/com/ycl/controller/ProjectInfoController.java +++ b/business/src/main/java/com/ycl/controller/ProjectInfoController.java @@ -114,7 +114,10 @@ return Result.ok().data(ProjectCodeGenerator.generateProjectCode()); } - ; + @GetMapping("/searchByKey") + public Result searchByKey(@RequestParam(required = false) String wordKey) { + return projectInfoService.searchByKey(wordKey); + } @GetMapping("/getManagerFlag/{recordId}") public Result getManagerFlag(@PathVariable("recordId") Integer recordId) { @@ -169,4 +172,7 @@ public Result editProject(@RequestBody ProjectForm form) { return projectInfoService.editProject(form); } + + + } diff --git a/business/src/main/java/com/ycl/domain/json/TaskDelegateData.java b/business/src/main/java/com/ycl/domain/json/DelegateData.java similarity index 94% rename from business/src/main/java/com/ycl/domain/json/TaskDelegateData.java rename to business/src/main/java/com/ycl/domain/json/DelegateData.java index e7cd897..486b19f 100644 --- a/business/src/main/java/com/ycl/domain/json/TaskDelegateData.java +++ b/business/src/main/java/com/ycl/domain/json/DelegateData.java @@ -12,7 +12,7 @@ * @date锛�2025/1/2 14:39 */ @Data -public class TaskDelegateData { +public class DelegateData { /** * 杞姙鍓嶇殑澶勭悊浜篿d diff --git a/business/src/main/java/com/ycl/domain/vo/CustomerTaskVO.java b/business/src/main/java/com/ycl/domain/vo/CustomerTaskVO.java index e14bbd0..b346939 100644 --- a/business/src/main/java/com/ycl/domain/vo/CustomerTaskVO.java +++ b/business/src/main/java/com/ycl/domain/vo/CustomerTaskVO.java @@ -97,6 +97,16 @@ private List<String> handlerUnitName; /** + * 瀹為檯澶勭悊浜篿d + */ + private String actualHandlerUserId; + + /** + * 瀹為檯澶勭悊浜哄鍚� + */ + private String actualHandlerUserName; + + /** * 鍔炵悊鏈熼檺 */ private String timeLimit; diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java index b4353b7..703f8e9 100644 --- a/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java +++ b/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java @@ -25,6 +25,9 @@ @ApiModelProperty("娴佺▼瀹氫箟id") private String processDefId; + @ApiModelProperty("鍙戝竷id") + private String deployId; + @ApiModelProperty("娴佺▼鍚嶇О") private String flowableProcessName; diff --git a/business/src/main/java/com/ycl/event/event/TaskLogEvent.java b/business/src/main/java/com/ycl/event/event/TaskLogEvent.java new file mode 100644 index 0000000..076c8dd --- /dev/null +++ b/business/src/main/java/com/ycl/event/event/TaskLogEvent.java @@ -0,0 +1,62 @@ +package com.ycl.event.event; + +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; +import lombok.Getter; +import lombok.Setter; +import org.springframework.context.ApplicationEvent; + + +/** + * 杞姙浜嬩欢瀹氫箟 + * + * @author锛歺p + * @date锛�2025/1/16 15:04 + */ +@Getter +@Setter +public class TaskLogEvent extends ApplicationEvent { + + /** + * 椤圭洰id + */ + private Long projectId; + + /** + * 娴佺▼瀹炰緥id + */ + private String processInsId; + + /** + * 浠诲姟id + */ + private String taskId; + + /** + * 浜嬩欢绫诲瀷 + */ + private ProcessLogEventTypeEnum eventType; + + /** + * 鍏跺畠鏁版嵁 + * @see com.ycl.domain.json + */ + private Object otherData; + + /** + * 鏋勯�� + * + * @param source 浼爐his鍗冲彲 + * @param projectId 椤圭洰id + * @param processInsId 娴佺▼瀹炰緥id + * @param taskId 浠诲姟id + * @param otherData 鍏跺畠鏁版嵁 + */ + public TaskLogEvent(Object source, Long projectId, String processInsId, String taskId, ProcessLogEventTypeEnum eventType, Object otherData) { + super(source); + this.projectId = projectId; + this.processInsId = processInsId; + this.eventType = eventType; + this.taskId = taskId; + this.otherData = otherData; + } +} diff --git a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java new file mode 100644 index 0000000..39736e6 --- /dev/null +++ b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java @@ -0,0 +1,41 @@ +package com.ycl.event.listener; + +import com.alibaba.fastjson2.JSON; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; +import com.ycl.common.utils.SecurityUtils; +import com.ycl.domain.entity.ProcessLog; +import com.ycl.event.event.TaskLogEvent; +import com.ycl.service.ProcessLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +/** + * @author锛歺p + * @date锛�2025/1/16 15:14 + */ +@Component +@RequiredArgsConstructor +public class ProcessLogEventListener { + + private final ProcessLogService processLogService; + + /** + * 鐩戝惉娴佺▼鏃ュ織浜嬩欢 + * + * @param event 杞姙鐨勪簨浠跺唴瀹� + */ + @EventListener(classes = {TaskLogEvent.class}) + public void delegate(TaskLogEvent event) { + ProcessLog log = new ProcessLog(); + log.setEventType(event.getEventType()); + log.setProcessInsId(event.getProcessInsId()); + log.setProjectId(event.getProjectId()); + log.setTaskId(event.getTaskId()); + log.setUserId(SecurityUtils.getUserId()); + log.setEventDataJson(JSON.toJSONString(event.getOtherData())); + processLogService.save(log); + } + + +} diff --git a/business/src/main/java/com/ycl/mapper/PlanMapper.java b/business/src/main/java/com/ycl/mapper/PlanMapper.java index 1e2695b..de4a871 100644 --- a/business/src/main/java/com/ycl/mapper/PlanMapper.java +++ b/business/src/main/java/com/ycl/mapper/PlanMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.common.annotation.DataScope; import com.ycl.domain.entity.Plan; import com.ycl.domain.query.PlanQuery; import com.ycl.domain.vo.PlanVO; @@ -27,6 +28,7 @@ /** * 鍒嗛〉 */ - IPage getPage(IPage page, @Param("query") PlanQuery query); + @DataScope(deptAlias = "d") + IPage getPage(@Param("query") PlanQuery query, IPage page); } diff --git a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java index 0a1b711..f3b4467 100644 --- a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java +++ b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java @@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.common.annotation.DataScope; +import com.ycl.common.core.domain.BaseEntity; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.excel.ProjectExcelTemplate; import com.ycl.domain.query.ProjectInfoQuery; @@ -31,9 +33,11 @@ /** * 鍒嗛〉 */ - IPage getPage(IPage page, @Param("query") ProjectInfoQuery query); + @DataScope(deptAlias = "d") + IPage getPage(@Param("query") ProjectInfoQuery query, IPage page); - List<ProjectVO> homeCount(); + @DataScope(deptAlias = "d") + List<ProjectVO> homeCount(BaseEntity params); List<ProjectVO> selectProjectDetailByIds(@Param("dataIdList") List<Long> dataIdList); diff --git a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java index 76bb113..64405b6 100644 --- a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java +++ b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java @@ -1,5 +1,6 @@ package com.ycl.mapper; +import com.ycl.common.annotation.DataScope; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.entity.ProjectProcess; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -30,7 +31,8 @@ /** * 鍒嗛〉 */ - IPage getPage(IPage page, @Param("query") ProjectProcessQuery query); + @DataScope(deptAlias = "d") + IPage getPage(@Param("query") ProjectProcessQuery query, IPage page); /** * 閫氳繃娴佺▼瀹炰緥id鑾峰彇椤圭洰id銆佸悕绉� diff --git a/business/src/main/java/com/ycl/service/ProjectInfoService.java b/business/src/main/java/com/ycl/service/ProjectInfoService.java index e1b026f..b36daf1 100644 --- a/business/src/main/java/com/ycl/service/ProjectInfoService.java +++ b/business/src/main/java/com/ycl/service/ProjectInfoService.java @@ -90,4 +90,6 @@ void importProject(MultipartFile file); Result editProject(ProjectForm form); + + Result searchByKey(String wordKey); } diff --git a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java index 4a161da..a8a5814 100644 --- a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java @@ -105,7 +105,7 @@ @Override public Result page(PlanQuery query) { IPage<ProjectPlanResponseVO> page = PageUtil.getPage(query, ProjectPlanResponseVO.class); - baseMapper.getPage(page, query); + baseMapper.getPage(query, page); // 瀵瑰垎椤靛悗鐨勫睘鎬ц繘琛屽鐞� List<ProjectPlanResponseVO> records = page.getRecords(); for (ProjectPlanResponseVO record : records) { diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java index 8a89c46..4d0d216 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java @@ -7,14 +7,17 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.common.annotation.DataScope; import com.ycl.common.base.Result; import com.ycl.common.config.SysConfig; import com.ycl.common.constant.Constants; +import com.ycl.common.core.domain.BaseEntity; import com.ycl.common.enums.business.FileTypeEnum; import com.ycl.common.enums.business.ImportanceTypeEnum; import com.ycl.common.enums.business.ProjectCategoryEnum; @@ -234,18 +237,18 @@ Long userId = SecurityUtils.getUserId(); String ancestors = sysDeptMapper.selectAncestors(userId); String[] ancestorArr = ancestors.split(","); - for (String ancestor : ancestorArr) { - if ("101".equals(ancestor)) { // 涓氫富 - query.setCreateBy(userId); - query.setRole(0); - }else if ("102".equals(ancestor)){ // 瀹℃壒 - query.setUsedStatus(1); - query.setRole(1); - } - } +// for (String ancestor : ancestorArr) { +// if ("101".equals(ancestor)) { // 涓氫富 +// query.setCreateBy(userId); +// query.setRole(0); +// } else if ("102".equals(ancestor)) { // 瀹℃壒 +// query.setUsedStatus(1); +// query.setRole(1); +// } +// } IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class); - baseMapper.getPage(page, query); + baseMapper.getPage(query, page); List<ProjectInfoVO> records = page.getRecords(); List<ProjectVO> list = new ArrayList<>(); records.forEach(vo -> { @@ -316,7 +319,7 @@ // {"type":"鐪侀噸鐐归」鐩�","count":0,"amount":"0.00","text":"鐪�"}]}} IndexCountVO indexCountVO = new IndexCountVO(); List<IndexProPhaseCountVO> proPhaseCountVO = new ArrayList<>(); - List<ProjectVO> projectVOS = baseMapper.homeCount(); + List<ProjectVO> projectVOS = baseMapper.homeCount(new BaseEntity()); List<ProjectVO> reserve = new ArrayList<>(); List<ProjectVO> previous = new ArrayList<>(); List<ProjectVO> implement = new ArrayList<>(); @@ -436,7 +439,7 @@ ProjectInfo projectInfo = baseMapper.selectById(recordId); // 鍒ゆ柇褰撳墠鐢ㄦ埛id鏄惁鍦ㄤ富绠″垪琛ㄤ腑 String competentDepartment = projectInfo.getCompetentDepartment(); - if (StringUtils.isEmpty(competentDepartment)){ + if (StringUtils.isEmpty(competentDepartment)) { return Result.ok().data(false); } List<String> list = Arrays.asList(competentDepartment.split(",")); @@ -586,7 +589,7 @@ java.io.File tempDir = null; try { tempZip = java.io.File.createTempFile("temp", ".zip"); - try(InputStream inputStream = file.getInputStream()) { + try (InputStream inputStream = file.getInputStream()) { Files.copy(inputStream, tempZip.toPath(), StandardCopyOption.REPLACE_EXISTING); } @@ -594,9 +597,9 @@ try { ZipUtil.unzip(tempZip, tempDir, CharsetUtil.CHARSET_UTF_8); - }catch (IORuntimeException e){ - log.error("瑙e帇澶辫触锛屽皾璇曚娇鐢℅BK缂栫爜瑙e帇..."); - ZipUtil.unzip(tempZip, tempDir, CharsetUtil.CHARSET_GBK); + } catch (IORuntimeException e) { + log.error("瑙e帇澶辫触锛屽皾璇曚娇鐢℅BK缂栫爜瑙e帇..."); + ZipUtil.unzip(tempZip, tempDir, CharsetUtil.CHARSET_GBK); } Path path = tempDir.toPath(); @@ -679,11 +682,11 @@ @Override public Result editProject(ProjectForm form) { - if (ObjectUtil.isNotNull(form.getProjectInfoForm())){ + if (ObjectUtil.isNotNull(form.getProjectInfoForm())) { if (ObjectUtil.isNull(form.getProjectInfoForm().getId())) { //鏂板 add(form.getProjectInfoForm()); - }else { + } else { //鏇存柊 update(form.getProjectInfoForm()); } @@ -691,40 +694,50 @@ if (ObjectUtil.isNotNull(form.getProjectInvestmentInfoForm())) { if (ObjectUtil.isNull(form.getProjectInvestmentInfoForm().getId())) { projectInvestmentInfoServiceImpl.add(form.getProjectInvestmentInfoForm()); - }else { + } else { projectInvestmentInfoServiceImpl.update(form.getProjectInvestmentInfoForm()); } } if (ObjectUtil.isNotNull(form.getProjectInvestmentFundingForm())) { if (ObjectUtil.isNull(form.getProjectInvestmentFundingForm().getId())) { projectInvestmentFundingServiceImpl.add(form.getProjectInvestmentFundingForm()); - }else { + } else { projectInvestmentFundingServiceImpl.update(form.getProjectInvestmentFundingForm()); } } if (ObjectUtil.isNotNull(form.getProjectInvestmentPolicyComplianceForm())) { if (ObjectUtil.isNull(form.getProjectInvestmentPolicyComplianceForm().getId())) { projectInvestmentPolicyComplianceServiceImpl.add(form.getProjectInvestmentPolicyComplianceForm()); - }else { + } else { projectInvestmentPolicyComplianceServiceImpl.update(form.getProjectInvestmentPolicyComplianceForm()); } } if (ObjectUtil.isNotNull(form.getProjectUnitRegistrationInfoForm())) { if (ObjectUtil.isNull(form.getProjectUnitRegistrationInfoForm().getId())) { projectUnitRegistrationInfoServiceImpl.add(form.getProjectUnitRegistrationInfoForm()); - }else { + } else { projectUnitRegistrationInfoServiceImpl.update(form.getProjectUnitRegistrationInfoForm()); } } if (ObjectUtil.isNotNull(form.getDocumentInfoForm())) { - if (ObjectUtil.isNull(form.getDocumentInfoForm().getProjectId())){ + if (ObjectUtil.isNull(form.getDocumentInfoForm().getProjectId())) { return Result.error("璇峰厛淇濆瓨鎶曡祫绠$悊鍩烘湰淇℃伅"); - }else { + } else { addDoc(form.getDocumentInfoForm()); } } return Result.ok("鎻愪氦鎴愬姛"); + } + + @Override + public Result searchByKey(String wordKey) { + Wrapper wrapper = null; + if (!StringUtils.isEmpty(wordKey)) { + wrapper = Wrappers.<ProjectInfo>lambdaQuery().like(ProjectInfo::getProjectName, wordKey).or().like(ProjectInfo::getProjectCode, wordKey); + } + List<ProjectInfo> list = baseMapper.selectList(wrapper); + return Result.ok().data(list); } private static void deleteDirectoryOrFile(java.io.File file) { @@ -742,8 +755,10 @@ } file.delete(); } + /** * 椤圭洰鍚嶇О鏍¢獙閲嶅 + * * @return */ public void checkProjectNameUnique(ProjectInfo projectInfo) { diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index 9e7bda4..473bb14 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -1,35 +1,28 @@ package com.ycl.service.impl; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.constant.ProcessConstants; -import com.ycl.common.core.domain.AjaxResult; import com.ycl.common.core.domain.entity.SysDept; import com.ycl.common.core.domain.entity.SysRole; import com.ycl.common.core.domain.entity.SysUser; -import com.ycl.common.enums.FlowComment; -import com.ycl.common.enums.business.FlowLogEventTypeEnum; import com.ycl.common.enums.business.HandlerTypeEnum; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; import com.ycl.common.enums.business.TaskStatusEnum; import com.ycl.common.utils.SecurityUtils; import com.ycl.constant.TaskTypeConstant; -import com.ycl.domain.dto.FlowTaskDto; -import com.ycl.domain.entity.FlowLog; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.entity.ProjectProcess; -import com.ycl.domain.form.RejectTaskForm; import com.ycl.domain.form.TaskDelegationForm; -import com.ycl.domain.json.TaskDelegateData; +import com.ycl.domain.json.DelegateData; import com.ycl.domain.vo.CustomerTaskVO; import com.ycl.domain.vo.IndexCustomerTaskVO; import com.ycl.domain.vo.ProjectProcessDetailVO; +import com.ycl.event.event.TaskLogEvent; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.mapper.ProjectProcessMapper; -import com.ycl.service.FlowLogService; import com.ycl.service.ProjectProcessService; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -51,17 +44,15 @@ import org.flowable.identitylink.api.IdentityLink; import org.flowable.identitylink.api.IdentityLinkInfo; import org.flowable.identitylink.api.IdentityLinkType; -import org.flowable.identitylink.api.history.HistoricIdentityLink; +import org.flowable.identitylink.service.impl.persistence.entity.IdentityLinkEntityImpl; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; -import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import com.ycl.framework.utils.PageUtil; -import org.springframework.beans.BeanUtils; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.*; @@ -88,7 +79,7 @@ private final ISysRoleService sysRoleService; private final ISysDeptService sysDeptService; private final TaskCommonService taskCommonService; - private final FlowLogService flowLogService; + private final ApplicationEventPublisher publisher; /** * 鍒嗛〉鏌ヨ @@ -99,13 +90,14 @@ @Override public Result page(ProjectProcessQuery query) { IPage<ProjectProcessVO> page = PageUtil.getPage(query, ProjectProcessVO.class); - baseMapper.getPage(page, query); + baseMapper.getPage(query, page); for (ProjectProcessVO vo : page.getRecords()) { if (Objects.nonNull(vo.getProcessDefId())) { ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult(); if (Objects.nonNull(processDefinition)) { vo.setSuspended(processDefinition.isSuspended()); vo.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")"); + vo.setDeployId(processDefinition.getDeploymentId()); } } } @@ -155,6 +147,7 @@ entity.setProcessDefId(processDefId); entity.setProcessInsId(processInsId); baseMapper.insert(entity); + return Result.ok("娴佺▼鍚姩鎴愬姛"); } @@ -166,6 +159,14 @@ * @return */ private String startPro(Long projectId, String processDefId) { + + ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper) + .select(ProjectInfo::getCreateBy) + .eq(ProjectInfo::getId, projectId) + .one(); + if (Objects.isNull(project)) { + throw new RuntimeException("椤圭洰涓嶅瓨鍦�"); + } ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefId) .latestVersion().singleResult(); if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) { @@ -176,6 +177,9 @@ SysUser sysUser = SecurityUtils.getLoginUser().getUser(); identityService.setAuthenticatedUserId(sysUser.getUserId().toString()); variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId()); + + // 灏嗚椤圭洰鐨勭敵璇蜂汉锛堜笟涓绘柟锛変綔涓烘祦绋嬩腑鏌愪簺鐜妭鐨勫鐞嗕汉 + variables.put(ProcessConstants.DATA_LAUNCH, project.getCreateBy()); ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables); return processInstance.getId(); } @@ -262,11 +266,18 @@ TaskQuery taskQuery = taskService.createTaskQuery() .active() .includeProcessVariables() - .includeIdentityLinks() .orderByTaskCreateTime().desc(); if (StringUtils.isNotBlank(taskName)) { taskQuery.processDefinitionNameLike(taskName); + } + if (! SecurityUtils.getLoginUser().getUser().isAdmin()) { + taskQuery + .or() + .taskCandidateGroupIn(taskCommonService.getCurrentUserGroups()) + .taskCandidateUser(SecurityUtils.getUserId() + "") + .taskAssignee(SecurityUtils.getUserId() + "") + .endOr(); } result.total(taskQuery.count()); List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); @@ -306,7 +317,11 @@ List<String> handlerUnitNames = new ArrayList<>(2); // 娴佺▼澶勭悊浜轰俊鎭� - List<? extends IdentityLinkInfo> identityLinks = task.getIdentityLinks(); + List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId()); +// Boolean aboutMe = taskCommonService.taskAboutMe(identityLinks); +// if (! aboutMe) { +// continue; +// } for (IdentityLinkInfo identityLink : identityLinks) { // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� if (StringUtils.isNotBlank(identityLink.getUserId())) { @@ -467,20 +482,25 @@ @Override public Result taskDelegation(TaskDelegationForm form) { - Task task = taskService.createTaskQuery().taskId(form.getTaskId()).includeIdentityLinks().singleResult(); + Task task = taskService.createTaskQuery().taskId(form.getTaskId()).singleResult(); if (Objects.isNull(task)) { throw new RuntimeException("鏈湪杩愯浠诲姟涓壘鍒拌浠诲姟锛屾棤娉曟墽琛岃浆鍔炴搷浣�"); } + List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId()); // 杞姙涔嬪墠鐨勫鐞嗕汉 List<String> beforeHandlerIds = new ArrayList<>(2); // 杞姙涔嬪墠鐨勫鐞嗕汉绫诲瀷 HandlerTypeEnum beforeHandlerType = null; // 闇�瑕佸厛绉婚櫎涔嬪墠鐨勫鐞嗕汉 - for (IdentityLinkInfo identityLink : task.getIdentityLinks()) { + for (IdentityLinkInfo identityLink : identityLinksForTask) { if (StringUtils.isNotBlank(identityLink.getUserId())) { beforeHandlerIds.add(identityLink.getUserId()); beforeHandlerType = HandlerTypeEnum.USER; - taskService.deleteCandidateUser(task.getId(), identityLink.getUserId()); + if (IdentityLinkType.ASSIGNEE.equals(identityLink.getType())) { + taskService.deleteUserIdentityLink(task.getId(), identityLink.getUserId(), IdentityLinkType.ASSIGNEE); + } else { + taskService.deleteCandidateUser(task.getId(), identityLink.getUserId()); + } } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { beforeHandlerIds.add(identityLink.getGroupId()); if (identityLink.getGroupId().contains("dept")) { @@ -492,7 +512,7 @@ taskService.deleteCandidateGroup(task.getId(), identityLink.getGroupId()); } } - TaskDelegateData jsonData = new TaskDelegateData(); + DelegateData jsonData = new DelegateData(); jsonData.setBeforeHandlerIds(beforeHandlerIds); jsonData.setBeforeHandlerType(beforeHandlerType); @@ -537,8 +557,8 @@ } jsonData.setAfterHandlerIds(afterHandlerIds); jsonData.setAfterHandlerType(form.getPeopleType()); - // 娣诲姞鏃ュ織 - flowLogService.add(task.getId(), task.getProcessInstanceId(), FlowLogEventTypeEnum.DELEGATE, form.getProjectId(), JSON.toJSONString(jsonData)); + // 鍙戝竷杞姙浜嬩欢 + publisher.publishEvent(new TaskLogEvent(this, form.getProjectId(), form.getProcessInsId(), task.getId(), ProcessLogEventTypeEnum.DELEGATE, jsonData)); return Result.ok("杞姙鎴愬姛"); } @@ -567,73 +587,7 @@ List<CustomerTaskVO> vos = new ArrayList<>(); for (Task task : taskList) { CustomerTaskVO taskVO = new CustomerTaskVO(); - // 褰撳墠娴佺▼淇℃伅 - taskVO.setTaskId(task.getId()); - taskVO.setCreateTime(task.getCreateTime()); - taskVO.setProcessDefId(task.getProcessDefinitionId()); - taskVO.setExecutionId(task.getExecutionId()); - taskVO.setTaskName(task.getName()); - taskVO.setTaskStatus(TaskStatusEnum.TODO); - // 娴佺▼瀹氫箟淇℃伅 - ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(task.getProcessDefinitionId()) - .singleResult(); - taskVO.setDeployId(pd.getDeploymentId()); - taskVO.setProcessName(pd.getName()); - taskVO.setProcessInsId(task.getProcessInstanceId()); - taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey()); - - // 娴佺▼鍙戣捣浜轰俊鎭� - this.setPromoterInfo(taskVO); - - // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist - List<Long> handlerIds = new ArrayList<>(2); - List<String> handlerNames = new ArrayList<>(2); - List<Long> handlerUnitIds = new ArrayList<>(2); - List<String> handlerUnitNames = new ArrayList<>(2); - - // 娴佺▼澶勭悊浜轰俊鎭� - List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId()); - for (IdentityLink identityLink : identityLinksForTask) { - // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� - if (StringUtils.isNotBlank(identityLink.getUserId())) { - taskVO.setHandlerType(HandlerTypeEnum.USER); - SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); - if (Objects.nonNull(sysUser)) { - handlerIds.add(sysUser.getUserId()); - handlerNames.add(sysUser.getNickName()); - if (Objects.nonNull(sysUser.getDept())) { - handlerUnitIds.add(sysUser.getDept().getDeptId()); - handlerUnitNames.add(sysUser.getDept().getDeptName()); - } - } - // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂� - } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { - if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 - taskVO.setHandlerType(HandlerTypeEnum.DEPT); - String[] split = identityLink.getGroupId().split(":"); - if (split.length > 1) { - // 閮ㄩ棬 - SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); - if (Objects.nonNull(dept)) { - handlerUnitIds.add(dept.getDeptId()); - handlerUnitNames.add(dept.getDeptName()); - } - } - } else { - taskVO.setHandlerType(HandlerTypeEnum.ROLE); - SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); - if (Objects.nonNull(role)) { - handlerUnitIds.add(Long.parseLong(identityLink.getGroupId())); - handlerUnitNames.add(role.getRoleName()); - } - } - } - taskVO.setHandlerId(handlerIds); - taskVO.setHandlerName(handlerNames); - taskVO.setHandlerUnitId(handlerUnitIds); - taskVO.setHandlerUnitName(handlerUnitNames); - } + this.setRuntimeTaskInfo(task, taskVO); vos.add(taskVO); } result.put("taskList", vos); @@ -680,7 +634,10 @@ vo.setDeployId(process.getDeploymentId()); vo.setTaskName(userTask.getName()); vo.setProcessName(process.getProcessDefinitionName()); - Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult(); + Task task = taskService.createTaskQuery() + .processInstanceId(process.getId()) + .taskDefinitionKey(userTask.getId()) + .singleResult(); // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist List<Long> handlerIds = new ArrayList<>(2); @@ -744,16 +701,23 @@ vo.setTaskId(historicTasks.get(0).getId()); vo.setExecutionId(historicTasks.get(0).getExecutionId()); vo.setCreateTime(historicTasks.get(0).getStartTime()); + // 鏌ヨ瀹為檯澶勭悊浜� long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee()); SysUser handlerUser = sysUserService.selectUserById(handlerUserId); if (Objects.nonNull(handlerUser)) { handlerIds.add(handlerUserId); handlerNames.add(handlerUser.getNickName()); + vo.setActualHandlerUserId(historicTasks.get(0).getAssignee()); + vo.setActualHandlerUserName(handlerUser.getNickName()); } vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks()); } + vo.setHandlerId(handlerIds); + vo.setHandlerName(handlerNames); + vo.setHandlerUnitId(handlerUnitIds); + vo.setHandlerUnitName(handlerUnitNames); } else { vo.setTaskStatus(TaskStatusEnum.TODO); vo.setTaskId(task.getId()); @@ -762,11 +726,9 @@ vo.setTaskDefinitionKey(task.getTaskDefinitionKey()); this.setPromoterAndHandler(vo, null); + this.setRuntimeTaskInfo(task, vo); } - vo.setHandlerId(handlerIds); - vo.setHandlerName(handlerNames); - vo.setHandlerUnitId(handlerUnitIds); - vo.setHandlerUnitName(handlerUnitNames); + return vo; }).collect(Collectors.toList()); result.data(vos); @@ -809,8 +771,8 @@ SysUser handlerUser = sysUserService.selectUserById(handlerUserId); if (Objects.nonNull(handlerUser)) { - vo.setHandlerId(Arrays.asList(handlerUserId)); - vo.setHandlerName(Arrays.asList(handlerUser.getNickName())); + vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee()); + vo.setActualHandlerUserName(handlerUser.getNickName()); } vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks()); @@ -818,6 +780,85 @@ return vo; }).collect(Collectors.toList()); return vos; + } + + /** + * 璁剧疆杩愯鏃朵换鍔$殑淇℃伅 + * + * @param task 浠诲姟 + * @param taskVO 浠诲姟vo + */ + private void setRuntimeTaskInfo(Task task, CustomerTaskVO taskVO) { + // 褰撳墠娴佺▼淇℃伅 + taskVO.setTaskId(task.getId()); + taskVO.setCreateTime(task.getCreateTime()); + taskVO.setProcessDefId(task.getProcessDefinitionId()); + taskVO.setExecutionId(task.getExecutionId()); + taskVO.setTaskName(task.getName()); + taskVO.setTaskStatus(TaskStatusEnum.TODO); + // 娴佺▼瀹氫箟淇℃伅 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(task.getProcessDefinitionId()) + .singleResult(); + taskVO.setDeployId(pd.getDeploymentId()); + taskVO.setProcessName(pd.getName()); + taskVO.setProcessInsId(task.getProcessInstanceId()); + taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey()); + + // 娴佺▼鍙戣捣浜轰俊鎭� + this.setPromoterInfo(taskVO); + + // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist + List<Long> handlerIds = new ArrayList<>(2); + List<String> handlerNames = new ArrayList<>(2); + List<Long> handlerUnitIds = new ArrayList<>(2); + List<String> handlerUnitNames = new ArrayList<>(2); + + // 娴佺▼澶勭悊浜轰俊鎭� + List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId()); + for (IdentityLinkInfo identityLink : identityLinksForTask) { +// if (StringUtils.isBlank(((IdentityLinkEntityImpl)identityLink).getId())) { +// continue; +// } + // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� + if (StringUtils.isNotBlank(identityLink.getUserId())) { + taskVO.setHandlerType(HandlerTypeEnum.USER); + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); + if (Objects.nonNull(sysUser)) { + handlerIds.add(sysUser.getUserId()); + handlerNames.add(sysUser.getNickName()); + if (Objects.nonNull(sysUser.getDept())) { + handlerUnitIds.add(sysUser.getDept().getDeptId()); + handlerUnitNames.add(sysUser.getDept().getDeptName()); + } + } + // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂� + } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { + if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + taskVO.setHandlerType(HandlerTypeEnum.DEPT); + String[] split = identityLink.getGroupId().split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + handlerUnitIds.add(dept.getDeptId()); + handlerUnitNames.add(dept.getDeptName()); + } + } + } else { + taskVO.setHandlerType(HandlerTypeEnum.ROLE); + SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); + if (Objects.nonNull(role)) { + handlerUnitIds.add(Long.parseLong(identityLink.getGroupId())); + handlerUnitNames.add(role.getRoleName()); + } + } + } + taskVO.setHandlerId(handlerIds); + taskVO.setHandlerName(handlerNames); + taskVO.setHandlerUnitId(handlerUnitIds); + taskVO.setHandlerUnitName(handlerUnitNames); + } } /** @@ -871,7 +912,10 @@ vo.setDeployId(process.getDeploymentId()); vo.setTaskName(userTask.getName()); vo.setProcessName(process.getProcessDefinitionName()); - Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult(); + Task task = taskService.createTaskQuery() + .processInstanceId(process.getId()) + .taskDefinitionKey(userTask.getId()) + .singleResult(); if (Objects.isNull(task)) { // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛屽彧鏌ヨ鏈紑濮嬬殑 List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() @@ -927,6 +971,8 @@ } else { continue; } + } else { + this.setRuntimeTaskInfo(task, vo); } vos.add(vo); } @@ -979,6 +1025,9 @@ if (TaskStatusEnum.TODO.equals(taskVO.getTaskStatus())) { List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(taskVO.getTaskId()); for (IdentityLink identityLink : identityLinksForTask) { + if (StringUtils.isBlank(((IdentityLinkEntityImpl)identityLink).getId())) { + continue; + } // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� if (StringUtils.isNotBlank(identityLink.getUserId())) { SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); @@ -1021,12 +1070,12 @@ taskVO.setHandlerType(HandlerTypeEnum.USER); SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); if (Objects.nonNull(sysUser)) { -// taskVO.setHandlerId(sysUser.getUserId()); + handlerIds.add(sysUser.getUserId()); + handlerNames.add(sysUser.getNickName()); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); } -// taskVO.setHandlerName(sysUser.getNickName()); } // 缁戝畾鐨勬槸瑙掕壊锛屾煡鍑鸿鑹插悕绉� } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { diff --git a/business/src/main/resources/mapper/PlanMapper.xml b/business/src/main/resources/mapper/PlanMapper.xml index 0b433f7..139c557 100644 --- a/business/src/main/resources/mapper/PlanMapper.xml +++ b/business/src/main/resources/mapper/PlanMapper.xml @@ -63,6 +63,7 @@ pi.invest_type FROM t_project_info AS pi LEFT JOIN t_plan AS p ON p.project_info_id = pi.id + LEFT JOIN sys_dept d ON d.dept_id = PI.project_owner_unit <where> pi.deleted = 0 <if test="query.projectName!= null and query.projectName!= ''"> @@ -83,6 +84,7 @@ <if test="query.yearStatus!= null"> AND p.year_status = #{query.yearStatus} </if> + ${query.params.dataScope} </where> </select> diff --git a/business/src/main/resources/mapper/ProjectInfoMapper.xml b/business/src/main/resources/mapper/ProjectInfoMapper.xml index b02a2b9..d196b96 100644 --- a/business/src/main/resources/mapper/ProjectInfoMapper.xml +++ b/business/src/main/resources/mapper/ProjectInfoMapper.xml @@ -103,6 +103,7 @@ LEFT JOIN t_project_investment_policy_compliance TPIPC ON TPI.id = TPIPC.project_id and TPIPC.deleted = 0 LEFT JOIN t_project_unit_registration_info TPURI ON TPI.id = TPURI.project_id and TPURI.deleted = 0 LEFT JOIN t_project_process TPP ON TPI.id = TPP.project_id and TPP.deleted = 0 + LEFT JOIN sys_dept d ON d.dept_id = TPI.project_owner_unit <where> TPI.deleted = 0 <if test="query.projectName !=null and query.projectName!=''"> @@ -164,16 +165,22 @@ and TPI.used_status = #{query.usedStatus} </if> </if> + ${query.params.dataScope} </where> order by TPI.gmt_create </select> - <select id="homeCount" resultType="com.ycl.domain.vo.ProjectVO"> + <select id="homeCount" parameterType="com.ycl.common.core.domain.BaseEntity" resultType="com.ycl.domain.vo.ProjectVO"> SELECT TPI.*,TPIF.total_investment,TPP.process_ins_id as processId FROM t_project_info TPI LEFT JOIN t_project_investment_funding TPIF ON TPI.id = TPIF.project_id and TPIF.deleted = 0 LEFT JOIN t_project_process TPP ON TPI.id = TPP.project_id and TPP.deleted = 0 - WHERE TPI.deleted = 0 + LEFT JOIN sys_dept d ON TPI.project_owner_unit = d.dept_id + <where> + TPI.deleted = 0 + ${params.dataScope} + </where> + </select> <select id="selectProjectDetailByIds" resultType="com.ycl.domain.vo.ProjectVO"> diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml index aa8f67a..37c80a6 100644 --- a/business/src/main/resources/mapper/ProjectProcessMapper.xml +++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml @@ -65,6 +65,7 @@ FROM t_project_info PI LEFT JOIN t_project_process TPP ON TPP.project_id = PI.id AND TPP.deleted = 0 AND PI.deleted = 0 + LEFT JOIN sys_dept d ON d.dept_id = PI.project_owner_unit <where> <if test="query.projectName != null and query.projectName != ''"> AND PI.project_name like concat('%', #{query.projectName}, '%') @@ -72,6 +73,7 @@ <if test="query.projectCode != null and query.projectCode != ''"> AND PI.project_code like concat('%', #{query.projectCode}, '%') </if> + ${query.params.dataScope} </where> </select> diff --git a/common/src/main/java/com/ycl/common/enums/business/FlowLogEventTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java similarity index 85% rename from common/src/main/java/com/ycl/common/enums/business/FlowLogEventTypeEnum.java rename to common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java index e3bfdce..8e7bc79 100644 --- a/common/src/main/java/com/ycl/common/enums/business/FlowLogEventTypeEnum.java +++ b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java @@ -11,7 +11,7 @@ * @date锛�2024/11/29 11:13 */ @Getter -public enum FlowLogEventTypeEnum { +public enum ProcessLogEventTypeEnum { DELEGATE("DELEGATE", "杞姙"), FINISHED("FINISHED", "瀹屾垚"), @@ -26,7 +26,7 @@ private final String desc; - FlowLogEventTypeEnum(String value, String desc) { + ProcessLogEventTypeEnum(String value, String desc) { this.value = value; this.desc = desc; } diff --git a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java index 1a9fadb..04eecf3 100644 --- a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java +++ b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java @@ -70,6 +70,10 @@ */ public static final String PROCESS_INITIATOR = "INITIATOR"; + /** + * 鎻愪氦鏁版嵁鏂� + */ + public static final String DATA_LAUNCH = "data_launch"; /** * 娴佺▼璺宠繃 diff --git a/flowable/src/main/java/com/ycl/controller/FlowLogController.java b/flowable/src/main/java/com/ycl/controller/FlowLogController.java index d654862..74cebf8 100644 --- a/flowable/src/main/java/com/ycl/controller/FlowLogController.java +++ b/flowable/src/main/java/com/ycl/controller/FlowLogController.java @@ -1,8 +1,8 @@ package com.ycl.controller; import com.ycl.common.base.Result; -import com.ycl.domain.query.FlowLogQuery; -import com.ycl.service.FlowLogService; +import com.ycl.domain.query.ProcessLogQuery; +import com.ycl.service.ProcessLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -25,14 +25,14 @@ @RequestMapping("/flow-log") public class FlowLogController { - private final FlowLogService flowLogService; + private final ProcessLogService processLogService; @GetMapping("/page") @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") @PreAuthorize("@ss.hasPermi('flowLog:page')") - public Result page(FlowLogQuery query) { - return flowLogService.page(query); + public Result page(ProcessLogQuery query) { + return processLogService.page(query); } } diff --git a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java b/flowable/src/main/java/com/ycl/controller/FlowTaskController.java index 4a23d6f..2232c0f 100644 --- a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java +++ b/flowable/src/main/java/com/ycl/controller/FlowTaskController.java @@ -75,8 +75,8 @@ @ApiOperation(value = "娴佺▼鍘嗗彶娴佽浆璁板綍", response = FlowTaskDto.class) @GetMapping(value = "/flowRecord") - public AjaxResult flowRecord(String procInsId, String deployId) { - return flowTaskService.flowRecord(procInsId, deployId); + public AjaxResult flowRecord(String procInsId) { + return flowTaskService.flowRecord(procInsId); } @ApiOperation(value = "鏍规嵁浠诲姟ID鏌ヨ鎸傝浇鐨勮〃鍗曚俊鎭�") @@ -258,13 +258,13 @@ /** * 娴佺▼鑺傜偣淇℃伅 * - * @param procInsId 娴佺▼瀹炰緥id + * @param processInsId 娴佺▼瀹炰緥id * @return */ @GetMapping("/flowXmlAndNode") - public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId", required = false) String procInsId, + public AjaxResult flowXmlAndNode(@RequestParam(value = "processInsId", required = false) String processInsId, @RequestParam(value = "deployId", required = false) String deployId) { - return flowTaskService.flowXmlAndNode(procInsId, deployId); + return flowTaskService.flowXmlAndNode(processInsId, deployId); } /** diff --git a/flowable/src/main/java/com/ycl/domain/entity/FlowLog.java b/flowable/src/main/java/com/ycl/domain/entity/ProcessLog.java similarity index 77% rename from flowable/src/main/java/com/ycl/domain/entity/FlowLog.java rename to flowable/src/main/java/com/ycl/domain/entity/ProcessLog.java index 4cd774b..641ccad 100644 --- a/flowable/src/main/java/com/ycl/domain/entity/FlowLog.java +++ b/flowable/src/main/java/com/ycl/domain/entity/ProcessLog.java @@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import com.ycl.common.enums.business.FlowLogEventTypeEnum; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; import com.ycl.system.domain.base.AbsEntity; import lombok.Data; @@ -13,8 +13,8 @@ * @since 2025-01-02 */ @Data -@TableName("t_flow_log") -public class FlowLog extends AbsEntity { +@TableName("t_process_log") +public class ProcessLog extends AbsEntity { private static final long serialVersionUID = 1L; @@ -24,15 +24,15 @@ @TableField("event_type") /** 浜嬩欢鏃ュ織绫诲瀷 */ - private FlowLogEventTypeEnum eventType; + private ProcessLogEventTypeEnum eventType; @TableField("project_id") /** 椤圭洰id */ private Long projectId; - @TableField("flow_ins_id") + @TableField("process_ins_id") /** 娴佺▼瀹炰緥id */ - private String flowInsId; + private String processInsId; @TableField("user_id") /** 浜х敓鏃ュ織鐨勪汉/鎴栧叾瀹� */ diff --git a/flowable/src/main/java/com/ycl/domain/query/FlowLogQuery.java b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java similarity index 91% rename from flowable/src/main/java/com/ycl/domain/query/FlowLogQuery.java rename to flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java index 124437b..12efd3d 100644 --- a/flowable/src/main/java/com/ycl/domain/query/FlowLogQuery.java +++ b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java @@ -17,6 +17,6 @@ */ @Data @ApiModel(value = "FlowLog鏌ヨ鍙傛暟", description = "娴佺▼鏃ュ織鏌ヨ鍙傛暟") -public class FlowLogQuery extends AbsQuery { +public class ProcessLogQuery extends AbsQuery { } diff --git a/flowable/src/main/java/com/ycl/domain/vo/FlowLogVO.java b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java similarity index 84% rename from flowable/src/main/java/com/ycl/domain/vo/FlowLogVO.java rename to flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java index 9e66afb..af7ee57 100644 --- a/flowable/src/main/java/com/ycl/domain/vo/FlowLogVO.java +++ b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java @@ -1,14 +1,12 @@ package com.ycl.domain.vo; import com.ycl.system.domain.base.AbsVo; -import com.ycl.domain.entity.FlowLog; -import java.util.List; +import com.ycl.domain.entity.ProcessLog; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; /** * 娴佺▼鏃ュ織灞曠ず @@ -18,7 +16,7 @@ */ @Data @ApiModel(value = "娴佺▼鏃ュ織鍝嶅簲鏁版嵁", description = "娴佺▼鏃ュ織鍝嶅簲鏁版嵁") -public class FlowLogVO extends AbsVo { +public class ProcessLogVO extends AbsVo { /** 浠诲姟id */ @ApiModelProperty("浠诲姟id") @@ -44,9 +42,9 @@ @ApiModelProperty("浜嬩欢鏁版嵁锛屾牴鎹笉鍚岀殑浜嬩欢鍙瓨鍌ㄥ搴旂殑鎵╁睍鏁版嵁銆傚杞姙浜嬩欢鍙瓨鍌ㄨ浆鍔炲墠鍚庣殑澶勭悊浜轰俊鎭�") private String eventDataJson; - public static FlowLogVO getVoByEntity(@NonNull FlowLog entity, FlowLogVO vo) { + public static ProcessLogVO getVoByEntity(@NonNull ProcessLog entity, ProcessLogVO vo) { if(vo == null) { - vo = new FlowLogVO(); + vo = new ProcessLogVO(); } BeanUtils.copyProperties(entity, vo); return vo; diff --git a/flowable/src/main/java/com/ycl/mapper/FlowLogMapper.java b/flowable/src/main/java/com/ycl/mapper/FlowLogMapper.java deleted file mode 100644 index 17908f1..0000000 --- a/flowable/src/main/java/com/ycl/mapper/FlowLogMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ycl.mapper; - -import com.ycl.domain.entity.FlowLog; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.ycl.domain.vo.FlowLogVO; -import com.ycl.domain.query.FlowLogQuery; -import java.util.List; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -/** - * 娴佺▼鏃ュ織 Mapper 鎺ュ彛 - * - * @author xp - * @since 2025-01-02 - */ -@Mapper -public interface FlowLogMapper extends BaseMapper<FlowLog> { - - /** - * id鏌ユ壘娴佺▼鏃ュ織 - * @param id - * @return - */ - FlowLogVO getById(Long id); - - /** - * 鍒嗛〉 - */ - IPage getPage(IPage page, @Param("query") FlowLogQuery query); - -} diff --git a/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java new file mode 100644 index 0000000..1852b82 --- /dev/null +++ b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java @@ -0,0 +1,32 @@ +package com.ycl.mapper; + +import com.ycl.domain.entity.ProcessLog; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.domain.vo.ProcessLogVO; +import com.ycl.domain.query.ProcessLogQuery; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 娴佺▼鏃ュ織 Mapper 鎺ュ彛 + * + * @author xp + * @since 2025-01-02 + */ +@Mapper +public interface ProcessLogMapper extends BaseMapper<ProcessLog> { + + /** + * id鏌ユ壘娴佺▼鏃ュ織 + * @param id + * @return + */ + ProcessLogVO getById(Long id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") ProcessLogQuery query); + +} diff --git a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java b/flowable/src/main/java/com/ycl/service/IFlowTaskService.java index 35f11b5..393fc17 100644 --- a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java +++ b/flowable/src/main/java/com/ycl/service/IFlowTaskService.java @@ -145,7 +145,7 @@ * @param procInsId 娴佺▼瀹炰緥Id * @return */ - AjaxResult flowRecord(String procInsId,String deployId); + AjaxResult flowRecord(String procInsId); /** * 鏍规嵁浠诲姟ID鏌ヨ鎸傝浇鐨勮〃鍗曚俊鎭� diff --git a/flowable/src/main/java/com/ycl/service/FlowLogService.java b/flowable/src/main/java/com/ycl/service/ProcessLogService.java similarity index 74% rename from flowable/src/main/java/com/ycl/service/FlowLogService.java rename to flowable/src/main/java/com/ycl/service/ProcessLogService.java index 1c2727f..442b0fa 100644 --- a/flowable/src/main/java/com/ycl/service/FlowLogService.java +++ b/flowable/src/main/java/com/ycl/service/ProcessLogService.java @@ -1,10 +1,10 @@ package com.ycl.service; -import com.ycl.common.enums.business.FlowLogEventTypeEnum; -import com.ycl.domain.entity.FlowLog; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; +import com.ycl.domain.entity.ProcessLog; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.common.base.Result; -import com.ycl.domain.query.FlowLogQuery; +import com.ycl.domain.query.ProcessLogQuery; import java.util.List; /** @@ -13,7 +13,7 @@ * @author xp * @since 2025-01-02 */ -public interface FlowLogService extends IService<FlowLog> { +public interface ProcessLogService extends IService<ProcessLog> { /** * 娣诲姞 @@ -23,7 +23,7 @@ * @param projectId 椤圭洰id * @param eventDataJson json鎵╁睍鍐呭 */ - void add(String taskId, String flowInsId, FlowLogEventTypeEnum eventType, Long projectId, String eventDataJson); + void add(String taskId, String flowInsId, ProcessLogEventTypeEnum eventType, Long projectId, String eventDataJson); /** * 鎵归噺鍒犻櫎 @@ -44,7 +44,7 @@ * @param query * @return */ - Result page(FlowLogQuery query); + Result page(ProcessLogQuery query); /** * 鏍规嵁id鏌ユ壘 diff --git a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java index e5abf8c..ac3d23e 100644 --- a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java +++ b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java @@ -5,10 +5,12 @@ import com.ycl.common.core.domain.entity.SysUser; import com.ycl.common.enums.FlowComment; import com.ycl.common.enums.business.TaskStatusEnum; +import com.ycl.common.utils.SecurityUtils; import com.ycl.domain.entity.SysForm; import com.ycl.domain.vo.FormDetailVO; import com.ycl.flow.FindNextNodeUtil; import com.ycl.service.ISysFormService; +import com.ycl.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.flowable.bpmn.model.*; import org.flowable.bpmn.model.Process; @@ -18,6 +20,8 @@ import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.identitylink.api.IdentityLink; +import org.flowable.identitylink.api.IdentityLinkType; import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; @@ -39,6 +43,7 @@ private final RepositoryService repositoryService; private final TaskService taskService; private final HistoryService historyService; + private final ISysUserService sysUserService; /** * 閫氳繃褰撳墠鑺傜偣瀹氫箟key锛岃幏鍙栧叾涓婁竴涓妭鐐圭殑淇℃伅锛屽鏋滃墠闈㈡槸骞惰鐨勪細杩斿洖澶氫釜(鍖呭惈褰撳墠鑺傜偣) @@ -272,6 +277,7 @@ * @param taskId 褰撳墠浠诲姟id * @param msg 瀹℃牳鎰忚 */ + @Deprecated public void reject(String rejectedTaskDefKey, String rejectTaskDefKey, String processInsId, String taskId, String msg) { // 椹冲洖鐨勬牳蹇僡pi锛歳untimeService.createChangeActivityStateBuilder().moveXXX 鐨刟pi锛屽彲浠ヨ缃粠褰撳墠鑺傜偣绉诲姩鍒扮洰鏍囪妭鐐� // 椹冲洖鐨勬牳蹇冿細闇�瑕佹壘鍒板綋鍓嶈妭鐐广�佷互鍙婅娴佽浆鍒扮殑鐩爣鑺傜偣銆傚叾涓瘮杈冮夯鐑︾殑鏄鐞嗗苟琛岀瓑姣旇緝澶嶆潅鐨勬儏鍐� @@ -294,4 +300,21 @@ } + /** + * 鑾峰彇褰撳墠鐢ㄦ埛鐨勭粍 + * + * @return + */ + public List<String> getCurrentUserGroups() { + String deptId = "dept:" + SecurityUtils.getLoginUser().getDeptId(); + List<String> roleIds; + if (CollectionUtils.isEmpty(SecurityUtils.getLoginUser().getUser().getRoles())) { + roleIds = new ArrayList<>(1); + } else { + roleIds = SecurityUtils.getLoginUser().getUser().getRoles().stream().map(role -> role.getRoleId() + "").collect(Collectors.toList()); + } + roleIds.add(deptId); + return roleIds; + } + } diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java index 82f8e1b..32f9399 100644 --- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -29,7 +29,7 @@ import com.ycl.flow.FindNextNodeUtil; import com.ycl.flow.FlowableUtils; import com.ycl.mapper.ProcessCodingMapper; -import com.ycl.service.FlowLogService; +import com.ycl.service.ProcessLogService; import com.ycl.service.IFlowTaskService; import com.ycl.service.ISysDeployFormService; import com.ycl.service.ISysFormService; @@ -64,7 +64,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.io.InputStream; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; @@ -94,7 +93,7 @@ private final ISysFormService sysFormService; private final TaskCommonService taskCommonService; private final ProcessCodingMapper processCodingMapper; - private final FlowLogService flowLogService; + private final ProcessLogService processLogService; /** * 瀹屾垚瀹℃牳浠诲姟 @@ -144,22 +143,20 @@ newV.put(task.getTaskDefinitionKey() + "&" + key, variables.get(key)); //瀛楀吀閲屾湁灏辨斁鍏ユ祦绋嬪彉閲忎腑 if (!CollectionUtils.isEmpty(dictList) && dictList.contains(key)) { - processVariables.put(key, variables.get(key)); + processVariables.put(key,variables.get(key)); } } } //娣诲姞娴佺▼鍙橀噺 - if (!processVariables.isEmpty()) taskService.setVariables(taskId, processVariables); + if(!processVariables.isEmpty()) taskService.setVariables(taskId,processVariables); taskService.addComment(taskId, task.getProcessInstanceId(), FlowComment.SUBMIT.getType(), "瀹屾垚鎻愪氦"); - // 鍒ゆ柇褰撳墠浠诲姟鏄笉鏄浆鍔炶繃鐨� - Boolean delegation = flowLogService.taskDelegation(task.getProcessInstanceId(), task.getId()); - if (delegation) { + if (DelegationState.PENDING.equals(task.getDelegationState())) { taskService.resolveTask(taskId, newV); + } else { + // 鍏堣褰撳墠鐢ㄦ埛璁ら杩欎釜浠诲姟 + taskService.claim(taskId, SecurityUtils.getUserId() + ""); + taskService.complete(taskId, newV); } - // 鍏堣褰撳墠鐢ㄦ埛璁ら杩欎釜浠诲姟 - taskService.claim(taskId, SecurityUtils.getUserId() + ""); - taskService.complete(taskId, newV); - return AjaxResult.success("鎻愪氦鎴愬姛"); } @@ -803,7 +800,7 @@ * @return */ @Override - public AjaxResult flowRecord(String procInsId, String deployId) { + public AjaxResult flowRecord(String procInsId) { Map<String, Object> map = new HashMap<String, Object>(); if (StringUtils.isNotBlank(procInsId)) { List<HistoricActivityInstance> list = historyService @@ -1301,12 +1298,16 @@ List<JSONObject> oldFields = JSON.parseObject(JSON.toJSONString(formJson.get(ProcessConstants.WIDGET_LIST)), new TypeReference<List<JSONObject>>() { }); - // 璁剧疆宸插~鍐欑殑琛ㄥ崟涓虹鐢ㄧ姸鎬� - if (!CollectionUtils.isEmpty(oldFields)) { + if(CollectionUtils.isNotEmpty(oldFields)) { + // 璁剧疆宸插~鍐欑殑琛ㄥ崟涓虹鐢ㄧ姸鎬� for (JSONObject oldField : oldFields) { JSONObject options = oldField.getJSONObject("options"); options.put("disabled", true); } + formJson.put(ProcessConstants.WIDGET_LIST, oldFields); + newP.put(ProcessConstants.TASK_FORM_KEY, formJson); + newP.remove(formDetailVO.getBeforeNodeDefId() + "&" + ProcessConstants.TASK_FORM_KEY); + formDetailVO.setFormJsonObj(newP); } // TODO 鏆傛椂鍙鐞嗙敤鎴蜂换鍔′笂鐨勮〃鍗� // if (StringUtils.isNotBlank(task.getFormKey())) { @@ -1326,10 +1327,7 @@ // } // oldFields.addAll(newFields); // } - formJson.put(ProcessConstants.WIDGET_LIST, oldFields); - newP.put(ProcessConstants.TASK_FORM_KEY, formJson); - newP.remove(formDetailVO.getBeforeNodeDefId() + "&" + ProcessConstants.TASK_FORM_KEY); - formDetailVO.setFormJsonObj(newP); + } } return beforeNodes; diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowLogServiceImpl.java b/flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java similarity index 64% rename from flowable/src/main/java/com/ycl/service/impl/FlowLogServiceImpl.java rename to flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java index 1638b47..c9dbe97 100644 --- a/flowable/src/main/java/com/ycl/service/impl/FlowLogServiceImpl.java +++ b/flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java @@ -2,14 +2,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.ycl.common.enums.business.FlowLogEventTypeEnum; -import com.ycl.domain.entity.FlowLog; -import com.ycl.mapper.FlowLogMapper; -import com.ycl.service.FlowLogService; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; +import com.ycl.domain.entity.ProcessLog; +import com.ycl.mapper.ProcessLogMapper; +import com.ycl.service.ProcessLogService; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ycl.domain.vo.FlowLogVO; -import com.ycl.domain.query.FlowLogQuery; +import com.ycl.domain.vo.ProcessLogVO; +import com.ycl.domain.query.ProcessLogQuery; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; @@ -27,9 +27,9 @@ */ @Service @RequiredArgsConstructor -public class FlowLogServiceImpl extends ServiceImpl<FlowLogMapper, FlowLog> implements FlowLogService { +public class ProcessLogServiceImpl extends ServiceImpl<ProcessLogMapper, ProcessLog> implements ProcessLogService { - private final FlowLogMapper flowLogMapper; + private final ProcessLogMapper processLogMapper; /** * 娣诲姞鏃ュ織 @@ -40,10 +40,10 @@ * @param eventDataJson json鎵╁睍鍐呭 */ @Override - public void add(String taskId, String flowInsId, FlowLogEventTypeEnum eventType, Long projectId, String eventDataJson) { - FlowLog log = new FlowLog(); + public void add(String taskId, String flowInsId, ProcessLogEventTypeEnum eventType, Long projectId, String eventDataJson) { + ProcessLog log = new ProcessLog(); log.setTaskId(taskId); - log.setFlowInsId(flowInsId); + log.setProcessInsId(flowInsId); log.setProjectId(projectId); log.setEventType(eventType); log.setEventDataJson(eventDataJson); @@ -78,8 +78,8 @@ * @return */ @Override - public Result page(FlowLogQuery query) { - IPage<FlowLogVO> page = PageUtil.getPage(query, FlowLogVO.class); + public Result page(ProcessLogQuery query) { + IPage<ProcessLogVO> page = PageUtil.getPage(query, ProcessLogVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -91,7 +91,7 @@ */ @Override public Result detail(Long id) { - FlowLogVO vo = baseMapper.getById(id); + ProcessLogVO vo = baseMapper.getById(id); Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); return Result.ok().data(vo); } @@ -102,19 +102,19 @@ */ @Override public Result all() { - List<FlowLog> entities = baseMapper.selectList(null); - List<FlowLogVO> vos = entities.stream() - .map(entity -> FlowLogVO.getVoByEntity(entity, null)) + List<ProcessLog> entities = baseMapper.selectList(null); + List<ProcessLogVO> vos = entities.stream() + .map(entity -> ProcessLogVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } @Override public Boolean taskDelegation(String processInstanceId, String taskId) { - List<FlowLog> list = new LambdaQueryChainWrapper<>(baseMapper) - .eq(FlowLog::getFlowInsId, processInstanceId) - .eq(FlowLog::getTaskId, taskId) - .eq(FlowLog::getEventType, FlowLogEventTypeEnum.DELEGATE) + List<ProcessLog> list = new LambdaQueryChainWrapper<>(baseMapper) + .eq(ProcessLog::getProcessInsId, processInstanceId) + .eq(ProcessLog::getTaskId, taskId) + .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.DELEGATE) .list(); return CollectionUtils.isNotEmpty(list); } diff --git a/flowable/src/main/resources/mapper/FlowLogMapper.xml b/flowable/src/main/resources/mapper/ProcessLogMapper.xml similarity index 86% rename from flowable/src/main/resources/mapper/FlowLogMapper.xml rename to flowable/src/main/resources/mapper/ProcessLogMapper.xml index 5a5c24a..a377afe 100644 --- a/flowable/src/main/resources/mapper/FlowLogMapper.xml +++ b/flowable/src/main/resources/mapper/ProcessLogMapper.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ycl.mapper.FlowLogMapper"> +<mapper namespace="com.ycl.mapper.ProcessLogMapper"> <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.ycl.domain.vo.FlowLogVO"> + <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProcessLogVO"> <result column="task_id" property="taskId" /> <result column="event_type" property="eventType" /> <result column="project_id" property="projectId" /> @@ -28,7 +28,7 @@ TFL.event_data_json, TFL.id FROM - t_flow_log TFL + t_process_log TFL WHERE TFL.id = #{id} AND TFL.deleted = 0 </select> @@ -44,7 +44,7 @@ TFL.event_data_json, TFL.id FROM - t_flow_log TFL + t_process_log TFL WHERE TFL.deleted = 0 </select> diff --git a/start/src/main/resources/application-dev.yml b/start/src/main/resources/application-dev.yml index c288bd0..fafad6b 100644 --- a/start/src/main/resources/application-dev.yml +++ b/start/src/main/resources/application-dev.yml @@ -7,7 +7,7 @@ # 鐗堟潈骞翠唤 copyrightYear: 2024 # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/projectManagement/uploadPath锛孡inux閰嶇疆 /home/projectManagement/uploadPath锛� - profile: D:/projectManagement/uploadPath + profile: E:/ycl/file # 鑾峰彇ip鍦板潃寮�鍏� addressEnabled: false # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉 diff --git a/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java b/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java index 8ae1e70..7c9cf60 100644 --- a/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java +++ b/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java @@ -2,6 +2,8 @@ import java.util.ArrayList; import java.util.List; + +import com.ycl.system.domain.base.AbsQuery; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @@ -151,10 +153,12 @@ if (StringUtils.isNotBlank(sqlString.toString())) { Object params = joinPoint.getArgs()[0]; - if (StringUtils.isNotNull(params) && params instanceof BaseEntity) - { + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) params; baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); + } else if (StringUtils.isNotNull(params) && params instanceof AbsQuery) { + AbsQuery query = (AbsQuery) params; + query.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); } } } diff --git a/system/src/main/java/com/ycl/framework/config/SecurityConfig.java b/system/src/main/java/com/ycl/framework/config/SecurityConfig.java index d3ebaa3..d5be009 100644 --- a/system/src/main/java/com/ycl/framework/config/SecurityConfig.java +++ b/system/src/main/java/com/ycl/framework/config/SecurityConfig.java @@ -115,6 +115,7 @@ // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂� .antMatchers(HttpMethod.GET, "/flowable-ui", "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() + .antMatchers("/common/upload").permitAll() // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇� .anyRequest().authenticated() .and() diff --git a/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java b/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java index 940053d..909f96b 100644 --- a/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java +++ b/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java @@ -3,6 +3,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.HashMap; +import java.util.Map; + /** * 鍩虹鍒嗛〉鏌ヨ锛岄粯璁ょ涓�椤碉紝姣忛〉10鏉� * @@ -18,4 +21,6 @@ @ApiModelProperty(value = "姣忛〉鏉℃暟", required = true) private long pageSize = 10L; + public Map<String, Object> params = new HashMap<>(2); + } diff --git a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java index 679a8a3..2230c2a 100644 --- a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java +++ b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java @@ -65,7 +65,7 @@ @Override public List<StringTreeSelect> flowDeptTree(SysDept dept) { - List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + List<SysDept> depts = deptMapper.selectDeptList(dept); List<StringTreeSelect> list = depts.stream().map(item -> { StringTreeSelect d = new StringTreeSelect(); d.setId("dept:" + item.getDeptId()); -- Gitblit v1.8.0