|
|
@@ -597,32 +597,45 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
|
|
|
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_, '%') " +
|
|
|
- " ) " +
|
|
|
- " )";
|
|
|
+ //String sql = "SELECT ID_,TASK_ID_,PROC_INST_ID_,EXECUTOR_ FROM IBPS_BPM_TASK_ASSIGN WHERE PROC_INST_ID_ IN('" + inst.getId() + "')";
|
|
|
+ //String sql = "SELECT ID_,TASK_ID_,PROC_INST_ID_,EXECUTOR_ FROM IBPS_BPM_TASK_ASSIGN WHERE PROC_INST_ID_ IN('" + taskCmd.getInstId() + "')";
|
|
|
+ //获取所有候选人的主部门
|
|
|
+ String sql = " SELECT r.MAIN_PID_, t.* " +
|
|
|
+ " FROM ibps_party_rel r " +
|
|
|
+ " INNER JOIN IBPS_BPM_TASK_ASSIGN t ON r.sub_pid_ = t.EXECUTOR_ " +
|
|
|
+ " WHERE r.biz_ = 'mainPost' " +
|
|
|
+ " AND t.PROC_INST_ID_ = '" + inst.getId() + "'";
|
|
|
+ //获取发起人的组织机构
|
|
|
+ String position = "SELECT e.ID_ " +
|
|
|
+ " FROM ibps_party_entity e " +
|
|
|
+ " INNER JOIN ibps_party_employee emp ON emp.id_ = '" + createBy + "' " +
|
|
|
+ " INNER JOIN ibps_party_entity dept ON dept.ID_ = SUBSTRING_INDEX(emp.POSITIONS_, ',', 1) " +
|
|
|
+ " WHERE e.PATH_ LIKE CONCAT(SUBSTRING_INDEX(dept.PATH_, '.', 1), '.%')";
|
|
|
+// 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>> rsList = (List<Map<String, Object>>) commonDao.query(position); //正确的处理人
|
|
|
List<Map<String, Object>> delList = list.stream() //需要删除多余的处理人
|
|
|
- .filter(map -> rsList.stream().noneMatch(bMap -> bMap.get("employee_id").equals(map.get("EXECUTOR_"))))
|
|
|
+ .filter(map -> rsList.stream().noneMatch(bMap -> bMap.get("ID_").equals(map.get("MAIN_PID_"))))
|
|
|
.collect(Collectors.toList());
|
|
|
String idStr = delList.stream()
|
|
|
.map(map -> String.valueOf(map.get("ID_"))) // 提取值并转为字符串
|