|
|
|
@ -1,12 +1,20 @@
|
|
|
|
|
package com.engine.organization.thread;
|
|
|
|
|
|
|
|
|
|
import com.engine.organization.entity.commom.RecordInfo;
|
|
|
|
|
import com.engine.organization.entity.company.po.CompPO;
|
|
|
|
|
import com.engine.organization.entity.department.po.DepartmentPO;
|
|
|
|
|
import com.engine.organization.entity.job.po.JobPO;
|
|
|
|
|
import com.engine.organization.entity.staff.po.StaffPO;
|
|
|
|
|
import com.engine.organization.entity.staff.po.StaffPlanPO;
|
|
|
|
|
import com.engine.organization.mapper.staff.StaffMapper;
|
|
|
|
|
import com.engine.organization.mapper.comp.CompMapper;
|
|
|
|
|
import com.engine.organization.mapper.department.DepartmentMapper;
|
|
|
|
|
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
|
|
|
|
|
import com.engine.organization.mapper.job.JobMapper;
|
|
|
|
|
import com.engine.organization.mapper.staff.StaffPlanMapper;
|
|
|
|
|
import com.engine.organization.mapper.trigger.StaffTriggerMapper;
|
|
|
|
|
import com.engine.organization.util.OrganizationDateUtil;
|
|
|
|
|
import com.engine.organization.util.db.MapperProxyFactory;
|
|
|
|
|
import com.engine.organization.util.relation.EcHrmRelationUtil;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
|
|
|
|
@ -18,10 +26,6 @@ import weaver.general.Util;
|
|
|
|
|
public class StaffTriggerRunnable implements Runnable {
|
|
|
|
|
StaffPO staffPO;
|
|
|
|
|
|
|
|
|
|
private StaffMapper getStaffMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(StaffMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private StaffPlanMapper getStaffPlanMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(StaffPlanMapper.class);
|
|
|
|
|
}
|
|
|
|
@ -30,6 +34,18 @@ public class StaffTriggerRunnable implements Runnable {
|
|
|
|
|
return MapperProxyFactory.getProxy(StaffTriggerMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CompMapper getCompMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(CompMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private DepartmentMapper getDepartmentMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(DepartmentMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JobMapper getJobMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(JobMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private final String currentDate;
|
|
|
|
|
|
|
|
|
|
public StaffTriggerRunnable(StaffPO staffPO) {
|
|
|
|
@ -43,37 +59,87 @@ public class StaffTriggerRunnable implements Runnable {
|
|
|
|
|
StaffPlanPO staffPlanByID = getStaffPlanMapper().getStaffPlanByID(staffPO.getPlanId());
|
|
|
|
|
if (null != staffPlanByID && StringUtils.isNotBlank(staffPlanByID.getControlDimension())) {
|
|
|
|
|
String fType = staffPlanByID.getControlDimension();
|
|
|
|
|
Integer fPlan = 0;
|
|
|
|
|
int fOnJob = 0;
|
|
|
|
|
String fObjId = "";
|
|
|
|
|
switch (fType) {
|
|
|
|
|
case "1":
|
|
|
|
|
// 更新分部编制
|
|
|
|
|
fObjId = Util.null2String(staffPO.getCompId());
|
|
|
|
|
fOnJob = getStaffTriggerMapper().countCompanyUsers(staffPO.getEcCompany());
|
|
|
|
|
fPlan = getStaffTriggerMapper().countCompanyStaffNum(currentDate, staffPO.getCompId());
|
|
|
|
|
refreshCompanyStaff(staffPO.getCompId(), 0);
|
|
|
|
|
break;
|
|
|
|
|
case "2":
|
|
|
|
|
// 更新部门编制
|
|
|
|
|
fObjId = Util.null2String(staffPO.getDeptId());
|
|
|
|
|
fOnJob = getStaffTriggerMapper().countDepartmentUsers(staffPO.getEcDepartment());
|
|
|
|
|
fPlan = getStaffTriggerMapper().countCompanyStaffNum(currentDate, staffPO.getCompId());
|
|
|
|
|
fPlan += getStaffTriggerMapper().countDepartmentStaffNum(currentDate, staffPO.getDeptId());
|
|
|
|
|
refreshCompanyStaff(staffPO.getCompId(), 0);
|
|
|
|
|
refreshDepartmentStaff(staffPO.getDeptId(), 0);
|
|
|
|
|
break;
|
|
|
|
|
case "3":
|
|
|
|
|
// 更新岗位编制
|
|
|
|
|
fObjId = Util.null2String(staffPO.getJobId());
|
|
|
|
|
fOnJob = 10;
|
|
|
|
|
fPlan = getStaffTriggerMapper().countCompanyStaffNum(currentDate, staffPO.getCompId());
|
|
|
|
|
fPlan += getStaffTriggerMapper().countDepartmentStaffNum(currentDate, staffPO.getDeptId());
|
|
|
|
|
fPlan += getStaffTriggerMapper().countJobStaffNum(currentDate, staffPO.getJobId());
|
|
|
|
|
refreshCompanyStaff(staffPO.getCompId(), 0);
|
|
|
|
|
refreshDepartmentStaff(staffPO.getDeptId(), 0);
|
|
|
|
|
refreshJobStaff(staffPO.getJobId(), 0);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// 更新对应的编制数
|
|
|
|
|
getStaffTriggerMapper().updateOrgStaffs(currentDate, fType, fObjId, fPlan < 0 ? 0 : fPlan, fOnJob);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshCompanyStaff(Long companyId, Integer fPlan) {
|
|
|
|
|
if (null == companyId) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
CompPO compPO = getCompMapper().listById(companyId);
|
|
|
|
|
if (null != compPO) {
|
|
|
|
|
String ecCompanyId = EcHrmRelationUtil.getEcCompanyId(Util.null2String(companyId));
|
|
|
|
|
String fObjId = Util.null2String(companyId);
|
|
|
|
|
int fOnJob = getStaffTriggerMapper().countCompanyUsers(ecCompanyId);
|
|
|
|
|
Integer staffSum = getStaffTriggerMapper().countCompanyStaffNum(currentDate, companyId);
|
|
|
|
|
fPlan += null == staffSum ? 0 : staffSum;
|
|
|
|
|
getStaffTriggerMapper().updateOrgStaffs(currentDate, "1", fObjId, fPlan < 0 ? 0 : fPlan, fOnJob);
|
|
|
|
|
if (null != compPO.getParentCompany() && 0 != compPO.getParentCompany()) {
|
|
|
|
|
refreshCompanyStaff(compPO.getParentCompany(), fPlan);
|
|
|
|
|
} else {
|
|
|
|
|
refreshGroupStaff(fPlan);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshDepartmentStaff(Long departmentId, Integer fPlan) {
|
|
|
|
|
if (null == departmentId) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
DepartmentPO deptById = getDepartmentMapper().getDeptById(departmentId);
|
|
|
|
|
if (null != deptById) {
|
|
|
|
|
String ecDepartmentId = EcHrmRelationUtil.getEcDepartmentId(Util.null2String(departmentId));
|
|
|
|
|
String fObjId = Util.null2String(departmentId);
|
|
|
|
|
int fOnJob = getStaffTriggerMapper().countDepartmentUsers(ecDepartmentId);
|
|
|
|
|
Integer staffSum = getStaffTriggerMapper().countDepartmentStaffNum(currentDate, departmentId);
|
|
|
|
|
fPlan += null == staffSum ? 0 : staffSum;
|
|
|
|
|
getStaffTriggerMapper().updateOrgStaffs(currentDate, "2", fObjId, fPlan < 0 ? 0 : fPlan, fOnJob);
|
|
|
|
|
if (null != deptById.getParentDept() && 0 != deptById.getParentDept()) {
|
|
|
|
|
refreshDepartmentStaff(deptById.getParentDept(), fPlan);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshJobStaff(Long jobId, Integer fPlan) {
|
|
|
|
|
if (null == jobId) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
JobPO jobById = getJobMapper().getJobById(jobId);
|
|
|
|
|
if (null != jobById) {
|
|
|
|
|
String fObjId = Util.null2String(jobId);
|
|
|
|
|
RecordInfo hrmJobTitleByName = MapperProxyFactory.getProxy(SystemDataMapper.class).getHrmJobTitleByName(jobById.getJobName());
|
|
|
|
|
int fOnJob = getStaffTriggerMapper().countJobUsers(hrmJobTitleByName.getId());
|
|
|
|
|
Integer staffSum = getStaffTriggerMapper().countJobStaffNum(currentDate, jobId);
|
|
|
|
|
fPlan += null == staffSum ? 0 : staffSum;
|
|
|
|
|
getStaffTriggerMapper().updateOrgStaffs(currentDate, "3", fObjId, fPlan < 0 ? 0 : fPlan, fOnJob);
|
|
|
|
|
//if (null != jobById.getParentJob() && 0 != jobById.getParentJob()) {
|
|
|
|
|
// refreshJobStaff(jobById.getParentJob(), fPlan);
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshGroupStaff(Integer fPlan) {
|
|
|
|
|
Integer fOnJob = getStaffTriggerMapper().countAllusers();
|
|
|
|
|
getStaffTriggerMapper().updateOrgStaffs(currentDate, "0", "0", fPlan < 0 ? 0 : fPlan, fOnJob);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|