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