|
@@ -24,6 +24,8 @@ import java.util.concurrent.Executors;
|
|
import com.uas.erp.core.*;
|
|
import com.uas.erp.core.*;
|
|
import com.uas.erp.core.bind.Operation;
|
|
import com.uas.erp.core.bind.Operation;
|
|
import com.uas.erp.dao.SqlMap;
|
|
import com.uas.erp.dao.SqlMap;
|
|
|
|
+import com.uas.erp.dao.common.*;
|
|
|
|
+import com.uas.erp.model.*;
|
|
import com.uas.open.OperationEvent;
|
|
import com.uas.open.OperationEvent;
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
|
import org.dom4j.Attribute;
|
|
import org.dom4j.Attribute;
|
|
@@ -62,31 +64,6 @@ import com.uas.erp.core.support.SystemSession;
|
|
import com.uas.erp.dao.BaseDao;
|
|
import com.uas.erp.dao.BaseDao;
|
|
import com.uas.erp.dao.SpObserver;
|
|
import com.uas.erp.dao.SpObserver;
|
|
import com.uas.erp.dao.SqlRowList;
|
|
import com.uas.erp.dao.SqlRowList;
|
|
-import com.uas.erp.dao.common.EmployeeDao;
|
|
|
|
-import com.uas.erp.dao.common.EnterpriseDao;
|
|
|
|
-import com.uas.erp.dao.common.FormDao;
|
|
|
|
-import com.uas.erp.dao.common.HrJobDao;
|
|
|
|
-import com.uas.erp.dao.common.JProcessSetDao;
|
|
|
|
-import com.uas.erp.dao.common.ProcessDao;
|
|
|
|
-import com.uas.erp.model.Employee;
|
|
|
|
-import com.uas.erp.model.Enterprise;
|
|
|
|
-import com.uas.erp.model.Form;
|
|
|
|
-import com.uas.erp.model.FormDetail;
|
|
|
|
-import com.uas.erp.model.HRJob;
|
|
|
|
-import com.uas.erp.model.JNode;
|
|
|
|
-import com.uas.erp.model.JProCand;
|
|
|
|
-import com.uas.erp.model.JProcess;
|
|
|
|
-import com.uas.erp.model.JProcessDeploy;
|
|
|
|
-import com.uas.erp.model.JProcessSet;
|
|
|
|
-import com.uas.erp.model.JProcessWrap;
|
|
|
|
-import com.uas.erp.model.JSONTree;
|
|
|
|
-import com.uas.erp.model.JTask;
|
|
|
|
-import com.uas.erp.model.JnodeRelation;
|
|
|
|
-import com.uas.erp.model.JprocessButton;
|
|
|
|
-import com.uas.erp.model.JprocessCommunicate;
|
|
|
|
-import com.uas.erp.model.Master;
|
|
|
|
-import com.uas.erp.model.MessageLog;
|
|
|
|
-import com.uas.erp.model.PagingRelease;
|
|
|
|
import com.uas.erp.service.common.ProcessService;
|
|
import com.uas.erp.service.common.ProcessService;
|
|
|
|
|
|
import net.sf.json.JSONObject;
|
|
import net.sf.json.JSONObject;
|
|
@@ -121,11 +98,15 @@ public class ProcessServiceImpl implements ProcessService {
|
|
private HandlerService handlerService;
|
|
private HandlerService handlerService;
|
|
@Autowired
|
|
@Autowired
|
|
private HrJobDao hrJobDao;
|
|
private HrJobDao hrJobDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private HrOrgStrDao hrOrgStrDao;
|
|
|
|
+
|
|
private final static String JBPM4_LAUNCH_ORID = "JBPM4_LAUNCH_ORID";
|
|
private final static String JBPM4_LAUNCH_ORID = "JBPM4_LAUNCH_ORID";
|
|
private final static String JBPM4_LAUNCH_DEPARTCODE = "JBPM4_LAUNCH_DEPARTCODE";
|
|
private final static String JBPM4_LAUNCH_DEPARTCODE = "JBPM4_LAUNCH_DEPARTCODE";
|
|
private final static String JBPM4_LAUNCH_DEPARTNAME = "JBPM4_LAUNCH_DEPARTNAME";
|
|
private final static String JBPM4_LAUNCH_DEPARTNAME = "JBPM4_LAUNCH_DEPARTNAME";
|
|
private final static String JBPM4_VAR_DEPARTNAME = "JBPM4_VAR_DEPARTNAME";
|
|
private final static String JBPM4_VAR_DEPARTNAME = "JBPM4_VAR_DEPARTNAME";
|
|
private final static String JBPM4_VAR_JOB = "JBPM4_VAR_JOB";
|
|
private final static String JBPM4_VAR_JOB = "JBPM4_VAR_JOB";
|
|
|
|
+ private final static String JBPM4_VAR_ORG = "JBPM4_VAR_ORG";
|
|
private final static Set<String> JBPM4_VAR_NAMES = new HashSet<String>();
|
|
private final static Set<String> JBPM4_VAR_NAMES = new HashSet<String>();
|
|
static {
|
|
static {
|
|
JBPM4_VAR_NAMES.add(JBPM4_LAUNCH_ORID);
|
|
JBPM4_VAR_NAMES.add(JBPM4_LAUNCH_ORID);
|
|
@@ -133,6 +114,7 @@ public class ProcessServiceImpl implements ProcessService {
|
|
JBPM4_VAR_NAMES.add(JBPM4_LAUNCH_DEPARTNAME);
|
|
JBPM4_VAR_NAMES.add(JBPM4_LAUNCH_DEPARTNAME);
|
|
JBPM4_VAR_NAMES.add(JBPM4_VAR_DEPARTNAME);
|
|
JBPM4_VAR_NAMES.add(JBPM4_VAR_DEPARTNAME);
|
|
JBPM4_VAR_NAMES.add(JBPM4_VAR_JOB);
|
|
JBPM4_VAR_NAMES.add(JBPM4_VAR_JOB);
|
|
|
|
+ JBPM4_VAR_NAMES.add(JBPM4_VAR_ORG);
|
|
}
|
|
}
|
|
private static final ExecutorService exepool = Executors.newFixedThreadPool(10);
|
|
private static final ExecutorService exepool = Executors.newFixedThreadPool(10);
|
|
|
|
|
|
@@ -270,6 +252,9 @@ public class ProcessServiceImpl implements ProcessService {
|
|
if(data!=null && data.get(JBPM4_VAR_JOB)!=null) {
|
|
if(data!=null && data.get(JBPM4_VAR_JOB)!=null) {
|
|
result.put(JBPM4_VAR_JOB, data.get(JBPM4_VAR_JOB));
|
|
result.put(JBPM4_VAR_JOB, data.get(JBPM4_VAR_JOB));
|
|
}
|
|
}
|
|
|
|
+ if(data!=null && data.get(JBPM4_VAR_ORG)!=null) {
|
|
|
|
+ result.put(JBPM4_VAR_ORG, data.get(JBPM4_VAR_ORG));
|
|
|
|
+ }
|
|
result.put("processDefId", processDefId);
|
|
result.put("processDefId", processDefId);
|
|
data = data != null ? data : new HashMap<String, Object>();
|
|
data = data != null ? data : new HashMap<String, Object>();
|
|
data.put("launcherId", launcherId);
|
|
data.put("launcherId", launcherId);
|
|
@@ -1497,6 +1482,7 @@ public class ProcessServiceImpl implements ProcessService {
|
|
String processDefId = String.valueOf(processInfo.get("processDefId"));
|
|
String processDefId = String.valueOf(processInfo.get("processDefId"));
|
|
Object keyValue = processInfo.get("id");
|
|
Object keyValue = processInfo.get("id");
|
|
Object VarJob = processInfo.get(JBPM4_VAR_JOB);
|
|
Object VarJob = processInfo.get(JBPM4_VAR_JOB);
|
|
|
|
+ Object VarOrg = processInfo.get(JBPM4_VAR_ORG);
|
|
if(VarJob instanceof String) {
|
|
if(VarJob instanceof String) {
|
|
BaseUtil.showError("请检查流程设置的分支条件字段(JBPM4_VAR_JOB)对应的分支条件字段!");
|
|
BaseUtil.showError("请检查流程设置的分支条件字段(JBPM4_VAR_JOB)对应的分支条件字段!");
|
|
}
|
|
}
|
|
@@ -1513,7 +1499,7 @@ public class ProcessServiceImpl implements ProcessService {
|
|
for (int i = 0; i < tasks.size(); i++) {
|
|
for (int i = 0; i < tasks.size(); i++) {
|
|
Task t = tasks.get(i);
|
|
Task t = tasks.get(i);
|
|
HRJob realJob = null;
|
|
HRJob realJob = null;
|
|
- List<HRJob> otherJob = new ArrayList<HRJob>();
|
|
|
|
|
|
+ HROrg realOrg = null;
|
|
// 并行节点可能 task已经产生
|
|
// 并行节点可能 task已经产生
|
|
Collection<String> taskNames = new HashSet<String>();
|
|
Collection<String> taskNames = new HashSet<String>();
|
|
String Assignee = t.getAssignee();
|
|
String Assignee = t.getAssignee();
|
|
@@ -1549,22 +1535,30 @@ public class ProcessServiceImpl implements ProcessService {
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
if (Assignee != null) {
|
|
if (Assignee != null) {
|
|
- // 分析分配人
|
|
|
|
- // if("first".equals(type))
|
|
|
|
- // taskNames = getRealPerson(processInstanceId, Assignee,
|
|
|
|
- // taskNames,nodepersonKey,lastJobCode, employee);
|
|
|
|
Integer joId = baseDao.getFieldValue("employee", "EM_DEFAULTHSId", "em_id=" + employee.getEm_id(), Integer.class);
|
|
Integer joId = baseDao.getFieldValue("employee", "EM_DEFAULTHSId", "em_id=" + employee.getEm_id(), Integer.class);
|
|
if (Assignee.startsWith("$")) {
|
|
if (Assignee.startsWith("$")) {
|
|
taskNames = (Collection<String>) executionService.getVariable(processInstanceId, Assignee.substring(1));
|
|
taskNames = (Collection<String>) executionService.getVariable(processInstanceId, Assignee.substring(1));
|
|
} else if (Assignee.equals("组织负责领导")) {
|
|
} else if (Assignee.equals("组织负责领导")) {
|
|
|
|
+ if(VarOrg!=null) {
|
|
|
|
+ realOrg = hrOrgStrDao.getParentHrOrgById(process !=null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
|
|
+ .getJp_realjobid()) : Integer.parseInt(VarOrg.toString()));
|
|
|
|
+ }else {
|
|
|
|
+ realOrg = hrOrgStrDao.getParentHrOrgById(process != null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
|
|
+ .getJp_realjobid()) : employee.getEm_defaultorid());
|
|
|
|
+ }
|
|
Object data = baseDao.getFieldDataByCondition("hrorg ", "or_headmancode", " or_id=" + employee.getEm_defaultorid());
|
|
Object data = baseDao.getFieldDataByCondition("hrorg ", "or_headmancode", " or_id=" + employee.getEm_defaultorid());
|
|
- if (data != null)
|
|
|
|
|
|
+ if (data != null){
|
|
taskNames.add(data.toString());
|
|
taskNames.add(data.toString());
|
|
|
|
+ }
|
|
|
|
|
|
} else if (Assignee.equals("上一步父组织负责领导")) {
|
|
} else if (Assignee.equals("上一步父组织负责领导")) {
|
|
- // Object
|
|
|
|
- // data=baseDao.getFieldDataByCondition("hrorg","or_headmancode",
|
|
|
|
- // "or_id=(select or_subof from jprocess left join employee on jp_nodedealman=em_code left join hrorg on em_defaultorid=or_id where jp_id =(select jp_id from (select jp_id from jprocess where jp_status='已审批' and jp_processinstanceid='"+processInstanceId+"' order by rowid desc) where rownum=1))");
|
|
|
|
|
|
+ if(VarOrg!=null) {
|
|
|
|
+ realOrg = hrOrgStrDao.getParentHrOrgById(process !=null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
|
|
+ .getJp_realjobid()) : Integer.parseInt(VarOrg.toString()));
|
|
|
|
+ }else {
|
|
|
|
+ realOrg = hrOrgStrDao.getParentHrOrgById(process != null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
|
|
+ .getJp_realjobid()) : employee.getEm_defaultorid());
|
|
|
|
+ }
|
|
Object data = baseDao.getFieldDataByCondition("hrorg", "or_headmancode",
|
|
Object data = baseDao.getFieldDataByCondition("hrorg", "or_headmancode",
|
|
" or_id=(select or_subof from hrorg where or_id='" + employee.getEm_defaultorid() + "')");
|
|
" or_id=(select or_subof from hrorg where or_id='" + employee.getEm_defaultorid() + "')");
|
|
if (data != null)
|
|
if (data != null)
|
|
@@ -1600,15 +1594,6 @@ public class ProcessServiceImpl implements ProcessService {
|
|
realJob = hrJobDao.getParentJob(process != null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
realJob = hrJobDao.getParentJob(process != null && process.getJp_realjobid() != null ? Integer.parseInt(process
|
|
.getJp_realjobid()) : joId);
|
|
.getJp_realjobid()) : joId);
|
|
}
|
|
}
|
|
-// otherJob = hrJobDao.getJobsByEmpsJobs(employee.getEm_id());
|
|
|
|
-// List<String> jobsList = new ArrayList<String>();
|
|
|
|
-// jobsList.add(realJob.getJo_code());
|
|
|
|
-// for (HRJob hrjob : otherJob) {
|
|
|
|
-// jobsList.add(hrjob.getJo_code());
|
|
|
|
-// }
|
|
|
|
-// String[] values = new String[jobsList.size()];
|
|
|
|
-// values = jobsList.toArray(values);
|
|
|
|
-// List<Employee> employees = employeeDao.getEmployeesByJobs(values);
|
|
|
|
List<Employee> employees = employeeDao.getEmployeesByJob(realJob.getJo_code());
|
|
List<Employee> employees = employeeDao.getEmployeesByJob(realJob.getJo_code());
|
|
System.out.println(employees.size());
|
|
System.out.println(employees.size());
|
|
for (Employee em : employees) {
|
|
for (Employee em : employees) {
|
|
@@ -1656,6 +1641,9 @@ public class ProcessServiceImpl implements ProcessService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
jobs[i] = realJob != null ? String.valueOf(realJob.getJo_id()) : null;
|
|
jobs[i] = realJob != null ? String.valueOf(realJob.getJo_id()) : null;
|
|
|
|
+ if(VarOrg !=null) {
|
|
|
|
+ jobs[i] = realOrg != null ? String.valueOf(realOrg.getOr_id()) : null;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
baseDao.execute(sqls);
|
|
baseDao.execute(sqls);
|
|
if (uTask.size() != 0)
|
|
if (uTask.size() != 0)
|