123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- 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.ResignBizBillEntryInfo;
- import com.kingdee.eas.hr.affair.ResignBizBillFactory;
- import com.kingdee.eas.hr.affair.ResignBizBillInfo;
- import com.kingdee.eas.hr.base.*;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.ats.web.util.SHRBillUtil;
- import java.sql.Timestamp;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 离职
- */
- public class SaveResignBizBillService implements IHRMsfService {
- @Override
- public Object process(Context context, Map map) throws EASBizException, BOSException {
- System.out.println("SaveResignBizBillService" + map);
- Map<String , Object> result = new HashMap<String,Object>();
- try {
- StringBuilder errLog = new StringBuilder();
- // 根节点
- String orgTop = "00000000-0000-0000-0000-000000000000CCE7AED4";
- // 必填
- String personNumber = (String)map.get("personNumber");
- String bizDate = (String) map.get("bizDate");//离职日期
- String leftCompanyDate = (String) map.get("leftCompanyDate");//最后工作日
- String forbidUserDate = (String) map.get("forbidUserDate");//禁用用户日期
- //非必填
- String description = (String)map.get("description");//备注
- String actionReasonInfoNumber = (String) map.get("actionReasonInfoNumber");//变动类型
- if(StringUtils.isBlank(personNumber)){
- errLog.append("员工工号不能为空;");
- }
- if(StringUtils.isBlank(bizDate)){
- errLog.append("离职日期不能为空!;");
- }
- if(StringUtils.isBlank(leftCompanyDate)){
- errLog.append("最后工作日不能为空;");
- }
- if (StringUtils.isBlank(forbidUserDate)){
- 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 ");
- stringBuilder.append(" from t_bd_person p ");
- stringBuilder.append(" left join T_HR_PERSONPOSITION pp on pp.fpersonid=p.fid ");
- stringBuilder.append(" where p.fnumber='" + personNumber + "'");
- IRowSet rs = DbUtil.executeQuery(context,stringBuilder.toString());
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat formatDateNum = new SimpleDateFormat("yyyyMMdd-SSS");
- // 离职单
- ResignBizBillInfo billInfo = new ResignBizBillInfo();
- // 业务时间(生成时间)
- billInfo.setBizDate(new Date());
- //制单人
- PersonInfo shrPerson = SHRBillUtil.getCurrPersonInfo();
- billInfo.setApplier(shrPerson);
- billInfo.setApplyDate(new Date());//申请日期
- // 管理单元
- CtrlUnitInfo cu = new CtrlUnitInfo();
- cu.setId(BOSUuid.read(orgTop));
- //控制单元
- billInfo.setCU(cu);
- //HR组织
- HROrgUnitInfo hrOrgUnitInfo = new HROrgUnitInfo();
- hrOrgUnitInfo.setId(BOSUuid.read(orgTop));
- billInfo.setHrOrgUnit(hrOrgUnitInfo);
- //离职单分录
- ResignBizBillEntryInfo entry = new ResignBizBillEntryInfo();
- //设置单据头
- entry.setBill(billInfo);
- entry.setEmpNumber(personNumber);
- //离职员工
- PersonCollection personCollection = PersonFactory.getLocalInstance(context).getPersonCollection("where number='" + personNumber + "'");
- if(personCollection.size() > 0){
- PersonInfo personInfo = personCollection.get(0);
- entry.setPerson(personInfo);
- }
- //离职日期
- entry.setBizDate(simpleDateFormat.parse(bizDate));
- String a = bizDate + " 00:00:00";
- entry.setBizTime(Timestamp.valueOf(a));
- if (StringUtils.isNotBlank(description)){
- entry.setDescription(description);//备注
- }
- if(rs.next()){
- // 所在部门
- String depID = rs.getString("FPersonDep");
- // 主要任职
- String primaryPositionID = rs.getString("FPrimaryPositionID");
- String companyID = rs.getString("FCompanyID");
- // 用户关系
- String employeeTypeID = rs.getString("FEmployeeTypeID");
- // 入职时间, 生效时间
- Date enterDate = rs.getDate("FEnterDate");
- if(StringUtils.isNotBlank(depID)) {
- // 行政组织单元
- AdminOrgUnitInfo dep = new AdminOrgUnitInfo();
- dep.setId(BOSUuid.read(depID));
- // 离职
- billInfo.setAdminOrg(dep);
- // 离职分录
- entry.setOldAdminOrg(dep);
- entry.setAdminOrg(dep);
- }
- //职位
- PositionInfo positionInfo = new PositionInfo();
- if(StringUtils.isNotBlank(primaryPositionID)){
- positionInfo.setId(BOSUuid.read(primaryPositionID));
- }
- // 分录
- entry.setOldPosition(positionInfo);
- entry.setPosition(positionInfo);
- if(StringUtils.isNotBlank(employeeTypeID)){
- EmployeeTypeInfo oldEmployeeType = new EmployeeTypeInfo();
- oldEmployeeType.setId(BOSUuid.read(employeeTypeID));
- entry.setOldEmpType(oldEmployeeType);
- }
- // 离职分录
- entry.setSeq(1); // 单据分录序列号
- entry.setEnterDate(enterDate); //入职时间
- //公司
- AdminOrgUnitInfo company = new AdminOrgUnitInfo();
- company.setId(BOSUuid.read(companyID));
- entry.setCompany(company);
- entry.setOldCompany(company);
- }else {
- errLog.append("未找到员工工号为" + personNumber + "的有效信息;");
- }
- // 单据业务配置 辞职
- HRBizDefineInfo defineInfo = new HRBizDefineInfo();
- defineInfo.setId(BOSUuid.read("DawAAAApViXmaL7Z"));
- //变动操作
- entry.setHrBizDefine(defineInfo);
- // 用工关系
- EmployeeTypeInfo employeeType = new EmployeeTypeInfo();
- //目标员工状态 离职
- employeeType.setId(BOSUuid.read("00000000-0000-0000-0000-000000000007A29E85B3"));
- entry.setEmpType(employeeType);
- if(StringUtils.isBlank(actionReasonInfoNumber)){
- // 变动类型 辞职
- AffairActionReasonInfo actionReasonInfo = new AffairActionReasonInfo();
- actionReasonInfo.setId(BOSUuid.read("+/Fqq82IQ2Cxm2PNypBkD5YRae4="));
- entry.setAffairActionReason(actionReasonInfo);
- }else{
- AffairActionReasonInfo affairActionReasonInfo = AffairActionReasonFactory.getLocalInstance(context).getAffairActionReasonInfo("where number='" + actionReasonInfoNumber + "'");
- entry.setAffairActionReason(affairActionReasonInfo);
- }
- //变动原因
- String variationReasonInfoNumber = (String) map.get("variationReasonInfoNumber");
- if(StringUtils.isBlank(variationReasonInfoNumber)){
- VariationReasonInfo variationReasonInfo = new VariationReasonInfo();
- variationReasonInfo.setId(BOSUuid.read("Y3K05Pu2QNiAxV/oBHXFUuas36w="));
- entry.setVariationReason(variationReasonInfo);
- }else{
- VariationReasonInfo variationReasonInfo = VariationReasonFactory.getLocalInstance(context).getVariationReasonInfo("where number='" + variationReasonInfoNumber + "'");
- entry.setVariationReason(variationReasonInfo);
- }
- // 用工单位
- entry.setEmployerUnit(hrOrgUnitInfo);
- entry.setUseDefault(true);//使用默认管理关系
- entry.setLeftCompanyDate(simpleDateFormat.parse(leftCompanyDate)); //最后工作日
- entry.setForbidUserDate(simpleDateFormat.parse(forbidUserDate)); //禁用用户日期
- billInfo.getEntrys().add(entry);
- ResignBizBillFactory.getLocalInstance(context).submitEffect(billInfo);
- if (errLog.length()>0){
- result.put("msgType","0");
- result.put("msg",errLog.toString());
- }else{
- 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;
- }
- }
|