123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- /**
- *
- */
- package com.kingdee.shr.customer.gtiit.imports;
- import java.sql.SQLException;
- import java.text.MessageFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Map.Entry;
- import org.apache.commons.lang3.StringUtils;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.dao.IObjectPK;
- import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
- import com.kingdee.bos.metadata.entity.EntityViewInfo;
- import com.kingdee.bos.metadata.entity.FilterInfo;
- import com.kingdee.bos.metadata.entity.FilterItemInfo;
- import com.kingdee.bos.metadata.entity.SelectorItemCollection;
- import com.kingdee.bos.metadata.entity.SelectorItemInfo;
- import com.kingdee.bos.orm.ORMCoreException;
- import com.kingdee.bos.util.BOSUuid;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.HROrgUnitInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.framework.CoreBaseInfo;
- import com.kingdee.eas.hr.affair.FluctuationBizBillEntryInfo;
- import com.kingdee.eas.hr.affair.FluctuationBizBillFactory;
- import com.kingdee.eas.hr.affair.FluctuationBizBillInfo;
- import com.kingdee.eas.hr.affair.IFluctuationBizBill;
- import com.kingdee.eas.hr.base.AffairActionReasonCollection;
- import com.kingdee.eas.hr.base.AffairActionReasonFactory;
- import com.kingdee.eas.hr.base.BillEffectEnum;
- import com.kingdee.eas.hr.base.EmpTypeEnum;
- import com.kingdee.eas.hr.base.EmployeeTypeInfo;
- import com.kingdee.eas.hr.base.HRBillStateEnum;
- import com.kingdee.eas.hr.base.HRBizDefEmpTypeCollection;
- import com.kingdee.eas.hr.base.HRBizDefineCollection;
- import com.kingdee.eas.hr.base.HRBizDefineFactory;
- import com.kingdee.eas.hr.base.HRBizDefineInfo;
- import com.kingdee.eas.hr.base.app.EmpPostExperienceHisHelper;
- import com.kingdee.eas.hr.emp.EmpBatchAffairBizException;
- import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseColumnInfo;
- import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseRowInfo;
- import com.kingdee.shr.base.syssetting.app.io.fileImport.ImportException;
- import com.kingdee.shr.base.syssetting.app.io.fileImport.ValueCovertUtils;
- import com.kingdee.shr.base.syssetting.app.io.impl.FluctuationBizBillHrManImportService;
- import com.kingdee.shr.base.syssetting.app.io.impl.util.FileServiceUtil;
- import com.kingdee.shr.base.syssetting.app.io.impl.util.FluctuationImportCheck;
- import com.kingdee.shr.base.syssetting.context.SHRContext;
- import com.kingdee.shr.base.syssetting.ml.SHRWebResource;
- import com.kingdee.eas.hr.org.JobGradeInfo;
- import com.kingdee.eas.hr.org.JobLevelInfo;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.eas.base.permission.UserInfo;
- 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.basedata.org.PositionInfo;
- /**
- * @author ISSUSER 调动单导入
- * FluctuationBizBillHrManImportService
- */
- public class FluctImport extends FluctuationBizBillHrManImportService {
- String errorMsg;
- Context ctx = SHRContext.getInstance().getContext();
- @Override
- protected void submitData(CoreBaseInfo baseInfo) throws ImportException {
- String effectOprate = baseInfo.get("effectOprate").toString();
- Context ctx = this.getContext();
- UserInfo uInfo = (UserInfo) ctx.get("UserInfo");
- PersonInfo pInfo = uInfo.getPerson();
- Date now = new Date();
- FluctuationBizBillInfo billInfo = new FluctuationBizBillInfo();
- FluctuationBizBillEntryInfo entryInfo = (FluctuationBizBillEntryInfo) baseInfo;
- entryInfo.setOldAdminOrg((AdminOrgUnitInfo) null);
- entryInfo.setOldPosition((PositionInfo) null);
- entryInfo.setOldEmpType((EmployeeTypeInfo) null);
-
- String number = entryInfo.getString("empnumber");
- // 新增字段的导入 通过工号查询员工信息
- StringBuffer sql = new StringBuffer();
- sql.append("SELECT top 1 a.fpersonid as peronid, a.CFHourlywage as hourlyage,a.CFLineManagerNameI as lineId,a.CFAdmintitle as admintitle,a.CFWorkercategoryID as workerId,a.CFJobsID as jobsId,a.CFAcademicTitleID as academicId,\r\n"
- + "a.FAdminOrgID drementID,a.FHROrgUnitID as horgunitid,a.fpositionid as postitionid,a.fleffdt\r\n"
- + " FROM T_HR_EmpOrgRelation a left join t_bd_person b on b.fid=a.fpersonid inner join (SELECT max(fleffdt)fleffdt, fpersonid FROM T_HR_EmpOrgRelation where FIsLatestInAday='1' and fassignType = '1' group by fpersonid ) c on a.fpersonid=c.fpersonid \r\n"
- + " and a.fleffdt=c.fleffdt where a.FIsLatestInAday ='1' and a.fassignType = '1' and b.FNumber = '"+number+"'");
- try {
- //默认变动操作为公司内调动
- HRBizDefineCollection hrBizDefineColl = HRBizDefineFactory.getLocalInstance(ctx).getHRBizDefineCollection("where number = 'SHR22'");
- if(hrBizDefineColl != null && hrBizDefineColl.size()>0) {
- entryInfo.setHrBizDefine(hrBizDefineColl.get(0));
- }
- //默认变动类型为调动调出
- AffairActionReasonCollection affairActionReasonColl = AffairActionReasonFactory.getLocalInstance(ctx).getAffairActionReasonCollection("where number = '0207'");
- if(affairActionReasonColl != null && affairActionReasonColl.size()>0) {
- entryInfo.setAffairActionReason(affairActionReasonColl.get(0));
- }
-
- IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString());
- while (rs.next()) {
- // 直属上级id
- String lineId=rs.getString("lineId");
- entryInfo.put("Clmanager", lineId);
- //时薪
- String hourlyage=rs.getString("hourlyage");
- entryInfo.put("Chrate", hourlyage);
- //员工类别id
- String workerId=rs.getString("workerId");
- entryInfo.put("Workercategory", workerId);
-
- //job2id
- String jobsId=rs.getString("jobsId");
- String jobsStr = entryInfo.getString("jobs");
- if(StringUtils.isBlank(jobsStr)) {
- entryInfo.put("jobs", jobsId);
- }
-
- //Admin Title
- String adminTitle =rs.getString("admintitle");
- String adminTitleStr = entryInfo.getString("Admintitle");
- if(StringUtils.isBlank(adminTitleStr)) {
- entryInfo.put("Admintitle", adminTitle);
- }
-
- //Academic Title id
- String academicId=rs.getString("academicId");
- String academicTitleStr=entryInfo.getString("academictitle");
- if(StringUtils.isBlank(academicTitleStr)) {
- entryInfo.put("academictitle", academicId);
- }
- }
- } catch (BOSException e) {
- e.printStackTrace();
- } catch (ORMCoreException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- EmpBatchAffairBizException e1;
- try {
- HRBizDefineInfo hrBizDefineInfo = HRBizDefineFactory.getLocalInstance(ctx)
- .getHRBizDefineInfo(new ObjectUuidPK(entryInfo.getHrBizDefine().getId()));
- EmpTypeEnum empTypeEnum = hrBizDefineInfo.getEmpTypeField();
- if (empTypeEnum.getValue() == 10) {
- entryInfo.setEmpType((EmployeeTypeInfo) null);
- }
- JobLevelInfo jobLevel = entryInfo.getJobLevel();
- JobGradeInfo jobGrade = entryInfo.getJobGrade();
- EmpPostExperienceHisHelper.fillHistory(ctx, entryInfo.getPerson().getId().toString(),
- entryInfo.getBizDate(), entryInfo);
- entryInfo.setJobLevel(jobLevel);
- entryInfo.setJobGrade(jobGrade);
- billInfo.setApplier(pInfo);
- billInfo.setApplyDate(now);
- billInfo.setBillState(HRBillStateEnum.SUBMITED);
- billInfo.setExtendedProperty("isAddNew", "isAddNew");
- if (baseInfo.get("billNumber") != null) {
- billInfo.setNumber(baseInfo.get("billNumber").toString());
- }
- billInfo.setHrOrgUnit((HROrgUnitInfo) baseInfo.get("hrOrgUnit"));
- billInfo.setAdminOrg((AdminOrgUnitInfo) baseInfo.get("adminOrg"));
- FileServiceUtil.checkBillNumberExist(ctx, baseInfo, billInfo);
- entryInfo.setBill(billInfo);
- billInfo.getEntrys().clear();
- billInfo.getEntrys().add(entryInfo);
- this.validEntryInfo(ctx, billInfo, entryInfo.getEmpType().getId().toString(),
- entryInfo.getHrBizDefine().getId().toString());
- } catch (BOSException var17) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var17,
- new Object[] { var17.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- } catch (EASBizException var18) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var18,
- new Object[] { var18.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- }
- this.setWorkFlow(billInfo);
- IFluctuationBizBill iHRAffairBizBill;
- IObjectPK objectPK;
- if (BillEffectEnum.SUB.getAlias().equalsIgnoreCase(effectOprate)) {
- this.isHave = FileServiceUtil.checkWorkFlowInstance(ctx, billInfo,
- "com.kingdee.eas.hr.affair.app.FluctuationBizBillEditUIFunction");
- try {
- if (!this.isHave) {
- throw new ImportException(SHRWebResource.getString("com.kingdee.eas.hr.emp.EmployeeResource",
- "CUR_USER_NOT_MATCH_PROCESS", ctx));
- }
- iHRAffairBizBill = FluctuationBizBillFactory.getLocalInstance(ctx);
- objectPK = iHRAffairBizBill.submit(billInfo);
- entryInfo.setId(BOSUuid.read(objectPK.toString()));
- } catch (EASBizException var15) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var15,
- new Object[] { var15.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- } catch (BOSException var16) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var16,
- new Object[] { var16.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- }
- } else {
- try {
- iHRAffairBizBill = FluctuationBizBillFactory.getLocalInstance(ctx);
- objectPK = iHRAffairBizBill.submitEffect(billInfo);
- entryInfo.setId(BOSUuid.read(objectPK.toString()));
- } catch (EASBizException var13) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var13,
- new Object[] { var13.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- } catch (BOSException var14) {
- e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var14,
- new Object[] { var14.getMessage() });
- throw new ImportException(e1.getMessage(), e1);
- }
- }
- }
- @Override
- public void verifyRow(BaseRowInfo row) throws ImportException {
- this.verifyRowSystem(row);
- Map<String, BaseColumnInfo> columnInfoMap = row.getMapColumnInfo();
- Iterator<Entry<String, BaseColumnInfo>> iterator = columnInfoMap.entrySet().iterator();
- Context ctx = this.getContext();
- HashMap validMap = new HashMap();
- try {
- String value;
- while (iterator.hasNext()) {
- BaseColumnInfo columnInfo = (BaseColumnInfo) ((Entry) iterator.next()).getValue();
- if (columnInfo != null) {
- value = row.getValueOfStringByIndex(columnInfo.getColumnIndex());
- validMap.put(columnInfo.getPropName(), value);
- }
- }
- validMap.put("hrBizDefine", "公司内调动");
- validMap.put("affairActionReason", "0207##调动调出");
- validMap.put("UI", this.getImportUIPK());
- validMap.put("objNum", this.getImportNum());
- value = "/dynamic.do?method=submitEffect#uri=com.kingdee.eas.hr.affair.app.FluctuationBizBill.formAll";
- validMap.put("effectUrl", value);
- String errorMsg = "";
- FluctuationImportCheck fic = new FluctuationImportCheck();
- FluctuationBizBillInfo checkInfo = new FluctuationBizBillInfo();
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkNumber(ctx, validMap, checkInfo);
- }
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkPerson(ctx, validMap);
- }
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkHrBizDefineConfig(ctx, validMap);
- }
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkActionReasonAndVariation(ctx, validMap);
- }
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkPositionAndOrgAndCompany(ctx, validMap);
- }
- if (StringUtils.isEmpty(errorMsg)) {
- errorMsg = fic.checkOldEmployeeType(ctx, validMap);
- }
- errorMsg = super.validCommonData(ctx, errorMsg, fic, validMap);
- if (!StringUtils.isEmpty(errorMsg)) {
- throw new ImportException(errorMsg);
- }
- } catch (ImportException var11) {
- throw var11;
- } catch (BOSException var12) {
- throw new ImportException(var12.getMessage(), var12);
- }
- }
-
- }
|