package weaver.interfaces.shuzhi.cronjob;
import com.time.util.DateUtil;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.schedule.BaseCronJob;
import weaver.interfaces.shuzhi.util.WorkflowUtil;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 员工关系提醒流程-计划任务
*
* 从转正记录(uf_zzjl)、员工调动记录(uf_ddjl)、离职办理查询表单(uf_lzblcxbd),
* 1、生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
* 2、生效日期等于当前日期,根据记录数据更新到hrmresource
*
*
* uf_zzjl:生效日期=zzrq(转正日期)、归档日期=gdrq(归档日期)
* 1、生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
* 2、生效日期等于当前日期,根据记录数据更新数据
*
* hrmresource表:根据人员id更新status='1'
* uf_rzgljmb表:(员工状态:ygzt,转正日期:zzrq,员工(人力资源):ygrlzy)
* update uf_rzgljmb set ygzt = '1' , zzrq = '" + date + "' where ygrlzy = '" + userid + "'
*
*
* uf_ddjl:生效日期=ddrq(调动日期)、归档日期=gdrq(归档日期)
* 1、生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
* 2、生效日期等于当前日期,根据记录数据更新数据
*
* hrmresource表:根据人员id更新jobtitle(岗位)、departmentid(部门)、subcompanyid1(分部)
* uf_rzgljmb表:(岗位名称:gwmc,职级:xl,部门:bm,公司分部:gsfb,员工(人力资源):ygrlzy)
* update uf_rzgljmb set gwmc = '"+xgw+"' , xl = '" + zj + "' ,bm = '"+xbm+"' ,gsfb = '"+xfb+"' where ygrlzy = '" + userid + "'
*
*
* uf_lzblcxbd:生效日期=jhlzrq(uf_lzblcxbd_dt1 计划离职日期)、归档日期=gdrq(归档日期)
* 1、生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
* 2、生效日期等于当前日期,根据记录数据更新数据
*
* hrmresource表:根据人员id更新status='5'
* uf_rzgljmb表:(员工状态:ygzt,离职日期:lzrq,员工(人力资源):ygrlzy)
* update uf_rzgljmb set ygzt = '3' , lzrq = '" + date + "' where ygrlzy = '" + userid + "'
*
* @author wangj
* @version 1.00版本
* @Date 2023/7/3
*/
public class RelationshipReminderJob extends BaseCronJob {
@Override
public void execute() {
BaseBean bb = new BaseBean();
String workflowid = bb.getPropValue("relationship", "workflowid");
String id = "";
String lastname = "";
String userid = "";
String sxrq = "";
String gdrq = "";
String date = DateUtil.getCurrentTime("yyyy-MM-dd");
RecordSet rs = new RecordSet();
//转正记录(uf_zzjl) uf_zzjl:生效日期=zzrq(转正日期)、归档日期=gdrq(归档日期)
String sql = "select a.id,b.lastname,a.zzry,a.zzrq,a.gdrq from uf_zzjl a left join hrmresource b on a.zzry = b.id where a.txlcid is null";
rs.execute(sql);
while (rs.next()) {
String zt = "";
id = Util.null2String(rs.getString("id"));
lastname = Util.null2String(rs.getString("lastname"));
sxrq = Util.null2String(rs.getString("zzrq"));
gdrq = Util.null2String(rs.getString("gdrq"));
userid = Util.null2String(rs.getString("zzry"));
if ("".equals(id) || "".equals(sxrq) || "".equals(userid)) {
continue;
}
if (sxrq.equals(date)) {
//2、生效日期等于当前日期,根据记录数据更新到hrmresource
zt = updateZZHrmStatus(userid, "1", date);
}
boolean flag = compareDate(sxrq, date);
if ("".equals(gdrq) && flag) {
//生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
String requestName = "员工关系更新提醒-" + lastname + "-" + date;
Map mainMap = new HashMap<>();
mainMap.put("ygxm", userid);
mainMap.put("gxlx", "0");
mainMap.put("sxrq", sxrq);
// mainMap.put("gdrq",gdrq);
zt = new WorkflowUtil().WorkflowCreateByMainTableMap(userid, workflowid, requestName, "0", mainMap);
if (Util.getIntValue(zt) < 0) {
zt = "";
}
}
}
String xbm = "";
String xgw = "";
String zj = "";
String xfb = "";
//员工调动记录(uf_ddjl) uf_ddjl:生效日期=ddrq(调动日期)、归档日期=gdrq(归档日期)
sql = " select b.id,b.nzzry,b.xbm,d.subcompanyid1,b.xgw,c.lastname,b.zj,a.ddrq,a.gdrq from uf_ddjl a left join uf_ddjl_dt1 b on a.id = b.mainid left join hrmresource c on c.id = b.nzzry left join hrmdepartment d on d.id = b.xbm where b.txlcid is null";
rs.execute(sql);
while (rs.next()) {
String zt = "";
id = Util.null2String(rs.getString("id"));
lastname = Util.null2String(rs.getString("lastname"));
sxrq = Util.null2String(rs.getString("ddrq"));
gdrq = Util.null2String(rs.getString("gdrq"));
userid = Util.null2String(rs.getString("nzzry"));
xbm = Util.null2String(rs.getString("xbm"));
xgw = Util.null2String(rs.getString("xgw"));
zj = Util.null2String(rs.getString("zj"));
xfb = Util.null2String(rs.getString("subcompanyid1"));
if ("".equals(id) || "".equals(sxrq) || "".equals(userid)) {
continue;
}
if (sxrq.equals(date)) {
//2、生效日期等于当前日期,根据记录数据更新到hrmresource
//更新hrmresource表(岗位、部门)、入职管理建模表uf_rzgljmb(岗位、职级名称、部门、公司名称-分部)
zt = updateDDHrmStatus(userid, date, xgw, xbm, xfb, zj);
}
boolean flag = compareDate(sxrq, date);
if ("".equals(gdrq) && flag) {
//生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
String requestName = "员工关系更新提醒-" + lastname + "-" + date;
Map mainMap = new HashMap<>();
mainMap.put("ygxm", userid);
mainMap.put("gxlx", "1");
mainMap.put("sxrq", sxrq);
zt = new WorkflowUtil().WorkflowCreateByMainTableMap(userid, workflowid, requestName, "0", mainMap);
if (Util.getIntValue(zt) < 0) {
zt = "";
}
}
}
//uf_lzblcxbd:生效日期=jhlzrq(uf_lzblcxbd_dt1 计划离职日期)、归档日期=gdrq(归档日期)
sql = "select b.id,b.lzry,c.lastname,b.jhlzrq,a.gdrq from uf_lzblcxbd a left join uf_lzblcxbd_dt1 b on a.id = b.mainid left join hrmresource c on c.id = b.lzry where b.txlcid is null";
rs.execute(sql);
while (rs.next()) {
String zt = "";
id = Util.null2String(rs.getString("id"));
lastname = Util.null2String(rs.getString("lastname"));
sxrq = Util.null2String(rs.getString("jhlzrq"));
gdrq = Util.null2String(rs.getString("gdrq"));
userid = Util.null2String(rs.getString("lzry"));
if ("".equals(id) || "".equals(sxrq) || "".equals(userid)) {
continue;
}
if (sxrq.equals(date)) {
//2、生效日期等于当前日期,根据记录数据更新到hrmresource
zt = updateLZHrmStatus(userid, "5", date);
}
boolean flag = compareDate(sxrq, date);
if ("".equals(gdrq) && flag) {
//生效日期早于当前日期且无归档日期,生成流程到人员,手动调整;
String requestName = "员工关系更新提醒-" + lastname + "-" + date;
Map mainMap = new HashMap<>();
mainMap.put("ygxm", userid);
mainMap.put("gxlx", "2");
mainMap.put("sxrq", sxrq);
zt = new WorkflowUtil().WorkflowCreateByMainTableMap(userid, workflowid, requestName, "0", mainMap);
if (Util.getIntValue(zt) < 0) {
zt = "";
}
}
}
}
//转正
private String updateZZHrmStatus(String userid, String status, String date) {
RecordSet rs = new RecordSet();
String sql = "update hrmresource set status = '" + status + "' where id = '" + userid + "'";
rs.execute(sql);
sql = "update uf_rzgljmb set ygzt = '1' , zzrq = '" + date + "' where ygrlzy = '" + userid + "'";
rs.execute(sql);
return "update";
}
//离职
private String updateLZHrmStatus(String userid, String status, String date) {
RecordSet rs = new RecordSet();
String sql = "update hrmresource set status = '" + status + "' where id = '" + userid + "'";
rs.execute(sql);
sql = "update uf_rzgljmb set ygzt = '3' , lzrq = '" + date + "' where ygrlzy = '" + userid + "'";
rs.execute(sql);
return "update";
}
//调动
private String updateDDHrmStatus(String userid, String date, String xgw, String xbm, String xfb, String zj) {
RecordSet rs = new RecordSet();
String sql = "update hrmresource set jobtitle = '" + xgw + "' ,departmentid = '"+xbm+"' ,subcompanyid1 = '"+xfb+"' where id = '" + userid + "'";
rs.execute(sql);
//岗位、职级名称、部门、公司名称-分部
sql = "update uf_rzgljmb set gwmc = '"+xgw+"' , xl = '" + zj + "' ,bm = '"+xbm+"' ,gsfb = '"+xfb+"' where ygrlzy = '" + userid + "'";
rs.execute(sql);
return "update";
}
private boolean compareDate(String start, String end) {
boolean flag = false;
Date sdate = DateUtil.parseDate(start, "yyyy-MM-dd");
Date edate = DateUtil.parseDate(end, "yyyy-MM-dd");
if (sdate.getTime() < edate.getTime()) {
flag = true;
}
return flag;
}
}