聚才林产品功能开发。。。
parent
46f1c9fde1
commit
b4dc69bd40
@ -0,0 +1,5 @@
|
|||||||
|
#\u4EBA\u5458\u4EFB\u804C\u8BB0\u5F55\u8868
|
||||||
|
eModeId=336
|
||||||
|
|
||||||
|
#\u65F6\u70B9\u529F\u80FD\u542F\u7528\u65E5\u671F
|
||||||
|
startDate=
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.api.jclproduct.web;
|
||||||
|
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 4:12 PM
|
||||||
|
* @Description: 人员任职记录
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Path("/jclproduct/employee")
|
||||||
|
public class EmploymentRecordAction extends com.engine.jclproduct.web.EmploymentRecordAction{
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.engine.jclproduct.entity.bo;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.engine.jclproduct.entity.po.EmploymentRecordPo;
|
||||||
|
import com.engine.jclproduct.entity.po.HrmresourcePo;
|
||||||
|
import com.engine.jclproduct.utils.EmploymentUtil;
|
||||||
|
import com.weaver.general.BaseBean;
|
||||||
|
import com.weaver.general.TimeUtil;
|
||||||
|
import weaver.common.DateUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 5:31 PM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EmploymentRecordBo {
|
||||||
|
|
||||||
|
|
||||||
|
public static List<EmploymentRecordPo> buildEmploymentRecordPo(List<HrmresourcePo> hrmresourcePos) {
|
||||||
|
List<EmploymentRecordPo> employmentRecordPos = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isEmpty(hrmresourcePos)) {
|
||||||
|
return employmentRecordPos;
|
||||||
|
}
|
||||||
|
//失效日期默认最大值
|
||||||
|
return hrmresourcePos.stream().map(e-> {
|
||||||
|
Map<String, Integer> map = EmploymentUtil.dateSplitExample(e.getCompanyStartDate());
|
||||||
|
return EmploymentRecordPo.builder()
|
||||||
|
.userId(e.getUserId())
|
||||||
|
.workcode(e.getWorkcode())
|
||||||
|
.employeeStatus(e.getStatus())
|
||||||
|
.changType(EmploymentUtil.getChangeType(e.getStatus()))
|
||||||
|
.startDate(DateUtil.getCurrentDate())
|
||||||
|
.stopDate("9999-12-31") //失效日期默认最大值
|
||||||
|
.departmentId(e.getDepartmentId())
|
||||||
|
.subCompanyId(e.getSubcompanyId())
|
||||||
|
.superior(e.getManagerId())
|
||||||
|
.position(e.getJobTitle())
|
||||||
|
.companyStartDate(e.getCompanyStartDate())
|
||||||
|
.workyear(e.getCompanyWorkyear())
|
||||||
|
.entryDateYear(map.get("year"))
|
||||||
|
.entryDateMonth(map.get("month"))
|
||||||
|
.entryDateDay(map.get("day"))
|
||||||
|
.sex(e.getSex())
|
||||||
|
.birthday(e.getBirthday())
|
||||||
|
.build();}
|
||||||
|
).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static EmploymentRecordPo setEmploymentRecordPo(HrmresourcePo h){
|
||||||
|
Map<String, Integer> map = EmploymentUtil.dateSplitExample(h.getCompanyStartDate());
|
||||||
|
|
||||||
|
//处理其他参数
|
||||||
|
|
||||||
|
return EmploymentRecordPo.builder()
|
||||||
|
.userId(h.getUserId())
|
||||||
|
.workcode(h.getWorkcode())
|
||||||
|
.employeeStatus(h.getStatus())
|
||||||
|
.changType(EmploymentUtil.getChangeType(h.getStatus()))
|
||||||
|
.startDate(DateUtil.getCurrentDate())
|
||||||
|
.stopDate("9999-12-31")
|
||||||
|
.departmentId(h.getDepartmentId())
|
||||||
|
.subCompanyId(h.getSubcompanyId())
|
||||||
|
.superior(h.getManagerId())
|
||||||
|
.position(h.getJobTitle())
|
||||||
|
.companyStartDate(h.getCompanyStartDate())
|
||||||
|
.workyear(h.getCompanyWorkyear())
|
||||||
|
.entryDateYear(map.get("year"))
|
||||||
|
.entryDateMonth(map.get("month"))
|
||||||
|
.entryDateDay(map.get("day"))
|
||||||
|
.sex(h.getSex())
|
||||||
|
.birthday(h.getBirthday())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.engine.jclproduct.entity.po;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/23 3:43 PM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class DataDutyPo {
|
||||||
|
|
||||||
|
private HrmresourcePo hrmresourceUpdate;
|
||||||
|
|
||||||
|
private HrmresourcePo hrmresourceInsert;
|
||||||
|
|
||||||
|
private List<EmploymentRecordPo> employmentRecordInsert;
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
package com.engine.jclproduct.entity.po;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 4:22 PM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class EmploymentRecordPo {
|
||||||
|
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
private Integer userId;
|
||||||
|
|
||||||
|
private String workcode;
|
||||||
|
|
||||||
|
private Integer employeeStatus;
|
||||||
|
|
||||||
|
private Integer changType;
|
||||||
|
|
||||||
|
private String startDate;
|
||||||
|
|
||||||
|
private String stopDate;
|
||||||
|
|
||||||
|
private Integer departmentId;
|
||||||
|
|
||||||
|
private Integer subCompanyId;
|
||||||
|
|
||||||
|
private Integer superior;
|
||||||
|
|
||||||
|
private Integer position;
|
||||||
|
|
||||||
|
private Integer changeOldSuperior;
|
||||||
|
|
||||||
|
private Integer changeNewSuperior;
|
||||||
|
|
||||||
|
private Integer changeOldJob;
|
||||||
|
|
||||||
|
private Integer changeNewJob;
|
||||||
|
|
||||||
|
private Integer changeOldDept;
|
||||||
|
|
||||||
|
private Integer changeNewDept;
|
||||||
|
|
||||||
|
private String companyStartDate;
|
||||||
|
|
||||||
|
private String workyear;
|
||||||
|
|
||||||
|
private Integer entryDateYear;
|
||||||
|
|
||||||
|
private Integer entryDateMonth;
|
||||||
|
|
||||||
|
private Integer entryDateDay;
|
||||||
|
|
||||||
|
private String expectedLastWorkDate;
|
||||||
|
|
||||||
|
private String lastWorkDate;
|
||||||
|
|
||||||
|
private String probationStartDate;
|
||||||
|
|
||||||
|
private String probationActualStopDate;
|
||||||
|
|
||||||
|
private String regularizationDate;
|
||||||
|
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
private String birthday;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建模默认字段
|
||||||
|
*/
|
||||||
|
private Integer formModeId;
|
||||||
|
private String modeDataCreateDate;
|
||||||
|
private String modeDataCreateTime;
|
||||||
|
private Integer modeDataCreater;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.engine.jclproduct.service.impl;
|
||||||
|
|
||||||
|
import com.engine.core.impl.Service;
|
||||||
|
import com.engine.jclproduct.entity.bo.EmploymentRecordBo;
|
||||||
|
import com.engine.jclproduct.entity.po.EmploymentRecordPo;
|
||||||
|
import com.engine.jclproduct.entity.po.HrmresourcePo;
|
||||||
|
import com.engine.jclproduct.service.EmploymentRecordService;
|
||||||
|
import com.engine.jclproduct.utils.EmploymentUtil;
|
||||||
|
import com.weaver.file.ConfigOperator;
|
||||||
|
import com.weaver.general.BaseBean;
|
||||||
|
import com.weaver.general.TimeUtil;
|
||||||
|
import com.weaver.general.Util;
|
||||||
|
import weaver.common.DateUtil;
|
||||||
|
import weaver.conn.RecordSet;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 4:23 PM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EmploymentRecordServiceImpl extends Service implements EmploymentRecordService {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> initPerson() {
|
||||||
|
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
//1.任职记录表初始化数据 只执行一次
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
rs.executeQuery("select count(1) as num from uf_EmploymentRecord");
|
||||||
|
rs.next();
|
||||||
|
int num = Util.getIntValue(rs.getString("num"));
|
||||||
|
if (num > 0) {
|
||||||
|
map.put("msg","员工任职记录表已经初始化,不可重复执行");
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
//2.获取当前人员表人员信息
|
||||||
|
List<HrmresourcePo> hrmresourcePoList = EmploymentUtil.getHrmResources();
|
||||||
|
|
||||||
|
hrmresourcePoList.forEach(e-> rs.executeUpdate("insert into uf_hrmresource_day(userId,workcode,companystartdate,companyworkyear," +
|
||||||
|
" birthday,jobtitle,departmentid,subcompanyid,managerid,status,sex) values(?,?,?,?,?,?,?,?,?,?,?)",e.getUserId(),e.getWorkcode(),
|
||||||
|
e.getCompanyStartDate(),e.getCompanyWorkyear(),e.getBirthday(),e.getJobTitle(),e.getDepartmentId(),e.getSubcompanyId(),e.getManagerId(),e.getStatus(),e.getSex()));
|
||||||
|
|
||||||
|
map.put("msg1","人力资源中间表初始化完成,当前共"+hrmresourcePoList.size()+"条数据");
|
||||||
|
|
||||||
|
List<EmploymentRecordPo> employmentPos = EmploymentRecordBo.buildEmploymentRecordPo(hrmresourcePoList);
|
||||||
|
BaseBean bb = new BaseBean();
|
||||||
|
String formModeId = bb.getPropValue("jclproduct", "eModeId");
|
||||||
|
|
||||||
|
String modeDataCreateDate = DateUtil.getCurrentDate();
|
||||||
|
String modeDataCreateTime = TimeUtil.getOnlyCurrentTimeString();
|
||||||
|
ConfigOperator configOperator = new ConfigOperator();
|
||||||
|
configOperator.setProp("jclproduct.properties", "startDate", modeDataCreateDate);
|
||||||
|
|
||||||
|
employmentPos.forEach(e-> rs.executeUpdate("insert into uf_EmploymentRecord(userId,workcode,employeeStatus,changType,startDate,stopDate," +
|
||||||
|
" departmentId,subCompanyId,superior,position,companyStartDate,workyear,entryDateYear,entryDateMonth,entryDateDay," +
|
||||||
|
" sex,birthday,formmodeid,modeDataCreateDate,modeDataCreateTime,modeDataCreater) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
|
||||||
|
e.getUserId(),e.getWorkcode(),e.getEmployeeStatus(),e.getChangType(),e.getStartDate(),e.getStopDate(),e.getDepartmentId(),
|
||||||
|
e.getSubCompanyId(),e.getSuperior(),e.getPosition(),e.getCompanyStartDate(),e.getWorkyear(),e.getEntryDateYear(),e.getEntryDateMonth(),
|
||||||
|
e.getEntryDateDay(),e.getSex(),e.getBirthday(),formModeId,modeDataCreateDate,modeDataCreateTime,1));
|
||||||
|
|
||||||
|
map.put("msg2","员工任职记录表初始化完成,人力资源表共"+employmentPos.size()+"条数据");
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
package com.engine.jclproduct.utils;
|
||||||
|
|
||||||
|
import com.engine.jclproduct.entity.po.EmploymentRecordPo;
|
||||||
|
import com.engine.jclproduct.entity.po.HrmresourcePo;
|
||||||
|
import com.weaver.general.Util;
|
||||||
|
import weaver.common.DateUtil;
|
||||||
|
import weaver.conn.RecordSet;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/23 10:14 AM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EmploymentUtil {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变动类型
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Integer getChangeType(Integer status){
|
||||||
|
|
||||||
|
Integer changeType = null;
|
||||||
|
|
||||||
|
switch (status){
|
||||||
|
case 0: case 2: case 3:
|
||||||
|
changeType = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
changeType = 1;
|
||||||
|
break;
|
||||||
|
case 4: case 5: case 6: case 7:
|
||||||
|
changeType = 3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return changeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 年月日
|
||||||
|
* @param companysDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Map<String,Integer> dateSplitExample(String companysDate){
|
||||||
|
|
||||||
|
if ("".equals(companysDate)) {
|
||||||
|
companysDate = DateUtil.getCurrentDate();
|
||||||
|
}
|
||||||
|
LocalDate date = LocalDate.parse(companysDate);
|
||||||
|
return new HashMap<String,Integer>(4){
|
||||||
|
{
|
||||||
|
put("year",date.getYear());
|
||||||
|
put("month",date.getMonthValue());
|
||||||
|
put("day",date.getDayOfMonth());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前人员表人员信息
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static List<HrmresourcePo> getHrmResources(){
|
||||||
|
List<HrmresourcePo> hrmresourcePoList = new ArrayList<>();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
rs.executeQuery("select id,workcode,status,companystartdate,companyworkyear,sex,birthday,jobtitle,departmentid,subcompanyid1,managerid from hrmresource");
|
||||||
|
while (rs.next()) {
|
||||||
|
hrmresourcePoList.add(HrmresourcePo.builder()
|
||||||
|
.userId(Util.getIntValue(rs.getString("id")))
|
||||||
|
.workcode(Util.null2String(rs.getString("workcode")))
|
||||||
|
.status(Util.getIntValue(rs.getString("status")))
|
||||||
|
.companyStartDate(Util.null2String(rs.getString("companystartdate")))
|
||||||
|
.companyWorkyear(Util.null2String(rs.getString("companyworkyear")))
|
||||||
|
.sex(Util.getIntValue(rs.getString("sex")))
|
||||||
|
.birthday(Util.null2String(rs.getString("birthday")))
|
||||||
|
.jobTitle(Util.getIntValue(rs.getString("jobtitle")))
|
||||||
|
.departmentId(Util.getIntValue(rs.getString("departmentid")))
|
||||||
|
.subcompanyId(Util.getIntValue(rs.getString("subcompanyid1")))
|
||||||
|
.managerId(Util.getIntValue(rs.getString("managerid")))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
return hrmresourcePoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任职记录 各种状态下 相关变动日期记录
|
||||||
|
* @param recordPo
|
||||||
|
*/
|
||||||
|
public static void dutyStatusDate(EmploymentRecordPo recordPo) {
|
||||||
|
String currentDate = DateUtil.getCurrentDate();
|
||||||
|
switch (recordPo.getEmployeeStatus()){
|
||||||
|
case 0:
|
||||||
|
recordPo.setProbationStartDate(currentDate);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
recordPo.setRegularizationDate(currentDate);
|
||||||
|
break;
|
||||||
|
case 4: case 5:
|
||||||
|
recordPo.setLastWorkDate(currentDate);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
recordPo.setExpectedLastWorkDate(currentDate);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.engine.jclproduct.web;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
|
import com.engine.common.util.ServiceUtil;
|
||||||
|
import com.engine.jclproduct.service.EmploymentRecordService;
|
||||||
|
import com.engine.jclproduct.service.impl.EmploymentRecordServiceImpl;
|
||||||
|
import weaver.hrm.HrmUserVarify;
|
||||||
|
import weaver.hrm.User;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.core.Context;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 4:22 PM
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EmploymentRecordAction {
|
||||||
|
|
||||||
|
private EmploymentRecordService getService(User user) {
|
||||||
|
return ServiceUtil.getService(EmploymentRecordServiceImpl.class, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/initPerson")
|
||||||
|
@Produces(MediaType.TEXT_PLAIN)
|
||||||
|
public String resourceSnip(@Context HttpServletRequest request, @Context HttpServletResponse response){
|
||||||
|
Map<String, Object> data = new HashMap<>(8);
|
||||||
|
try {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
data.put("datas",getService(user).initPerson());
|
||||||
|
data.put("api_status", true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
data.put("api_status", false);
|
||||||
|
data.put("msg", "catch exception : " + e.getMessage());
|
||||||
|
}
|
||||||
|
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,174 @@
|
|||||||
|
package weaver.interfaces.jclproduct;
|
||||||
|
|
||||||
|
|
||||||
|
import com.engine.jclproduct.entity.bo.EmploymentRecordBo;
|
||||||
|
import com.engine.jclproduct.entity.po.DataDutyPo;
|
||||||
|
import com.engine.jclproduct.entity.po.EmploymentRecordPo;
|
||||||
|
import com.engine.jclproduct.entity.po.HrmresourcePo;
|
||||||
|
import com.engine.jclproduct.utils.EmploymentUtil;
|
||||||
|
import com.weaver.file.ConfigOperator;
|
||||||
|
import com.weaver.general.BaseBean;
|
||||||
|
import com.weaver.general.TimeUtil;
|
||||||
|
import com.weaver.general.Util;
|
||||||
|
import weaver.common.DateUtil;
|
||||||
|
import weaver.conn.RecordSet;
|
||||||
|
import weaver.interfaces.schedule.BaseCronJob;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2024/10/22 4:24 PM
|
||||||
|
* @Description: 人员入转调离 任职变化 记录任务
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class EmploymentRecordCrob extends BaseCronJob {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
//1.获取当前人员信息数据
|
||||||
|
List<HrmresourcePo> hrmresourcePoList = EmploymentUtil.getHrmResources();
|
||||||
|
|
||||||
|
//人员信息表更新集合
|
||||||
|
List<HrmresourcePo> hrmresourceUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
//人员信息表新增集合
|
||||||
|
List<HrmresourcePo> hrmresourceInsert = new ArrayList<>();
|
||||||
|
|
||||||
|
//任职记录表新增集合
|
||||||
|
List<EmploymentRecordPo> employmentRecordInsert = new ArrayList<>();
|
||||||
|
|
||||||
|
BaseBean bb = new BaseBean();
|
||||||
|
String formModeId = bb.getPropValue("jclproduct", "eModeId");
|
||||||
|
|
||||||
|
String modeDataCreateDate = DateUtil.getCurrentDate();
|
||||||
|
String modeDataCreateTime = TimeUtil.getOnlyCurrentTimeString();
|
||||||
|
ConfigOperator configOperator = new ConfigOperator();
|
||||||
|
configOperator.setProp("jclproduct.properties", "startDate", modeDataCreateDate);
|
||||||
|
|
||||||
|
//2.与人力资源中间表对比每一条人员数据 todo 数据量大的情况下线程处理
|
||||||
|
hrmresourcePoList.forEach(hrmresource->{
|
||||||
|
|
||||||
|
//1.入转调离 人员数据变化处理
|
||||||
|
DataDutyPo dataDutyPo = dutyDatasChange(hrmresource);
|
||||||
|
hrmresourceUpdate.add(dataDutyPo.getHrmresourceUpdate());
|
||||||
|
hrmresourceInsert.add(dataDutyPo.getHrmresourceInsert());
|
||||||
|
employmentRecordInsert.addAll(dataDutyPo.getEmploymentRecordInsert());
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
bb.writeLog("hrmresourceUpdate:"+hrmresourceUpdate.size());
|
||||||
|
bb.writeLog("hrmresourceInsert:"+hrmresourceInsert.size());
|
||||||
|
bb.writeLog("employmentRecordInsert:"+employmentRecordInsert.size());
|
||||||
|
//3.人员信息中间表
|
||||||
|
//更新
|
||||||
|
hrmresourceUpdate.forEach(e -> {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//插入
|
||||||
|
hrmresourceInsert.forEach(e->{
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//4.人员任职记录表
|
||||||
|
employmentRecordInsert.forEach(e->{
|
||||||
|
|
||||||
|
//1.更新上一条数据stopDate
|
||||||
|
|
||||||
|
|
||||||
|
//2.新增数据
|
||||||
|
rs.executeUpdate("insert into uf_EmploymentRecord(userId,workcode,employeeStatus,changType,startDate,stopDate," +
|
||||||
|
" departmentId,subCompanyId,superior,position,changeOldSuperior,changeNewSuperior,changeOldJob,changeNewJob,changeOldDept,changeNewDept," +
|
||||||
|
" companyStartDate,workyear,entryDateYear,entryDateMonth,entryDateDay,expectedLastWorkDate,lastWorkDate,probationActualStopDate,regularizationDate," +
|
||||||
|
" sex,birthday,formmodeid,modeDataCreateDate,modeDataCreateTime,modeDataCreater) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
|
||||||
|
e.getUserId(),e.getWorkcode(),e.getEmployeeStatus(),e.getChangType(),e.getStartDate(),e.getStopDate(),e.getDepartmentId(),
|
||||||
|
e.getSubCompanyId(),e.getSuperior(),e.getPosition(),e.getChangeOldSuperior(),e.getChangeNewSuperior(),
|
||||||
|
e.getChangeOldJob(),e.getChangeNewJob(),e.getChangeOldDept(),e.getChangeNewDept(),e.getCompanyStartDate(),
|
||||||
|
e.getWorkyear(),e.getEntryDateYear(),e.getEntryDateMonth(),e.getEntryDateDay(), e.getExpectedLastWorkDate(),
|
||||||
|
e.getLastWorkDate(),e.getProbationActualStopDate(),e.getRegularizationDate(),e.getSex(),e.getBirthday(),formModeId,modeDataCreateDate,modeDataCreateTime,1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入转调离 人员数据变化处理
|
||||||
|
* @param hrmresource
|
||||||
|
*/
|
||||||
|
private DataDutyPo dutyDatasChange(HrmresourcePo hrmresource){
|
||||||
|
DataDutyPo dataDutyPo = new DataDutyPo();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
//2.1 根据userid获取上一次人员中间表数据作对比
|
||||||
|
rs.executeQuery("select id,userid,workcode,status,companystartdate,companyworkyear,sex,birthday," +
|
||||||
|
" jobtitle,departmentid,subcompanyid,managerid from uf_hrmresource_day where userid = ?",hrmresource.getUserId());
|
||||||
|
|
||||||
|
if (rs.next()) {
|
||||||
|
//3.数据存在作比较
|
||||||
|
HrmresourcePo lastResource = HrmresourcePo.builder()
|
||||||
|
.id(Util.getIntValue(rs.getString("id")))
|
||||||
|
.status(Util.getIntValue(rs.getString("status")))
|
||||||
|
.companyWorkyear(Util.null2String(rs.getString("companyworkyear")))
|
||||||
|
.subcompanyId(Util.getIntValue(rs.getString("subcompanyid")))
|
||||||
|
.departmentId(Util.getIntValue(rs.getString("departmentid")))
|
||||||
|
.jobTitle(Util.getIntValue(rs.getString("jobtitle")))
|
||||||
|
.managerId(Util.getIntValue(rs.getString("managerid")))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//3.0 数据一致不做处理
|
||||||
|
//3.11 人员状态比较
|
||||||
|
List<EmploymentRecordPo> employmentRecords = new ArrayList<>();
|
||||||
|
if (!hrmresource.getStatus().equals(lastResource.getStatus())) {
|
||||||
|
//状态变更
|
||||||
|
EmploymentRecordPo employmentRecord = EmploymentRecordBo.setEmploymentRecordPo(hrmresource);
|
||||||
|
//记录各种状态下日期
|
||||||
|
EmploymentUtil.dutyStatusDate(employmentRecord);
|
||||||
|
employmentRecords.add(employmentRecord);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//3.12 调动状态比较(分别是 部门 岗位 人员上级 任一个条件发生变化 都记录为调动)
|
||||||
|
if (!hrmresource.getDepartmentId().equals(lastResource.getDepartmentId())
|
||||||
|
|| !hrmresource.getJobTitle().equals(lastResource.getJobTitle())
|
||||||
|
|| !hrmresource.getManagerId().equals(lastResource.getManagerId())){
|
||||||
|
|
||||||
|
EmploymentRecordPo employmentRecord = EmploymentRecordBo.setEmploymentRecordPo(hrmresource);
|
||||||
|
// 记录调动下新旧组织数据留痕
|
||||||
|
employmentRecord.setChangeOldDept(lastResource.getDepartmentId());
|
||||||
|
employmentRecord.setChangeOldJob(lastResource.getJobTitle());
|
||||||
|
employmentRecord.setChangeOldSuperior(lastResource.getManagerId());
|
||||||
|
|
||||||
|
employmentRecord.setChangeNewDept(hrmresource.getDepartmentId());
|
||||||
|
employmentRecord.setChangeNewJob(hrmresource.getJobTitle());
|
||||||
|
employmentRecord.setChangeNewSuperior(hrmresource.getManagerId());
|
||||||
|
|
||||||
|
//调动
|
||||||
|
employmentRecord.setChangType(3);
|
||||||
|
|
||||||
|
employmentRecords.add(employmentRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
//3.1 数据不一致,人员中间表更新
|
||||||
|
hrmresource.setId(lastResource.getId());
|
||||||
|
dataDutyPo.setHrmresourceUpdate(hrmresource);
|
||||||
|
//3.2 数据不一致,任职记录表新增
|
||||||
|
dataDutyPo.setEmploymentRecordInsert(employmentRecords);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
//4.数据不存在作新增
|
||||||
|
//4.1 人员中间表新增
|
||||||
|
dataDutyPo.setHrmresourceInsert(hrmresource);
|
||||||
|
//4.2 任职记录表新增
|
||||||
|
List<EmploymentRecordPo> recordList = Collections.singletonList(EmploymentRecordBo.setEmploymentRecordPo(hrmresource));
|
||||||
|
dataDutyPo.setEmploymentRecordInsert(recordList);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dataDutyPo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue