2 Commits bbdffa1701 ... 6bc9a9f611

Autor SHA1 Mensaje Fecha
  zhouy 6bc9a9f611 Merge remote-tracking branch 'origin/1.0.0_yitoa_prod' into 1.0.0_yitoa_prod hace 1 mes
  zhouy 6648291b60 增加按组织层级审批逻辑 hace 1 mes

+ 2 - 0
src/com/uas/erp/dao/common/HrOrgStrDao.java

@@ -14,4 +14,6 @@ public interface HrOrgStrDao {
 	
 	HROrg getHrOrgByEmId(int em_id);
 
+	HROrg getParentHrOrgById(int orgid);
+
 }

+ 11 - 0
src/com/uas/erp/dao/common/impl/HrOrgStrDaoImpl.java

@@ -68,4 +68,15 @@ public class HrOrgStrDaoImpl extends BaseDao implements HrOrgStrDao {
 				employee.getEm_defaultorid());
 	}
 
+	@Override
+	public HROrg getParentHrOrgById(int orgid) {
+		try {
+			HROrg hrOrg = getJdbcTemplate().queryForObject("SELECT * FROM HRORG WHERE OR_ID = (SELECT OR_SUBOF FROM  HRORG WHERE OR_ID =? )", new BeanPropertyRowMapper<HROrg>(HROrg.class), orgid);
+			return hrOrg;
+		} catch (DataAccessException e) {
+			e.printStackTrace();
+			return null;
+		}
+	}
+
 }

+ 31 - 43
src/com/uas/erp/service/common/impl/ProcessServiceImpl.java

@@ -24,6 +24,8 @@ import java.util.concurrent.Executors;
 import com.uas.erp.core.*;
 import com.uas.erp.core.bind.Operation;
 import com.uas.erp.dao.SqlMap;
+import com.uas.erp.dao.common.*;
+import com.uas.erp.model.*;
 import com.uas.open.OperationEvent;
 import org.aspectj.lang.ProceedingJoinPoint;
 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.SpObserver;
 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 net.sf.json.JSONObject;
@@ -121,11 +98,15 @@ public class ProcessServiceImpl implements ProcessService {
 	private HandlerService handlerService;
 	@Autowired
 	private HrJobDao hrJobDao;
+	@Autowired
+	private HrOrgStrDao hrOrgStrDao;
+
 	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_DEPARTNAME = "JBPM4_LAUNCH_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_ORG = "JBPM4_VAR_ORG";
 	private final static Set<String> JBPM4_VAR_NAMES = new HashSet<String>();
 	static {
 		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_VAR_DEPARTNAME);
 		JBPM4_VAR_NAMES.add(JBPM4_VAR_JOB);
+		JBPM4_VAR_NAMES.add(JBPM4_VAR_ORG);
 	}
 	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) {
 				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);
 			data = data != null ? data : new HashMap<String, Object>();
 			data.put("launcherId", launcherId);
@@ -1497,6 +1482,7 @@ public class ProcessServiceImpl implements ProcessService {
 		String processDefId = String.valueOf(processInfo.get("processDefId"));
 		Object keyValue = processInfo.get("id");
 		Object VarJob = processInfo.get(JBPM4_VAR_JOB);
+		Object VarOrg = processInfo.get(JBPM4_VAR_ORG);
 		if(VarJob instanceof String) {
 			BaseUtil.showError("请检查流程设置的分支条件字段(JBPM4_VAR_JOB)对应的分支条件字段!");
 		}
@@ -1513,7 +1499,7 @@ public class ProcessServiceImpl implements ProcessService {
 		for (int i = 0; i < tasks.size(); i++) {
 			Task t = tasks.get(i);
 			HRJob realJob = null;
-			List<HRJob> otherJob = new ArrayList<HRJob>();
+			HROrg realOrg = null;
 			// 并行节点可能 task已经产生
 			Collection<String> taskNames = new HashSet<String>();
 			String Assignee = t.getAssignee();
@@ -1549,22 +1535,30 @@ public class ProcessServiceImpl implements ProcessService {
 				}
 			} else {
 				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);
 					if (Assignee.startsWith("$")) {
 						taskNames = (Collection<String>) executionService.getVariable(processInstanceId, Assignee.substring(1));
 					} 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());
-						if (data != null)
+						if (data != null){
 							taskNames.add(data.toString());
+						}
 
 					} 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",
 								" or_id=(select or_subof  from hrorg where or_id='" + employee.getEm_defaultorid() + "')");
 						if (data != null)
@@ -1600,15 +1594,6 @@ public class ProcessServiceImpl implements ProcessService {
 							realJob = hrJobDao.getParentJob(process != null && process.getJp_realjobid() != null ? Integer.parseInt(process
 									.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());
 						System.out.println(employees.size());
 						for (Employee em : employees) {
@@ -1656,6 +1641,9 @@ public class ProcessServiceImpl implements ProcessService {
 				}
 			}
 			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);
 		if (uTask.size() != 0)