93942178084ecf1401e0cb2a213c2ee14c381814.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. /**
  2. *
  3. */
  4. package com.kingdee.shr.customer.gtiit.imports;
  5. import java.sql.SQLException;
  6. import java.text.MessageFormat;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. import java.util.Iterator;
  10. import java.util.Map;
  11. import java.util.Map.Entry;
  12. import org.apache.commons.lang3.StringUtils;
  13. import com.kingdee.bos.BOSException;
  14. import com.kingdee.bos.Context;
  15. import com.kingdee.bos.dao.IObjectPK;
  16. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  17. import com.kingdee.bos.metadata.entity.EntityViewInfo;
  18. import com.kingdee.bos.metadata.entity.FilterInfo;
  19. import com.kingdee.bos.metadata.entity.FilterItemInfo;
  20. import com.kingdee.bos.metadata.entity.SelectorItemCollection;
  21. import com.kingdee.bos.metadata.entity.SelectorItemInfo;
  22. import com.kingdee.bos.orm.ORMCoreException;
  23. import com.kingdee.bos.util.BOSUuid;
  24. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  25. import com.kingdee.eas.basedata.org.HROrgUnitInfo;
  26. import com.kingdee.eas.common.EASBizException;
  27. import com.kingdee.eas.framework.CoreBaseInfo;
  28. import com.kingdee.eas.hr.affair.FluctuationBizBillEntryInfo;
  29. import com.kingdee.eas.hr.affair.FluctuationBizBillFactory;
  30. import com.kingdee.eas.hr.affair.FluctuationBizBillInfo;
  31. import com.kingdee.eas.hr.affair.IFluctuationBizBill;
  32. import com.kingdee.eas.hr.base.AffairActionReasonCollection;
  33. import com.kingdee.eas.hr.base.AffairActionReasonFactory;
  34. import com.kingdee.eas.hr.base.BillEffectEnum;
  35. import com.kingdee.eas.hr.base.EmpTypeEnum;
  36. import com.kingdee.eas.hr.base.EmployeeTypeInfo;
  37. import com.kingdee.eas.hr.base.HRBillStateEnum;
  38. import com.kingdee.eas.hr.base.HRBizDefEmpTypeCollection;
  39. import com.kingdee.eas.hr.base.HRBizDefineCollection;
  40. import com.kingdee.eas.hr.base.HRBizDefineFactory;
  41. import com.kingdee.eas.hr.base.HRBizDefineInfo;
  42. import com.kingdee.eas.hr.base.app.EmpPostExperienceHisHelper;
  43. import com.kingdee.eas.hr.emp.EmpBatchAffairBizException;
  44. import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseColumnInfo;
  45. import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseRowInfo;
  46. import com.kingdee.shr.base.syssetting.app.io.fileImport.ImportException;
  47. import com.kingdee.shr.base.syssetting.app.io.fileImport.ValueCovertUtils;
  48. import com.kingdee.shr.base.syssetting.app.io.impl.FluctuationBizBillHrManImportService;
  49. import com.kingdee.shr.base.syssetting.app.io.impl.util.FileServiceUtil;
  50. import com.kingdee.shr.base.syssetting.app.io.impl.util.FluctuationImportCheck;
  51. import com.kingdee.shr.base.syssetting.context.SHRContext;
  52. import com.kingdee.shr.base.syssetting.ml.SHRWebResource;
  53. import com.kingdee.eas.hr.org.JobGradeInfo;
  54. import com.kingdee.eas.hr.org.JobLevelInfo;
  55. import com.kingdee.eas.util.app.DbUtil;
  56. import com.kingdee.jdbc.rowset.IRowSet;
  57. import com.kingdee.eas.base.permission.UserInfo;
  58. import com.kingdee.eas.basedata.person.PersonCollection;
  59. import com.kingdee.eas.basedata.person.PersonFactory;
  60. import com.kingdee.eas.basedata.person.PersonInfo;
  61. import com.kingdee.eas.basedata.org.PositionInfo;
  62. /**
  63. * @author ISSUSER 调动单导入
  64. * FluctuationBizBillHrManImportService
  65. */
  66. public class FluctImport extends FluctuationBizBillHrManImportService {
  67. String errorMsg;
  68. Context ctx = SHRContext.getInstance().getContext();
  69. @Override
  70. protected void submitData(CoreBaseInfo baseInfo) throws ImportException {
  71. String effectOprate = baseInfo.get("effectOprate").toString();
  72. Context ctx = this.getContext();
  73. UserInfo uInfo = (UserInfo) ctx.get("UserInfo");
  74. PersonInfo pInfo = uInfo.getPerson();
  75. Date now = new Date();
  76. FluctuationBizBillInfo billInfo = new FluctuationBizBillInfo();
  77. FluctuationBizBillEntryInfo entryInfo = (FluctuationBizBillEntryInfo) baseInfo;
  78. entryInfo.setOldAdminOrg((AdminOrgUnitInfo) null);
  79. entryInfo.setOldPosition((PositionInfo) null);
  80. entryInfo.setOldEmpType((EmployeeTypeInfo) null);
  81. String number = entryInfo.getString("empnumber");
  82. // 新增字段的导入 通过工号查询员工信息
  83. StringBuffer sql = new StringBuffer();
  84. 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"
  85. + "a.FAdminOrgID drementID,a.FHROrgUnitID as horgunitid,a.fpositionid as postitionid,a.fleffdt\r\n"
  86. + " 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"
  87. + " and a.fleffdt=c.fleffdt where a.FIsLatestInAday ='1' and a.fassignType = '1' and b.FNumber = '"+number+"'");
  88. try {
  89. //默认变动操作为公司内调动
  90. HRBizDefineCollection hrBizDefineColl = HRBizDefineFactory.getLocalInstance(ctx).getHRBizDefineCollection("where number = 'SHR22'");
  91. if(hrBizDefineColl != null && hrBizDefineColl.size()>0) {
  92. entryInfo.setHrBizDefine(hrBizDefineColl.get(0));
  93. }
  94. //默认变动类型为调动调出
  95. AffairActionReasonCollection affairActionReasonColl = AffairActionReasonFactory.getLocalInstance(ctx).getAffairActionReasonCollection("where number = '0207'");
  96. if(affairActionReasonColl != null && affairActionReasonColl.size()>0) {
  97. entryInfo.setAffairActionReason(affairActionReasonColl.get(0));
  98. }
  99. IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString());
  100. while (rs.next()) {
  101. // 直属上级id
  102. String lineId=rs.getString("lineId");
  103. entryInfo.put("Clmanager", lineId);
  104. //时薪
  105. String hourlyage=rs.getString("hourlyage");
  106. entryInfo.put("Chrate", hourlyage);
  107. //员工类别id
  108. String workerId=rs.getString("workerId");
  109. entryInfo.put("Workercategory", workerId);
  110. //job2id
  111. String jobsId=rs.getString("jobsId");
  112. String jobsStr = entryInfo.getString("jobs");
  113. if(StringUtils.isBlank(jobsStr)) {
  114. entryInfo.put("jobs", jobsId);
  115. }
  116. //Admin Title
  117. String adminTitle =rs.getString("admintitle");
  118. String adminTitleStr = entryInfo.getString("Admintitle");
  119. if(StringUtils.isBlank(adminTitleStr)) {
  120. entryInfo.put("Admintitle", adminTitle);
  121. }
  122. //Academic Title id
  123. String academicId=rs.getString("academicId");
  124. String academicTitleStr=entryInfo.getString("academictitle");
  125. if(StringUtils.isBlank(academicTitleStr)) {
  126. entryInfo.put("academictitle", academicId);
  127. }
  128. }
  129. } catch (BOSException e) {
  130. e.printStackTrace();
  131. } catch (ORMCoreException e) {
  132. e.printStackTrace();
  133. } catch (SQLException e) {
  134. e.printStackTrace();
  135. }
  136. EmpBatchAffairBizException e1;
  137. try {
  138. HRBizDefineInfo hrBizDefineInfo = HRBizDefineFactory.getLocalInstance(ctx)
  139. .getHRBizDefineInfo(new ObjectUuidPK(entryInfo.getHrBizDefine().getId()));
  140. EmpTypeEnum empTypeEnum = hrBizDefineInfo.getEmpTypeField();
  141. if (empTypeEnum.getValue() == 10) {
  142. entryInfo.setEmpType((EmployeeTypeInfo) null);
  143. }
  144. JobLevelInfo jobLevel = entryInfo.getJobLevel();
  145. JobGradeInfo jobGrade = entryInfo.getJobGrade();
  146. EmpPostExperienceHisHelper.fillHistory(ctx, entryInfo.getPerson().getId().toString(),
  147. entryInfo.getBizDate(), entryInfo);
  148. entryInfo.setJobLevel(jobLevel);
  149. entryInfo.setJobGrade(jobGrade);
  150. billInfo.setApplier(pInfo);
  151. billInfo.setApplyDate(now);
  152. billInfo.setBillState(HRBillStateEnum.SUBMITED);
  153. billInfo.setExtendedProperty("isAddNew", "isAddNew");
  154. if (baseInfo.get("billNumber") != null) {
  155. billInfo.setNumber(baseInfo.get("billNumber").toString());
  156. }
  157. billInfo.setHrOrgUnit((HROrgUnitInfo) baseInfo.get("hrOrgUnit"));
  158. billInfo.setAdminOrg((AdminOrgUnitInfo) baseInfo.get("adminOrg"));
  159. FileServiceUtil.checkBillNumberExist(ctx, baseInfo, billInfo);
  160. entryInfo.setBill(billInfo);
  161. billInfo.getEntrys().clear();
  162. billInfo.getEntrys().add(entryInfo);
  163. this.validEntryInfo(ctx, billInfo, entryInfo.getEmpType().getId().toString(),
  164. entryInfo.getHrBizDefine().getId().toString());
  165. } catch (BOSException var17) {
  166. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var17,
  167. new Object[] { var17.getMessage() });
  168. throw new ImportException(e1.getMessage(), e1);
  169. } catch (EASBizException var18) {
  170. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var18,
  171. new Object[] { var18.getMessage() });
  172. throw new ImportException(e1.getMessage(), e1);
  173. }
  174. this.setWorkFlow(billInfo);
  175. IFluctuationBizBill iHRAffairBizBill;
  176. IObjectPK objectPK;
  177. if (BillEffectEnum.SUB.getAlias().equalsIgnoreCase(effectOprate)) {
  178. this.isHave = FileServiceUtil.checkWorkFlowInstance(ctx, billInfo,
  179. "com.kingdee.eas.hr.affair.app.FluctuationBizBillEditUIFunction");
  180. try {
  181. if (!this.isHave) {
  182. throw new ImportException(SHRWebResource.getString("com.kingdee.eas.hr.emp.EmployeeResource",
  183. "CUR_USER_NOT_MATCH_PROCESS", ctx));
  184. }
  185. iHRAffairBizBill = FluctuationBizBillFactory.getLocalInstance(ctx);
  186. objectPK = iHRAffairBizBill.submit(billInfo);
  187. entryInfo.setId(BOSUuid.read(objectPK.toString()));
  188. } catch (EASBizException var15) {
  189. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var15,
  190. new Object[] { var15.getMessage() });
  191. throw new ImportException(e1.getMessage(), e1);
  192. } catch (BOSException var16) {
  193. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var16,
  194. new Object[] { var16.getMessage() });
  195. throw new ImportException(e1.getMessage(), e1);
  196. }
  197. } else {
  198. try {
  199. iHRAffairBizBill = FluctuationBizBillFactory.getLocalInstance(ctx);
  200. objectPK = iHRAffairBizBill.submitEffect(billInfo);
  201. entryInfo.setId(BOSUuid.read(objectPK.toString()));
  202. } catch (EASBizException var13) {
  203. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var13,
  204. new Object[] { var13.getMessage() });
  205. throw new ImportException(e1.getMessage(), e1);
  206. } catch (BOSException var14) {
  207. e1 = new EmpBatchAffairBizException(EmpBatchAffairBizException.CANNOT_IMPORT_LINE, var14,
  208. new Object[] { var14.getMessage() });
  209. throw new ImportException(e1.getMessage(), e1);
  210. }
  211. }
  212. }
  213. @Override
  214. public void verifyRow(BaseRowInfo row) throws ImportException {
  215. this.verifyRowSystem(row);
  216. Map<String, BaseColumnInfo> columnInfoMap = row.getMapColumnInfo();
  217. Iterator<Entry<String, BaseColumnInfo>> iterator = columnInfoMap.entrySet().iterator();
  218. Context ctx = this.getContext();
  219. HashMap validMap = new HashMap();
  220. try {
  221. String value;
  222. while (iterator.hasNext()) {
  223. BaseColumnInfo columnInfo = (BaseColumnInfo) ((Entry) iterator.next()).getValue();
  224. if (columnInfo != null) {
  225. value = row.getValueOfStringByIndex(columnInfo.getColumnIndex());
  226. validMap.put(columnInfo.getPropName(), value);
  227. }
  228. }
  229. validMap.put("hrBizDefine", "公司内调动");
  230. validMap.put("affairActionReason", "0207##调动调出");
  231. validMap.put("UI", this.getImportUIPK());
  232. validMap.put("objNum", this.getImportNum());
  233. value = "/dynamic.do?method=submitEffect#uri=com.kingdee.eas.hr.affair.app.FluctuationBizBill.formAll";
  234. validMap.put("effectUrl", value);
  235. String errorMsg = "";
  236. FluctuationImportCheck fic = new FluctuationImportCheck();
  237. FluctuationBizBillInfo checkInfo = new FluctuationBizBillInfo();
  238. if (StringUtils.isEmpty(errorMsg)) {
  239. errorMsg = fic.checkNumber(ctx, validMap, checkInfo);
  240. }
  241. if (StringUtils.isEmpty(errorMsg)) {
  242. errorMsg = fic.checkPerson(ctx, validMap);
  243. }
  244. if (StringUtils.isEmpty(errorMsg)) {
  245. errorMsg = fic.checkHrBizDefineConfig(ctx, validMap);
  246. }
  247. if (StringUtils.isEmpty(errorMsg)) {
  248. errorMsg = fic.checkActionReasonAndVariation(ctx, validMap);
  249. }
  250. if (StringUtils.isEmpty(errorMsg)) {
  251. errorMsg = fic.checkPositionAndOrgAndCompany(ctx, validMap);
  252. }
  253. if (StringUtils.isEmpty(errorMsg)) {
  254. errorMsg = fic.checkOldEmployeeType(ctx, validMap);
  255. }
  256. errorMsg = super.validCommonData(ctx, errorMsg, fic, validMap);
  257. if (!StringUtils.isEmpty(errorMsg)) {
  258. throw new ImportException(errorMsg);
  259. }
  260. } catch (ImportException var11) {
  261. throw var11;
  262. } catch (BOSException var12) {
  263. throw new ImportException(var12.getMessage(), var12);
  264. }
  265. }
  266. }