You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-develop/src/weaver/interfaces/zhewen/cronjob/EmployeeTransferJob.java

262 lines
12 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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");
}
}
}