diff --git a/src/UserTransTest.jsp b/src/UserTransTest.jsp new file mode 100644 index 0000000..363ae78 --- /dev/null +++ b/src/UserTransTest.jsp @@ -0,0 +1,258 @@ +<%@ page import="weaver.conn.RecordSet" %> +<%@ page import="weaver.common.DateUtil" %> +<%@ page import="weaver.conn.RecordSetTrans" %> +<%@ page import="org.apache.commons.lang3.StringUtils" %> +<%@ page import="weaver.hrm.job.JobTitlesComInfo" %> +<%@ page import="com.engine.kq.biz.KQGroupMemberComInfo" %> +<%@ page import="weaver.hrm.company.DepartmentComInfo" %> +<%@ page import="java.util.List" %> +<%@ page import="java.util.ArrayList" %> +<%@ page import="weaver.general.Util" %> +<% + + RecordSet rs = new RecordSet(); + try { + String id = Util.null2String(request.getParameter("id")); + String currentDate = Util.null2String(request.getParameter("date")); + if (StringUtils.isBlank(id) || StringUtils.isBlank(currentDate)) { + throw new RuntimeException("id or date is null"); + } + rs.writeLog("EmployeeTransferJob---start"); + //String currentDate = DateUtil.getCurrentDate(); + // 查询归档流程,明细表中,调用生效日期为当前日期的数据 + rs.executeQuery("select * from uf_ygddxx where ydsxrq = ? and id = ?", currentDate, id); + 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"); + out.print("success"+DateUtil.getDateTime()); + } catch (Exception e) { + rs.writeLog("EmployeeTransferJob---error", e); + out.print(e.getMessage()); + } +%> + +<%! + + /** + * 更新“调动人”的【部门】为:调入门店 + * + * @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 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 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); + + + 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"); + } + } +%> \ No newline at end of file diff --git a/src/weaver/interfaces/zhewen/cronjob/EmployeeTransferJob.java b/src/weaver/interfaces/zhewen/cronjob/EmployeeTransferJob.java new file mode 100644 index 0000000..5c12e6f --- /dev/null +++ b/src/weaver/interfaces/zhewen/cronjob/EmployeeTransferJob.java @@ -0,0 +1,259 @@ +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 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 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); + + + 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"); + } + } + +}