123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- package com.kingdee.eas.custom.attendance.service;
- import com.aliyun.odps.utils.StringUtils;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.bsf.service.app.IHRMsfService;
- import com.kingdee.bos.dao.IObjectPK;
- import com.kingdee.bos.util.BOSUuid;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.CtrlUnitInfo;
- import com.kingdee.eas.basedata.org.HROrgUnitInfo;
- import com.kingdee.eas.basedata.org.PositionInfo;
- import com.kingdee.eas.basedata.person.PersonCollection;
- import com.kingdee.eas.basedata.person.PersonFactory;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.hr.affair.EmpHireBizBillEntryCollection;
- import com.kingdee.eas.hr.affair.EmpHireBizBillEntryInfo;
- import com.kingdee.eas.hr.affair.EmpHireBizBillFactory;
- import com.kingdee.eas.hr.affair.EmpHireBizBillInfo;
- import com.kingdee.eas.hr.base.*;
- import com.kingdee.eas.hr.org.JobGradeFactory;
- import com.kingdee.eas.hr.org.JobGradeInfo;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.ats.web.util.SHRBillUtil;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 转正
- */
- public class SaveEmpHireBizBillService implements IHRMsfService {
- @Override
- public Object process(Context context, Map map) throws EASBizException, BOSException {
- System.out.println("SaveEmpHireBizBillServiceParam=" + map);
- Map<String, Object> result = new HashMap<String, Object>();
- try {
- //根组织
- String orgTop = "00000000-0000-0000-0000-000000000000CCE7AED4";
- StringBuilder errLog = new StringBuilder();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- String personNumber = (String) map.get("personNumber");//编码
- String bizDate = (String)map.get("bizDate");//转正日期
- //非必填
- String description = (String)map.get("description"); //备注
- String rankPosition = (String)map.get("rankPosition");//职位编码
- String employeeType = (String)map.get("employeeType");//用工类型编码
- String grade = (String)map.get("grade");//考核成绩
- String jobGrade = (String)map.get("jobGrade");//转正后职等编码
- String summary = (String)map.get("summary");//工作总结
- if (StringUtils.isBlank(personNumber)) {
- errLog.append("员工工号不能为空;");
- }
- if (StringUtils.isBlank(bizDate)) {
- errLog.append("转正日期不能为空;");
- }
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(" /*dialect*/select pp.FCompanyID,pp.FPersonDep,pp.FPrimaryPositionID,isnull(pp.FEnterDate,p.FEFFDT) FEnterDate, ");
- stringBuilder.append(" p.FEmployeeTypeID,epr.FJobGradeID,er.FTryoutMonth,er.FPlanFormalDate ");
- stringBuilder.append(" from t_bd_person p ");
- stringBuilder.append(" left join T_HR_PERSONPOSITION pp on pp.fpersonid=p.fid ");
- stringBuilder.append(" left join T_HR_EmpPostRank epr on epr.FPersonID=p.fid and epr.fisLatest=1 ");
- stringBuilder.append(" left join T_HR_EmpLaborRelation er on er.FPersonID=p.fid and er.FlEFFDT = '2199-12-20' ");
- stringBuilder.append(" where p.Fnumber= ? ");
- IRowSet rs = DbUtil.executeQuery(context, stringBuilder.toString(),new Object[]{personNumber});
- //入职转正
- EmpHireBizBillInfo billInfo = new EmpHireBizBillInfo();
- billInfo.setBizDate(new Date());
- //制单人
- PersonInfo shrPerson = SHRBillUtil.getCurrPersonInfo();
- billInfo.setApplier(shrPerson);
- billInfo.setApplyDate(new Date());//申请日期
- //控制单元
- CtrlUnitInfo cu = new CtrlUnitInfo();
- //uuid生成规则
- cu.setId(BOSUuid.read(orgTop));
- billInfo.setCU(cu);
- //行政组织
- HROrgUnitInfo hrOrgUnitInfo = new HROrgUnitInfo();
- hrOrgUnitInfo.setId(BOSUuid.read(orgTop));
- billInfo.setHrOrgUnit(hrOrgUnitInfo);
- //转正单分录,集合
- EmpHireBizBillEntryInfo entry = new EmpHireBizBillEntryInfo();
- entry.setBill(billInfo);
- entry.setBizDate(simpleDateFormat.parse(bizDate));//转正日期
- //员工用工关系
- EmpLaborRelationInfo empLaborRelationInfo = null;
- PersonCollection personCollection = PersonFactory.getLocalInstance(context).getPersonCollection("where number='" + personNumber + "'");
- if (personCollection.size() > 0) {
- PersonInfo personInfo = personCollection.get(0);
- entry.setPerson(personInfo);
- EmpLaborRelationCollection empLaborRelationCollection = EmpLaborRelationFactory.getLocalInstance(context).getEmpLaborRelationCollection("where person='" + personInfo.getId() + "'");
- if (empLaborRelationCollection.size() > 0) {
- empLaborRelationInfo = empLaborRelationCollection.get(0);
- //获取用工关系状态
- EmployeeTypeInfo laborRelationState = empLaborRelationInfo.getLaborRelationState();
- //上一个用工关系状态
- empLaborRelationInfo.setLastLaborRelaState(laborRelationState);
- //EmployeeType ,用工关系状态,1正式员工
- EmployeeTypeInfo employeeTypeInfo = EmployeeTypeFactory.getLocalInstance(context).getEmployeeTypeInfo("where number='001'");
- //更新用工关系状态
- empLaborRelationInfo.setLaborRelationState(employeeTypeInfo);
- //实际转正时间
- empLaborRelationInfo.setActualFormalDate(simpleDateFormat.parse(bizDate));
- }
- }else {
- errLog.append("未找到员工工号为" + personNumber + "员工信息;");
- }
- if (StringUtils.isNotBlank(description)){
- entry.setDescription(description); //备注
- }
- //申请人员工
- if (rs.next()){
- //员工部门
- String depID = rs.getString("FPersonDep");
- //职位id
- String primaryPositionID = rs.getString("FPrimaryPositionID");
- //员工用工关系
- String employeeTypeID = rs.getString("FEmployeeTypeID");
- String companyID = rs.getString("FCompanyID");
- //入职时间
- Date enterDate = rs.getDate("FEnterDate");
- //职等
- String FJobGradeID = rs.getString("FJobGradeID");
- //预计转入时间
- Date FPlanFormalDate = rs.getDate("FPlanFormalDate");
- //试用期
- int FTryoutMonth = rs.getInt("FTryoutMonth");
- //预计转入时间
- entry.setPlanFormalDate(FPlanFormalDate);
- if (StringUtils.isNotBlank(depID)) { // 部门
- AdminOrgUnitInfo dep = new AdminOrgUnitInfo();
- dep.setId(BOSUuid.read(depID));
- billInfo.setAdminOrg(dep);
- entry.setAdminOrg(dep);
- entry.setOldAdminOrg(dep);
- }
- if (StringUtils.isNotBlank(primaryPositionID)) { // 职位
- PositionInfo positionInfo = new PositionInfo();
- positionInfo.setId(BOSUuid.read(primaryPositionID));
- entry.setPosition(positionInfo);
- entry.setOldPosition(positionInfo);
- }
- if (StringUtils.isNotBlank(FJobGradeID)) { // 职等
- JobGradeInfo jobGradeInfo = new JobGradeInfo();
- jobGradeInfo.setId(BOSUuid.read(FJobGradeID));
- entry.setOldJobGrade(jobGradeInfo);
- }
- //转正单分录,入职时间
- entry.setEnrollDate(enterDate);
- //转正单分录,试用期
- entry.setProbation(FTryoutMonth);
- //单据分录序列号
- entry.setSeq(1);
- //行政组织单元
- AdminOrgUnitInfo company = new AdminOrgUnitInfo();
- //id
- company.setId(BOSUuid.read(companyID));
- //变动前公司
- entry.setOldCompany(company);
- //员工任职
- if (StringUtils.isNotBlank(employeeTypeID)) {
- EmployeeTypeInfo oldEmployeeType = new EmployeeTypeInfo();
- oldEmployeeType.setId(BOSUuid.read(employeeTypeID));
- entry.setOldEmpType(oldEmployeeType);
- }
- }
- if (StringUtils.isNotBlank(rankPosition)) {
- PositionInfo positionInfo = new PositionInfo();
- positionInfo.setId(BOSUuid.read(rankPosition));
- entry.setPosition(positionInfo);//职位编码
- }
- if (StringUtils.isBlank(employeeType)) { //用工类型编码
- employeeType = "001";
- }
- EmployeeTypeInfo employeeTypeInfo = EmployeeTypeFactory.getLocalInstance(context).getEmployeeTypeInfo("where number='" + employeeType + "'");
- entry.setEmpType(employeeTypeInfo);
- if (StringUtils.isNotBlank(grade)) { //考核成绩
- entry.setGrade(grade);
- }
- if (StringUtils.isNotBlank(jobGrade)) { //转正后职等编码
- //职等
- JobGradeInfo jobGradeInfo = JobGradeFactory.getLocalInstance(context).getJobGradeInfo("where number='" + jobGrade + "'");
- entry.setJobGrade(jobGradeInfo);
- }
- if (StringUtils.isNotBlank(summary)) {
- entry.setSummary(summary); //工作总结
- }
- //变动操作编码(非必填)
- String defineInfoNumber = (String)map.get("defineInfoNumber");
- if (StringUtils.isBlank(defineInfoNumber)) {
- defineInfoNumber = "SHR03";
- }
- //单据业务配置,默认转正
- HRBizDefineInfo hrBizDefineInfo = HRBizDefineFactory.getLocalInstance(context).getHRBizDefineInfo("where number='" + defineInfoNumber + "'");
- entry.setHrBizDefine(hrBizDefineInfo);
- //变动类型编码(非必填)
- String actionReasonInfoNumber = (String)map.get("actionReasonInfoNumber");
- if (StringUtils.isBlank(actionReasonInfoNumber)) {
- actionReasonInfoNumber = "0302";
- }
- //变动类型,默认转正
- AffairActionReasonInfo actionReasonInfo = AffairActionReasonFactory.getLocalInstance(context).getAffairActionReasonInfo("where number='" + actionReasonInfoNumber + "'");
- entry.setAffairActionReason(actionReasonInfo);
- //单分录,行政组织
- entry.setEmployerUnit(hrOrgUnitInfo);
- //默认管理关系
- entry.setUseDefault(true);
- //单分录,hr组织
- entry.setHrOrgUnit(hrOrgUnitInfo);
- billInfo.getEntrys().add(entry);
- EmpHireBizBillFactory.getLocalInstance(context).submitEffect(billInfo);
- if (errLog.length() > 0) {
- result.put("msgType", "0");
- result.put("msg", errLog.toString());
- } else {
- // 入职转正 , 员工用工关系 , 单分录
- //String id = submitEffect(billInfo, empLaborRelationInfo, entryColl, context, uipk);
- result.put("msgType", "1");
- result.put("msg", "success");
- result.put("fnumber", billInfo.getNumber());
- }
- }catch (Exception e){
- e.printStackTrace();
- result.put("msgType", "0");
- result.put("msg", e.getMessage());
- }
- return result;
- }
- }
|