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