|
|
package weaver.interfaces.zhewen.cronjob;
|
|
|
|
|
|
import com.engine.kq.biz.KQGroupMemberComInfo;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import weaver.common.DateUtil;
|
|
|
import weaver.conn.RecordSet;
|
|
|
import weaver.hrm.company.DepartmentComInfo;
|
|
|
import weaver.hrm.job.JobTitlesComInfo;
|
|
|
import weaver.interfaces.schedule.BaseCronJob;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author:dxfeng
|
|
|
* @createTime: 2024/10/30
|
|
|
* @version: 1.0
|
|
|
*/
|
|
|
public class EmployeeTransferJob extends BaseCronJob {
|
|
|
@Override
|
|
|
public void execute() {
|
|
|
RecordSet rs = new RecordSet();
|
|
|
try {
|
|
|
rs.writeLog("EmployeeTransferJob---start");
|
|
|
String currentDate = DateUtil.getCurrentDate();
|
|
|
// 查询归档流程,明细表中,调用生效日期为当前日期的数据
|
|
|
rs.executeQuery("select * from uf_ygddxx where ydsxrq = ? ", currentDate);
|
|
|
while (rs.next()) {
|
|
|
RecordSet rst = new RecordSet();
|
|
|
// 调动人
|
|
|
String ddr = rs.getString("xm");
|
|
|
// 调入门店
|
|
|
String ddhbm = rs.getString("ydhbm");
|
|
|
// 调动后岗位
|
|
|
String ddhgw = rs.getString("ydhgw");
|
|
|
// 调动后岗级
|
|
|
String ddhgj = rs.getString("ydhgj");
|
|
|
// 调动生效日期
|
|
|
String ydsxrq = rs.getString("ydsxrq");
|
|
|
// 新直接上级
|
|
|
String xzjsj = rs.getString("drddc");
|
|
|
// 职务交接人
|
|
|
String zwjjr = rs.getString("zwjjr");
|
|
|
// 是否为新店店长
|
|
|
String sfxdzg = rs.getString("sfxdzg");
|
|
|
// 新考勤组
|
|
|
String xkqz = rs.getString("xkqz");
|
|
|
|
|
|
rs.writeLog("ddr==" + ddr + ",ddhbm==" + ddhbm + ",ddhgw==" + ddhgw + ",ddhgj==" + ddhgj + ",ydsxrq==" + ydsxrq + ",xzjsj==" + xzjsj + ",zwjjr==" + zwjjr + ",sfxdzg==" + sfxdzg + ",xkqz==" + xkqz);
|
|
|
// 部门
|
|
|
updateEmployeeDept(rst, ddr, ddhbm);
|
|
|
rs.writeLog("updateEmployeeDept==success");
|
|
|
// 岗位
|
|
|
updateEmployeeJobTitle(rst, ddr, ddhgw);
|
|
|
rs.writeLog("updateEmployeeJobTitle==success");
|
|
|
// 岗位等级
|
|
|
updateEmployeeJobLevel(rst, ddr, ddhgj);
|
|
|
rs.writeLog("updateEmployeeJobLevel==success");
|
|
|
// 直接上级
|
|
|
updateEmployeeManagerId(rst, ddr, xzjsj);
|
|
|
rs.writeLog("updateEmployeeManagerId==success");
|
|
|
// 所有下属的直接上级
|
|
|
updateSubUserManagerId(rst, ddr, zwjjr);
|
|
|
rs.writeLog("updateSubUserManagerId==success");
|
|
|
// 考勤组
|
|
|
updateEmployeeGroup(rst, ddr, ydsxrq, xkqz);
|
|
|
rs.writeLog("updateEmployeeGroup==success");
|
|
|
// 矩阵
|
|
|
updateMatrix(rst, ddr, zwjjr, ddhbm, sfxdzg);
|
|
|
rs.writeLog("updateMatrix==success");
|
|
|
rs.writeLog("EmployeeTransferJob----commit,ddr==" + ddr + ",ydsxrq==" + ydsxrq);
|
|
|
}
|
|
|
|
|
|
rs.writeLog("EmployeeTransferJob---finish");
|
|
|
} catch (Exception e) {
|
|
|
rs.writeLog("EmployeeTransferJob执行异常", e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新“调动人”的【部门】为:调入门店
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param ddhbm
|
|
|
*/
|
|
|
private void updateEmployeeDept(RecordSet rst, String ddr, String ddhbm) throws Exception {
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(ddhbm)) {
|
|
|
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
|
|
|
List<String> departmentList = new ArrayList<>();
|
|
|
departmentList.add(null);
|
|
|
departmentList.add(null);
|
|
|
departmentList.add(null);
|
|
|
departmentList.add(null);
|
|
|
dealDepartmentLevel(departmentComInfo, departmentList, ddhbm);
|
|
|
String dept1 = departmentList.get(0);
|
|
|
String dept2 = departmentList.get(1);
|
|
|
String dept3 = departmentList.get(2);
|
|
|
String dept4 = departmentList.get(3);
|
|
|
rst.writeLog("updateEmployeeDept####dept1==" + dept1 + ",dept2==" + dept2 + ",dept3==" + dept3 + ",dept4==" + dept4);
|
|
|
rst.executeUpdate("update hrmresource set departmentid = ? where id = ?", ddhbm, ddr);
|
|
|
|
|
|
rst.executeUpdate("update cus_fielddata set field40 = ? ,field41 = ? , field42 = ? ,field43 = ? where scope = 'HrmCustomFieldByInfoType' and scopeid = -1 and id = ? ", dept1, dept2, dept3, dept4, ddr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void dealDepartmentLevel(DepartmentComInfo departmentComInfo, List<String> departmentList, String departmentId) {
|
|
|
departmentList.add(0, departmentId);
|
|
|
String departmentsupdepid = departmentComInfo.getDepartmentsupdepid(departmentId);
|
|
|
if (StringUtils.isNotBlank(departmentsupdepid) && !"0".equals(departmentsupdepid)) {
|
|
|
dealDepartmentLevel(departmentComInfo, departmentList, departmentsupdepid);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新“调动人”的【岗位】为:调动后岗位;
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param ddhgw
|
|
|
*/
|
|
|
private void updateEmployeeJobTitle(RecordSet rst, String ddr, String ddhgw) throws Exception {
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(ddhgw)) {
|
|
|
rst.executeUpdate("update hrmresource set jobtitle = ? where id = ?", ddhgw, ddr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新“调动人”的【岗位等级】为:调动后岗级;
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param ddhgj
|
|
|
*/
|
|
|
private void updateEmployeeJobLevel(RecordSet rst, String ddr, String ddhgj) throws Exception {
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(ddhgj)) {
|
|
|
rst.executeUpdate("update cus_fielddata set field1 = ? where scope ='HrmCustomFieldByInfoType' and scopeid ='-1' and id = ?", ddhgj, ddr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新“调动人”的【直接上级】为:新直接上级;
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param xzjsj
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private void updateEmployeeManagerId(RecordSet rst, String ddr, String xzjsj) throws Exception {
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(xzjsj)) {
|
|
|
rst.executeUpdate("update hrmresource set managerid = ? where id = ?", xzjsj, ddr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新“调动人”的所有下属的直接上级为:职务交接人,即:代替“调动人”当领导的
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param zwjjr
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private void updateSubUserManagerId(RecordSet rst, String ddr, String zwjjr) throws Exception {
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(zwjjr)) {
|
|
|
rst.executeUpdate("update hrmresource set managerid = ? where managerid = ?", zwjjr, ddr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新考勤组
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param ddsxrq
|
|
|
* @param xkqz
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private void updateEmployeeGroup(RecordSet rst, String ddr, String ddsxrq, String xkqz) throws Exception {
|
|
|
rst.executeQuery("select a.jobtitle ,b.field41 from HrmResource a, cus_fielddata b where a.id=b.id and scopeid=-1 and scope='HrmCustomFieldByInfoType' and a.id = ?", ddr);
|
|
|
rst.writeLog("updateEmployeeGroup---start");
|
|
|
rst.writeLog("xkqz11==" + xkqz);
|
|
|
if (rst.next()) {
|
|
|
String departmentId = rst.getString("field41");
|
|
|
String jobtitle = rst.getString("jobtitle");
|
|
|
String jobactivityid = new JobTitlesComInfo().getJobactivityid(jobtitle);
|
|
|
rst.writeLog("departmentId==" + departmentId);
|
|
|
rst.writeLog("jobtitle==" + jobtitle);
|
|
|
rst.writeLog("jobactivityid==" + jobactivityid);
|
|
|
// 【职务】是督导、经理、总监的
|
|
|
if ("233".equals(jobactivityid) || "236".equals(jobactivityid) || "237".equals(jobactivityid)) {
|
|
|
// 二级部门是:四川一区把“调动人”加入【四川一区】考勤组;
|
|
|
if ("264".equals(departmentId)) {
|
|
|
xkqz = "18";
|
|
|
}
|
|
|
|
|
|
// 二级部门是:四川二区(部门id=258)的,把“调动人”加入【四川二区】考勤组
|
|
|
if ("258".equals(departmentId)) {
|
|
|
xkqz = "19";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
rst.writeLog("xkqz222==" + xkqz);
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(xkqz)) {
|
|
|
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
|
|
|
String kqGroupId = kqGroupMemberComInfo.getKQGroupId(ddr);
|
|
|
rst.writeLog("kqGroupId===" + kqGroupId);
|
|
|
if (!kqGroupId.equals(xkqz)) {
|
|
|
// 更新“调动人”的【考勤组】为:新考勤组;
|
|
|
// 更新“调动人”的新考勤组中的“生效日期”=调动生效日期;
|
|
|
// 更新“调动人”的原考勤组中的“失效日期”=调动生效日期 - 1天;
|
|
|
String sql = "insert into kq_groupmember(groupid,typevalue,type,seclevel,seclevelto,validatefrom,validateto) values(?,?,1,0,100,?,'2999-12-31')";
|
|
|
rst.executeUpdate(sql, xkqz, ddr, ddsxrq);
|
|
|
// 如果生效日期小于失效日期,将生效日期也改为失效日期
|
|
|
rst.executeQuery("select * from kq_groupmember where type = 1 and ISNULL(isDelete,0) != 1 and typevalue = ? and groupid = ?", ddr, kqGroupId);
|
|
|
//if (rst.next()) {
|
|
|
// String validatefrom = rst.getString("validatefrom");
|
|
|
//}
|
|
|
|
|
|
sql = "update kq_groupmember set validateto = ? where type = 1 and ISNULL(isDelete,0) != 1 and typevalue = ? and groupid = ?";
|
|
|
String yesterday = DateUtil.addDate(ddsxrq, -1);
|
|
|
rst.writeLog("yesterday===" + yesterday);
|
|
|
rst.executeUpdate(sql, yesterday, ddr, kqGroupId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
rst.writeLog("updateEmployeeGroup---finish");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* >>如果“调动人”是“调出部门”的部门矩阵中的“店长/直接主管”,则更新“调出门店”的部门矩阵中的“店长/直接主管”为:职务交接人;即,更新部门矩阵中我是店长的数据为:职务交接人,别人顶替我;
|
|
|
* >>如果“调动人”的“是否为新店店长==是”,则更新“调入门店”的部门矩阵中的“店长/直接主管”为:调动人;即,更新我为新门店的店长;
|
|
|
*
|
|
|
* @param rst
|
|
|
* @param ddr
|
|
|
* @param zwjjr
|
|
|
* @param ddhbm
|
|
|
* @param sfxdzg
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private void updateMatrix(RecordSet rst, String ddr, String zwjjr, String ddhbm, String sfxdzg) throws Exception {
|
|
|
// 更新“调出门店”的部门矩阵中的“店长/直接主管”为:职务交接人
|
|
|
if (StringUtils.isNotBlank(ddr) && StringUtils.isNotBlank(zwjjr)) {
|
|
|
rst.executeUpdate("update HrmDepartmentDefined set bmfzr = ? where CAST(bmfzr AS varchar) =?", zwjjr, ddr);
|
|
|
rst.executeUpdate("update Matrixtable_2 set bmfzr = ? where bmfzr =?", zwjjr, ddr);
|
|
|
rst.executeUpdate("update uf_mdglb set dc = ? where CAST(dc AS varchar) = ?", zwjjr, ddr);
|
|
|
rst.writeLog("updateMatrix----11111----finish");
|
|
|
}
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(ddr) && "0".equals(sfxdzg)) {
|
|
|
// 更新“调入门店”的部门矩阵中的“店长/直接主管”为:调动人
|
|
|
rst.executeUpdate("update HrmDepartmentDefined set bmfzr = ? where deptid =?", ddr, ddhbm);
|
|
|
rst.executeUpdate("update Matrixtable_2 set bmfzr = ? where id =?", ddr, ddhbm);
|
|
|
rst.executeUpdate("update uf_mdglb set dc = ? where md = ?", ddr, ddhbm);
|
|
|
rst.writeLog("updateMatrix----22222----finish");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|