|
|
@@ -1,17 +1,16 @@
|
|
|
package com.lc.ibps.bpmn.provider;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
import com.lc.ibps.api.base.model.DefaultNoneUser;
|
|
|
+import com.lc.ibps.base.db.mybatis.CommonDao;
|
|
|
import com.lc.ibps.form.data.exception.DataException;
|
|
|
import com.lc.ibps.office.provider.BpmInitiatedProvider;
|
|
|
import org.activiti.engine.ActivitiException;
|
|
|
+import org.apache.commons.collections.ListUtils;
|
|
|
import org.codehaus.jackson.map.ObjectMapper;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -175,6 +174,8 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
|
|
|
private BpmDefineXmlRepository bpmDefineXmlRepository;
|
|
|
@Resource
|
|
|
private BpmProcStatusService flowStatusService;
|
|
|
+ @Resource
|
|
|
+ private CommonDao commonDao;
|
|
|
|
|
|
/**
|
|
|
* 【流程实例】列表(分页条件查询)数据
|
|
|
@@ -594,6 +595,44 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
|
|
|
IbpsProcInstCmd cmd = this.getStartCmd(request);
|
|
|
IBpmProcInst inst = bpmProcInstService.startProcInst(cmd);
|
|
|
result.setMessage(I18nUtil.getMessage("com.lc.ibps.bpmn.provider.BpmInstProvider.start"));
|
|
|
+ if("Process_0v35zf8".equals(cmd.getFlowKey()) || "Process_08xwabfNEW".equals(cmd.getFlowKey()) ){ //人员档案流程的处理单独处理
|
|
|
+ String createBy = inst.getCreateBy();
|
|
|
+ String sql = "SELECT ID_,TASK_ID_,PROC_INST_ID_,EXECUTOR_ FROM IBPS_BPM_TASK_ASSIGN WHERE PROC_INST_ID_ IN('" + inst.getId() + "')";
|
|
|
+ String rsms = "SELECT DISTINCT e.id_ AS employee_id,e.name_ " +
|
|
|
+ "FROM ibps_party_employee e " +
|
|
|
+ "INNER JOIN ibps_party_user_role ur ON ur.user_id_ = e.id_ " +
|
|
|
+ "INNER JOIN ibps_party_role r ON ur.role_id_ = r.id_ " +
|
|
|
+ "WHERE r.ROLE_ALIAS_ = 'rsms' " +
|
|
|
+ " AND EXISTS ( " +
|
|
|
+ " SELECT 1 " +
|
|
|
+ " FROM ibps_party_employee e_a " +
|
|
|
+ " INNER JOIN ibps_party_entity ee_a_pos " +
|
|
|
+ " ON ee_a_pos.party_type_ = 'position' " +
|
|
|
+ " AND FIND_IN_SET(ee_a_pos.id_, e_a.positions_) > 0 " +
|
|
|
+ " CROSS JOIN ibps_party_entity ee_pos " +
|
|
|
+ " WHERE e_a.id_ = '"+ createBy + "' " +
|
|
|
+ " AND ee_pos.party_type_ = 'position' " +
|
|
|
+ " AND FIND_IN_SET(ee_pos.id_, e.positions_) > 0 " +
|
|
|
+ " AND ( " +
|
|
|
+ " ee_pos.path_ LIKE CONCAT(ee_a_pos.path_, '%') " +
|
|
|
+ " OR " +
|
|
|
+ " ee_a_pos.path_ LIKE CONCAT(ee_pos.path_, '%') " +
|
|
|
+ " ) " +
|
|
|
+ " )";
|
|
|
+ List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(sql); //原来的处理人
|
|
|
+ List<Map<String, Object>> rsList = (List<Map<String, Object>>) commonDao.query(rsms); //正确的处理人
|
|
|
+ List<Map<String, Object>> delList = list.stream() //需要删除多余的处理人
|
|
|
+ .filter(map -> rsList.stream().noneMatch(bMap -> bMap.get("employee_id").equals(map.get("EXECUTOR_"))))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ String idStr = delList.stream()
|
|
|
+ .map(map -> String.valueOf(map.get("ID_"))) // 提取值并转为字符串
|
|
|
+ .filter(s -> s != null && !s.equals("null")) // 过滤空值
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ String delSql = "delete from IBPS_BPM_TASK_ASSIGN where FIND_IN_SET(id_,'"+idStr+"')";
|
|
|
+ commonDao.execute(delSql);
|
|
|
+ }
|
|
|
+
|
|
|
result.addVariable("proInstId", inst.getId());
|
|
|
result.addVariable("bpmInstId", inst.getBpmnInstId());
|
|
|
result.addVariable("bizKey", inst.getBizKey());
|