chenc 3 yıl önce
ebeveyn
işleme
4609088f48

+ 26 - 1
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActReModelMapper.java

@@ -3,6 +3,9 @@ package org.jeecg.modules.activiti.mapper;
 import java.util.List;
 import java.util.Map;
 
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity;
 import org.activiti.engine.task.Task;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.activiti.entity.ActReModel;
@@ -19,9 +22,31 @@ public interface ActReModelMapper extends BaseMapper<ActReModel> {
     //查询全部
     List<ActReModel> getList(@Param("actReModel")ActReModel actReModel);
 
-    //根据id修改公司id
+    //根据id修改流程模型数据公司id
     int updateOrgById(@Param("actReModel")ActReModel actReModel);
 
     //我的待办查询
     List<Task> getListTask(@Param("map")Map<String,Object> map);
+
+    //根据多个任务id修改我的待办数据公司id
+    int updateTaskPkOrgById(@Param("pkOrg")String pkOrg,@Param("list")List<String> list);
+
+    //我的已办查询
+    List<HistoricTaskInstanceEntity> getHistoricTaskList(@Param("map")Map<String,Object> map);
+
+    //根据多个id修改我的已办数据公司id
+    int updateTaskInstPkOrgByIds(@Param("pkOrg")String pkOrg,@Param("list")List<String> list);
+
+    //根据id修改进行中的公司id
+    int updateActRuExecutionPkOrgById(@Param("map")Map<String,Object> map);
+
+    //进行中的流程查询
+    List<ExecutionEntity> getActRuExecutionList(@Param("map")Map<String,Object> map);
+
+    //根据id修改已结束流程数据公司id
+    int updateActHiProcinstPkOrgById(@Param("map")Map<String,Object> map);
+
+    //已结束流程查询
+    List<HistoricProcessInstanceEntity> getActHiProcinstList(@Param("map")Map<String,Object> map);
+
 }

+ 93 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActReModelMapper.xml

@@ -97,6 +97,99 @@ FROM
 	where
 	1=1
 	AND ((A.ASSIGNEE_=#{map.username} or I.USER_ID=#{map.username}) or (A.ASSIGNEE_=#{map.userId} or I.USER_ID=#{map.userId}))
+	<if test="map.pkOrg!=null and map.pkOrg!=''">
+		AND A.pk_org=#{map.pkOrg}
+	</if>
 	ORDER BY A.PRIORITY_ desc,A.CREATE_TIME_ desc
     </select>
+
+	<update id="updateTaskPkOrgById" >
+			UPDATE ACT_RU_TASK SET pk_org=#{pkOrg} WHERE id_ IN
+			<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+	</update>
+
+	<select id="getHistoricTaskList" resultType="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity" parameterType="java.util.Map">
+		SELECT DISTINCT
+			RES.*,PROC_DEF_ID_ as processDefinitionId,TASK_DEF_KEY_ AS taskDefinitionKey,PROC_INST_ID_ AS processInstanceId,DURATION_ AS durationInMillis
+		FROM
+			ACT_HI_TASKINST RES
+		WHERE
+			RES.ASSIGNEE_ = #{map.username}
+			AND RES.END_TIME_ IS NOT NULL
+			<if test="map.pkOrg!=null and map.pkOrg!=''">
+				AND RES.pk_org=#{map.pkOrg}
+			</if>
+		ORDER BY
+			RES.END_TIME_ DESC
+	</select>
+
+	<update id="updateTaskInstPkOrgByIds">
+		UPDATE act_hi_taskinst SET pk_org=#{pkOrg} WHERE id_ IN
+		<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	</update>
+
+	<update id="updateActRuExecutionPkOrgById" parameterType="java.util.Map">
+		UPDATE ACT_RU_EXECUTION SET pk_org=#{map.pkOrg} WHERE ID_ = #{map.id}
+	</update>
+
+	<select id="getActRuExecutionList" resultType="org.activiti.engine.impl.persistence.entity.ExecutionEntity" parameterType="java.util.Map">
+		SELECT DISTINCT
+			RES.*,
+			P.KEY_ AS ProcessDefinitionKey,
+			P.ID_ AS ProcessDefinitionId,
+			P.NAME_ AS ProcessDefinitionName,
+			P.VERSION_ AS ProcessDefinitionVersion,
+			P.DEPLOYMENT_ID_ AS DeploymentId
+		FROM
+			ACT_RU_EXECUTION RES
+			INNER JOIN ACT_RE_PROCDEF P ON RES.PROC_DEF_ID_ = P.ID_
+		WHERE
+			RES.PARENT_ID_ IS NULL
+			<if test="map.pkOrg !=null and map.pkOrg != ''">
+				AND RES.pk_org = #{map.pkOrg}
+			</if>
+			<if test="map.name !=null and map.name != ''">
+				AND RES.NAME_ = #{map.name}
+			</if>
+			<if test="map.key !=null and map.key != ''">
+				AND P.KEY_ = #{map.key}
+			</if>
+		ORDER BY
+			RES.ID_ DESC
+			LIMIT 2147483647 OFFSET 0
+	</select>
+	
+	<update id="updateActHiProcinstPkOrgById" parameterType="java.util.Map">
+		UPDATE ACT_HI_PROCINST SET pk_org=#{map.pkOrg} WHERE ID_=#{map.id}
+	</update>
+
+	<select id="getActHiProcinstList" resultType="org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity" parameterType="java.util.Map">
+		SELECT DISTINCT
+			RES.*,
+			DEF.KEY_ AS PROC_DEF_KEY_,
+			DEF.NAME_ AS PROC_DEF_NAME_,
+			DEF.VERSION_ AS PROC_DEF_VERSION_,
+			DEF.DEPLOYMENT_ID_ AS DEPLOYMENT_ID_
+		FROM
+			ACT_HI_PROCINST RES
+			LEFT OUTER JOIN ACT_RE_PROCDEF DEF ON RES.PROC_DEF_ID_ = DEF.ID_
+		WHERE
+			RES.END_TIME_ IS NOT NULL
+			<if test="map.pkOrg !=null and map.pkOrg !=''">
+				AND RES.pk_org = #{map.pkOrg}
+			</if>
+			<if test="map.name !=null and map.name != ''">
+				AND RES.NAME_ = #{map.name}
+			</if>
+			<if test="map.key !=null and map.key != ''">
+				AND DEF.KEY_ = #{map.key}
+			</if>
+		ORDER BY
+			RES.END_TIME_ DESC
+			LIMIT 2147483647 OFFSET 0
+	</select>
 </mapper>

+ 11 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActReModelService.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.activiti.service;
 
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity;
 import org.activiti.engine.task.Task;
 import org.jeecg.modules.activiti.entity.ActReModel;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -20,4 +23,12 @@ public interface IActReModelService extends IService<ActReModel> {
     int updateOrgById(ActReModel actReModel);
     //我的待办查询
     List<Task> getListTask(Map<String,Object> map);
+    //我的已办查询
+    List<HistoricTaskInstanceEntity> getHistoricTaskList(Map<String,Object> map);
+    //根据多个id修改我的已办数据公司id
+    int updateTaskInstPkOrgByIds(String pkOrg,List<String> list);
+    //进行中的流程查询
+    List<ExecutionEntity> getActRuExecutionList(Map<String,Object> map);
+    //已结束流程查询
+    List<HistoricProcessInstanceEntity> getActHiProcinstList(Map<String,Object> map);
 }

+ 23 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActReModelServiceImpl.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.activiti.service.Impl;
 
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity;
 import org.activiti.engine.task.Task;
 import org.jeecg.modules.activiti.entity.ActReModel;
 import org.jeecg.modules.activiti.mapper.ActReModelMapper;
@@ -38,4 +41,24 @@ public class ActReModelServiceImpl extends ServiceImpl<ActReModelMapper, ActReMo
     public List<Task> getListTask(Map<String, Object> map) {
         return actReModelMapper.getListTask(map);
     }
+
+    @Override
+    public List<HistoricTaskInstanceEntity> getHistoricTaskList(Map<String, Object> map) {
+        return actReModelMapper.getHistoricTaskList(map);
+    }
+
+    @Override
+    public int updateTaskInstPkOrgByIds(String pkOrg, List<String> list) {
+        return actReModelMapper.updateTaskInstPkOrgByIds(pkOrg,list);
+    }
+
+    @Override
+    public List<ExecutionEntity> getActRuExecutionList(Map<String, Object> map) {
+        return actReModelMapper.getActRuExecutionList(map);
+    }
+
+    @Override
+    public List<HistoricProcessInstanceEntity> getActHiProcinstList(Map<String, Object> map) {
+        return actReModelMapper.getActHiProcinstList(map);
+    }
 }

+ 16 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActZprocessServiceImpl.java

@@ -29,6 +29,7 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.SpringContextUtils;
 import org.jeecg.modules.activiti.entity.*;
+import org.jeecg.modules.activiti.mapper.ActReModelMapper;
 import org.jeecg.modules.activiti.mapper.ActZprocessMapper;
 import org.jeecg.modules.activiti.service.IActZprocessService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -68,6 +69,8 @@ public class ActZprocessServiceImpl extends ServiceImpl<ActZprocessMapper, ActZp
     private EntityManager entityManager;
     @Autowired
     private ISysBaseAPI sysBaseAPI;
+    @Autowired
+    private ActReModelMapper actReModelMapper;
 
     /**
      * 通过key设置所有版本为旧
@@ -129,6 +132,19 @@ public class ActZprocessServiceImpl extends ServiceImpl<ActZprocessMapper, ActZp
         // 设置流程实例名称
         runtimeService.setProcessInstanceName(pi.getId(), actBusiness.getTitle());
         List<Task> tasks = taskService.createTaskQuery().processInstanceId(pi.getId()).list();
+        //修改任务的公司id
+        List<String> taskIdList=new ArrayList<>();
+        for(Task task : tasks){
+            taskIdList.add(task.getId());
+        }
+        actReModelMapper.updateTaskPkOrgById(loginUser.getOrgCode(),taskIdList);
+        //修改进行中的公司id
+        Map<String,Object> mapWhere=new HashMap<>();
+        mapWhere.put("pkOrg",loginUser.getOrgCode());
+        mapWhere.put("id",pi.getId());
+        actReModelMapper.updateActRuExecutionPkOrgById(mapWhere);
+        //修改已结束的公司id
+        actReModelMapper.updateActHiProcinstPkOrgById(mapWhere);
         for(Task task : tasks){
             if(actBusiness.getFirstGateway()){
                 // 网关类型

+ 58 - 26
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActProcessInsController.java

@@ -8,13 +8,18 @@ import org.activiti.engine.*;
 import org.activiti.engine.history.HistoricIdentityLink;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricProcessInstanceQuery;
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.runtime.ProcessInstanceQuery;
 import org.activiti.engine.task.Task;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.ComboModel;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.activiti.entity.*;
+import org.jeecg.modules.activiti.service.IActReModelService;
 import org.jeecg.modules.activiti.service.Impl.ActBusinessServiceImpl;
 import org.jeecg.modules.activiti.service.Impl.ActZprocessServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,6 +61,8 @@ public class ActProcessInsController {
 
     @Autowired
     private ProcessEngineConfiguration processEngineConfiguration;
+    @Autowired
+    private IActReModelService iActReModelService;
 
 /*通过流程定义id获取第一个任务节点*/
     @RequestMapping(value = "/getFirstNode", method = RequestMethod.GET)
@@ -72,19 +79,32 @@ public class ActProcessInsController {
 
         List<ProcessInsVo> list = new ArrayList<>();
 
-        ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery()
-                .orderByProcessInstanceId().desc();
-
+//        ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery()
+//                .orderByProcessInstanceId().desc();
+//
+//        if(StrUtil.isNotBlank(name)){
+//            query.processInstanceNameLike("%"+name+"%");
+//        }
+//        if(StrUtil.isNotBlank(categoryId)){
+//            query.processDefinitionCategory(categoryId);
+//        }
+//        if(StrUtil.isNotBlank(key)) {
+//            query.processDefinitionKey(key);
+//        }
+//        List<ProcessInstance> processInstanceList = query.list();
+        //根据公司id过滤查询
+        Map<String,Object> map=new HashMap<>();
+        //当前登陆人信息
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+//        map.put("pkOrg",loginUser.getOrgCode());//当前登录公司id
         if(StrUtil.isNotBlank(name)){
-            query.processInstanceNameLike("%"+name+"%");
-        }
-        if(StrUtil.isNotBlank(categoryId)){
-            query.processDefinitionCategory(categoryId);
+            map.put("name",name);
         }
         if(StrUtil.isNotBlank(key)) {
-            query.processDefinitionKey(key);
+            map.put("key",key);
         }
-        List<ProcessInstance> processInstanceList = query.list();
+        //查询
+        List<ExecutionEntity> processInstanceList=iActReModelService.getActRuExecutionList(map);
         processInstanceList.forEach(e -> {
             list.add(new ProcessInsVo(e));
         });
@@ -187,27 +207,39 @@ public class ActProcessInsController {
 
         List<HistoricProcessInsVo> list = new ArrayList<>();
 
-        HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().finished().
-                orderByProcessInstanceEndTime().desc();
-
+//        HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().finished().
+//                orderByProcessInstanceEndTime().desc();
+//
+//        if(StrUtil.isNotBlank(name)){
+//            query.processInstanceNameLike("%"+name+"%");
+//        }
+//        if(StrUtil.isNotBlank(categoryId)){
+//            query.processDefinitionCategory(categoryId);
+//        }
+//        if(StrUtil.isNotBlank(key)) {
+//            query.processDefinitionKey(key);
+//        }
+//
+//        if(StrUtil.isNotBlank(startDate)&&StrUtil.isNotBlank(endDate)){
+//            Date start = DateUtil.parse(startDate);
+//            Date end = DateUtil.parse(endDate);
+//            query.finishedAfter(start);
+//            query.finishedBefore(DateUtil.endOfDay(end));
+//        }
+//
+//        List<HistoricProcessInstance> processInstanceList = query.list();
+        //根据公司id过滤查询
+        Map<String,Object> map =new HashMap<>();
+        //当前登陆人
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+//        map.put("pkOrg",loginUser.getOrgCode());//当前登录人公司id
         if(StrUtil.isNotBlank(name)){
-            query.processInstanceNameLike("%"+name+"%");
-        }
-        if(StrUtil.isNotBlank(categoryId)){
-            query.processDefinitionCategory(categoryId);
+            map.put("name",name);
         }
         if(StrUtil.isNotBlank(key)) {
-            query.processDefinitionKey(key);
-        }
-
-        if(StrUtil.isNotBlank(startDate)&&StrUtil.isNotBlank(endDate)){
-            Date start = DateUtil.parse(startDate);
-            Date end = DateUtil.parse(endDate);
-            query.finishedAfter(start);
-            query.finishedBefore(DateUtil.endOfDay(end));
+            map.put("key",key);
         }
-
-        List<HistoricProcessInstance> processInstanceList = query.list();
+        List<HistoricProcessInstanceEntity> processInstanceList=iActReModelService.getActHiProcinstList(map);
         processInstanceList.forEach(e -> {
             list.add(new HistoricProcessInsVo(e));
         });

+ 29 - 15
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActTaskController.java

@@ -14,6 +14,7 @@ import org.activiti.engine.history.HistoricTaskInstanceQuery;
 import org.activiti.engine.impl.interceptor.Command;
 import org.activiti.engine.impl.interceptor.CommandContext;
 import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity;
 import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
 import org.activiti.engine.impl.pvm.process.ActivityImpl;
 import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
@@ -112,6 +113,8 @@ public class ActTaskController {
         Map<String,Object> map=new HashMap<>();
         map.put("username",sysUser.getUsername());
         map.put("userId",sysUser.getId());
+        //公司id
+//        map.put("pkOrg",sysUser.getOrgCode());
         taskList=iActReModelService.getListTask(map);
         // 转换vo
         taskList.forEach(e -> {
@@ -385,6 +388,12 @@ public class ActTaskController {
         taskService.complete(id);
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInstId).list();
+        //修改公司id
+        List<String> listTaskId=new ArrayList<>();
+        for(Task t : tasks){
+            listTaskId.add(t.getId());
+        }
+        iActReModelService.updateTaskInstPkOrgByIds(loginUser.getOrgCode(),listTaskId);
         // 判断下一个节点
         if(tasks!=null&&tasks.size()>0){
             ActBusiness actBusiness = actBusinessService.getById(pi.getBusinessKey());
@@ -565,21 +574,26 @@ public class ActTaskController {
         List<HistoricTaskVo> list = new ArrayList<>();
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = loginUser.getUsername();
-        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery().or().taskCandidateUser(userId).
-                taskAssignee(userId).endOr().finished();
-
-        // 多条件搜索
-        query.orderByTaskCreateTime().desc();
-        if(StrUtil.isNotBlank(name)){
-            query.taskNameLike("%"+name+"%");
-        }
-        if(StrUtil.isNotBlank(categoryId)){
-            query.taskCategory(categoryId);
-        }
-        if(priority!=null){
-            query.taskPriority(priority);
-        }
-        List<HistoricTaskInstance> taskList = query.list();
+//        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery().or().taskCandidateUser(userId).
+//                taskAssignee(userId).endOr().finished();
+//
+//        // 多条件搜索
+//        query.orderByTaskCreateTime().desc();
+//        if(StrUtil.isNotBlank(name)){
+//            query.taskNameLike("%"+name+"%");
+//        }
+//        if(StrUtil.isNotBlank(categoryId)){
+//            query.taskCategory(categoryId);
+//        }
+//        if(priority!=null){
+//            query.taskPriority(priority);
+//        }
+//        List<HistoricTaskInstance> taskList = query.list();
+        //根据公司id过滤查询已办列表
+        Map<String,Object> map=new HashMap<>();
+        map.put("username",userId);
+//        map.put("pkOrg",loginUser.getOrgCode());
+        List<HistoricTaskInstanceEntity> taskList=iActReModelService.getHistoricTaskList(map);
         // 转换vo
         List<ComboModel> allUser = sysBaseAPI.queryAllUser();
         Map<String, String> userMap = allUser.stream().collect(Collectors.toMap(ComboModel::getUsername, ComboModel::getTitle));