123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- package com.kingdee.eas.custom.certification.utils;
- 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.function.WfEventListenerStateManager;
- import com.kingdee.bos.util.BOSUuid;
- import com.kingdee.eas.base.permission.UserFactory;
- import com.kingdee.eas.base.permission.UserInfo;
- import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.PositionFactory;
- import com.kingdee.eas.basedata.org.PositionInfo;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.custom.sendmessage.utils.SendMessageUtils;
- import com.kingdee.eas.framework.CoreBaseInfo;
- import com.kingdee.eas.hr.affair.*;
- import com.kingdee.eas.hr.base.ApproveTypeEnum;
- import com.kingdee.eas.hr.base.EmpPosOrgRelationCollection;
- import com.kingdee.eas.hr.base.EmpPosOrgRelationFactory;
- import com.kingdee.eas.hr.base.HRBillStateEnum;
- import com.kingdee.eas.hr.emp.LabContractFirstPartyInfo;
- import com.kingdee.eas.hr.emp.PersonContactMethodInfo;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
- import com.kingdee.shr.certificationservice.*;
- import com.kingdee.shr.certificationservice.app.CertificateBillSource;
- import com.kingdee.shr.certificationservice.app.CertificateStatusEnum;
- import com.kingdee.shr.certificationservice.app.CertificationDrawUpMode;
- import com.kingdee.util.StringUtils;
- import com.kingdee.util.UuidException;
- import org.apache.commons.lang3.ObjectUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.IOException;
- import java.util.*;
- public class CreateCertification {
- private static Logger logger = LoggerFactory.getLogger(CreateCertification.class);
- /**
- * 根据离职单据id生成离职证明
- * @param ctx
- * @param billId
- * @throws BOSException
- * @throws EASBizException
- */
- public static void createCertificationById(Context ctx, String billId,int auditType) throws BOSException, EASBizException {
- IResignBizBill bizIns = ResignBizBillFactory.getLocalInstance(ctx);
- // 离职单
- ResignBizBillInfo resiInfo = bizIns.getResignBizBillInfo(new ObjectUuidPK(billId));
- ResignBizBillEntryCollection entrys = resiInfo.getEntrys();
- // List<String> billList = new ArrayList();
- for (int i = 0; i < entrys.size(); i++) {
- ResignBizBillEntryInfo resiEn = entrys.get(i);
- createCert(ctx, resiEn.getId().toString(),auditType);
- }
- }
- /**
- *
- * @param ctx
- * @param entryId
- */
- public static void createCert(Context ctx, String entryId,int auditType) {
- List<String> certIds = new ArrayList();
- HRCertificationBillInfo quitElecInfo = new HRCertificationBillInfo();
- HRCertificationBillInfo socialElecInfo = new HRCertificationBillInfo();
- try {
- IResignBizBillEntry entryIns = ResignBizBillEntryFactory.getLocalInstance(ctx);
- ResignBizBillEntryInfo resiEn = entryIns.getResignBizBillEntryInfo(new ObjectUuidPK(entryId));
- //
- IResignBizBill billIns = ResignBizBillFactory.getLocalInstance(ctx);
- ResignBizBillInfo resiInfo = billIns.getResignBizBillInfo(new ObjectUuidPK(resiEn.getBill().getId()));
- // 人员
- PersonInfo person = resiEn.getPerson();
- quitElecInfo.setPerson(person);
- socialElecInfo.setPerson(person);
- // 人事业务组织
- quitElecInfo.setHrOrgUnit(resiInfo.getHrOrgUnit());
- socialElecInfo.setHrOrgUnit(resiInfo.getHrOrgUnit());
-
- //直接审批
- if(auditType == 1){
- // 状态
- quitElecInfo.setBillState(HRBillStateEnum.SAVED);
- socialElecInfo.setBillState(HRBillStateEnum.SAVED);
- quitElecInfo.setApproveType(ApproveTypeEnum.DIRECT);
- socialElecInfo.setApproveType(ApproveTypeEnum.DIRECT);
- }else{
- quitElecInfo.setBillState(HRBillStateEnum.SUBMITED);
- socialElecInfo.setBillState(HRBillStateEnum.SUBMITED);
- quitElecInfo.setApproveType(ApproveTypeEnum.WORKFLOW);
- socialElecInfo.setApproveType(ApproveTypeEnum.WORKFLOW);
- }
- // 制单日期
- quitElecInfo.setApplyDate(new Date());
- socialElecInfo.setApplyDate(new Date());
- // 审批日期
- // quitElecInfo.setBizDate(new Date());
- // socialElecInfo.setBizDate(new Date());
- // 制单人
- quitElecInfo.setApplier(resiInfo.getApplier());
- socialElecInfo.setApplier(resiInfo.getApplier());
- // 单据来源人事
- quitElecInfo.setBillSource(CertificateBillSource.CertificateEmp);
- socialElecInfo.setBillSource(CertificateBillSource.CertificateEmp);
- //
- // quitElecInfo.put("billType", CertificateBillType.Common);
- // socialElecInfo.put("billType", CertificateBillType.Common);
- // 源单id
- quitElecInfo.put("souBillId", resiInfo.getId());
- socialElecInfo.put("souBillId", resiInfo.getId());
- //是否自动生成
- quitElecInfo.put("isAutoGen", true);
- socialElecInfo.put("isAutoGen", true);
- //是否发送
- quitElecInfo.put("isSend", false);
- socialElecInfo.put("isSend", false);
- // 快递
- quitElecInfo.setNeedExpress(false);
- socialElecInfo.setNeedExpress(false);
- //
- quitElecInfo.setFreeDate(resiEn.getBizDate());
- socialElecInfo.setFreeDate(resiEn.getBizDate());
- // 开具状态
- quitElecInfo.setCertificationStatus(CertificateStatusEnum.UnCertificated);
- socialElecInfo.setCertificationStatus(CertificateStatusEnum.UnCertificated);
- IHRCertificationBillType cerIns = HRCertificationBillTypeFactory.getLocalInstance(ctx);
- if (ObjectUtils.isNotEmpty(resiEn.get("quittemp"))) {
- CertificationTempletInfo tempInfo = (CertificationTempletInfo) resiEn.get("quittemp");
- setTempType(ctx, quitElecInfo, tempInfo);
- }
- if (ObjectUtils.isNotEmpty(resiEn.get("socialtemp"))) {
- CertificationTempletInfo tempInfo = (CertificationTempletInfo) resiEn.get("socialtemp");
- setTempType(ctx, socialElecInfo, tempInfo);
- }
- // reason 申请原因 实体
- ICertificationApplyReason reasonIns = CertificationApplyReasonFactory.getLocalInstance(ctx);
- CertificationApplyReasonInfo reasonInfo = reasonIns.getCertificationApplyReasonInfo(" where name = '离职'");
- quitElecInfo.setReason(reasonInfo);
- socialElecInfo.setReason(reasonInfo);
- // expectedTime 期望日期
- // freeDate 劳动关系解除日期
- // drawUpMode 开具形式 电子证明
- quitElecInfo.setDrawUpMode(CertificationDrawUpMode.electronic);
- socialElecInfo.setDrawUpMode(CertificationDrawUpMode.electronic);
- // labContractFirstParty 证明开具主体
- quitElecInfo.setLabContractFirstParty(resiEn.get("labContractFirstParty") == null ? null
- : (LabContractFirstPartyInfo) resiEn.get("labContractFirstParty"));
- socialElecInfo.setLabContractFirstParty(resiEn.get("labContractFirstParty") == null ? null
- : (LabContractFirstPartyInfo) resiEn.get("labContractFirstParty"));
- // certificationStatus 证明状态
- quitElecInfo.put("genFromResign", true);
- socialElecInfo.put("genFromResign", true);
- Map<String, Object> pData = new HashMap<String, Object>();
- ResignBillUtil.assemblePersonInfoDataMap(ctx, pData, person.getId().toString());
- if (ObjectUtils.isNotEmpty(pData)) {
- // 联系方式
- setContact(quitElecInfo, pData.get("personContact"));
- setContact(socialElecInfo, pData.get("personContact"));
- // adminOrg 所属行政组织
- quitElecInfo
- .setAdminOrg(pData.get("adminOrg") == null ? null : (AdminOrgUnitInfo) pData.get("adminOrg"));
- socialElecInfo
- .setAdminOrg(pData.get("adminOrg") == null ? null : (AdminOrgUnitInfo) pData.get("adminOrg"));
- // position 职位
- quitElecInfo.setPosition(pData.get("position") == null ? null : (PositionInfo) pData.get("position"));
- socialElecInfo.setPosition(pData.get("position") == null ? null : (PositionInfo) pData.get("position"));
- // enterDate 入职日期
- quitElecInfo.put("enterDate", pData.get("enterDate"));
- socialElecInfo.put("enterDate", pData.get("enterDate"));
- }
- IHRCertificationBill certIns;
- certIns = HRCertificationBillFactory.getLocalInstance(ctx);
- // 离职单如果选择了是否需要电子证明;用于判断;
- if (resiEn.getBoolean("quitElec")) {
- updateOtherInfo(ctx,quitElecInfo);
- IObjectPK addnew = certIns.addnew(quitElecInfo);
- String keyValue = StringUtils.cnulls(addnew.getKeyValue("id"));
- certIds.add(keyValue);
- }
- // 社保结算证明
- if (resiEn.getBoolean("socialElec")) {
- updateOtherInfo(ctx,quitElecInfo);
- IObjectPK addnew = certIns.addnew(socialElecInfo);
- String keyValue = StringUtils.cnulls(addnew.getKeyValue("id"));
- certIds.add(keyValue);
- }
- if (certIds.size() > 0) {
- if(auditType == 1 ){
- auditCertiBill(ctx, certIds);
- }else{
- submitCertific(ctx, certIds);
- }
- }
- } catch (BOSException e) {
- e.printStackTrace();
- } catch (EASBizException e) {
- e.printStackTrace();
- }
- }
- /**
- * 通过模板字段设置模板类型
- * @throws EASBizException
- * @throws BOSException
- */
- private static void setTempType(Context ctx, HRCertificationBillInfo certInfo, CertificationTempletInfo tempInfo)
- throws EASBizException, BOSException {
- ICertificationTemplet tempIns = CertificationTempletFactory.getLocalInstance(ctx);
- tempInfo = tempIns.getCertificationTempletInfo(new ObjectUuidPK(tempInfo.getId()));
- certInfo.setCertificationTemplet(tempInfo);
- IHRCertificationBillType cerIns = HRCertificationBillTypeFactory.getLocalInstance(ctx);
- if (ObjectUtils.isNotEmpty(tempInfo.getCertificationBillType())) {
- HRCertificationBillTypeInfo typeInfo = cerIns
- .getHRCertificationBillTypeInfo(new ObjectUuidPK(tempInfo.getCertificationBillType().getId()));
- if (null != typeInfo) {
- certInfo.setCertificationBillType(typeInfo);
- }
- }
- }
- /**
- * 联系方式
- */
- private static void setContact(HRCertificationBillInfo elecProofInfo ,Object cmInfoObj) {
- if( ObjectUtils.isNotEmpty(cmInfoObj) ) {
- PersonContactMethodInfo cmInfo = (PersonContactMethodInfo)cmInfoObj;
- //email 联系邮箱
- elecProofInfo.setEmail(cmInfo.getEmail());
- //手机号码 nCell
- elecProofInfo.setNCell( cmInfo.getNCell());
- elecProofInfo.setCallPhone(cmInfo.getNCell());
- //国际区号 globalRoaming
- elecProofInfo.setGlobalRoaming(cmInfo.getGlobalRoaming());
- }
- }
- /**
- * 审批证明单据
- */
- private static void auditCertiBill(Context ctx, List<String> bills) {
- try {
- IHRCertificationBill certiIns = HRCertificationBillFactory.getLocalInstance(ctx);
- for(int i = 0;i<bills.size();i++) {
- certiIns.auditEntryEffect(BOSUuid.read(bills.get(i)));
- }
- // Thread.sleep(3000L);
- // batchCompanySign (ctx,billList);
- } catch (BOSException e ) {
- e.printStackTrace();
- } catch (EASBizException e) {
- e.printStackTrace();
- }
- }
- private static void submitCertific(Context ctx, List<String> bills) {
- try {
- for(int i = 0;i<bills.size();i++) {
- exeSubmit(ctx,bills.get(i));
- Thread.sleep(2000);
- }
- } catch (BOSException e ) {
- e.printStackTrace();
- } catch (EASBizException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- /**
- * 签署
- * @param ctx
- */
- public static void batchCompanySign (Context ctx , List<String> billList)
- throws SHRWebException, InterruptedException, BOSException, EASBizException, IOException {
- try {
- IECertificationOptFacade eCertificationOptFacade = ECertificationOptFacadeFactory.getLocalInstance(ctx);
- for (int i = 0; i < billList.size(); i++) {
- eCertificationOptFacade.createECertification(BOSUuid.read(billList.get(i)), true);
- Thread.sleep(2000L);
- }
- } catch (EASBizException var15) {
- logger.error(var15.getMessage(), var15);
- } catch (BOSException var16) {
- logger.error(var16.getMessage(), var16);
- } catch (Exception var17) {
- logger.error(var17.getMessage(), var17);
- }
-
- }
- /**
- * 发送消息
- * @param ctx
- * @param billList
- * @throws BOSException
- * @throws EASBizException
- * @throws IOException
- */
- public static void sendMsg(Context ctx, List<String> billList) throws BOSException, EASBizException, IOException, ShrWebBizException {
- for(int i = 0;i<billList.size();i++) {
- SendMessageUtils.sendMessage(ctx, billList.get(i));
- }
- }
- /**
- * 更新其他信息
- * 提交前执行
- * @param ctx
- * @param certificationBillinfo
- */
- private static void updateOtherInfo(Context ctx, HRCertificationBillInfo certificationBillinfo) {
- try {
- if (certificationBillinfo.getAdminOrg() != null) {
- AdminOrgUnitInfo adminorg = AdminOrgUnitFactory.getLocalInstance(ctx).getAdminOrgUnitInfo(
- new ObjectUuidPK(BOSUuid.read(certificationBillinfo.getAdminOrg().getId().toString())));
- certificationBillinfo.setAdminOrgStr(adminorg.getName());
- }
- if (certificationBillinfo.getPosition() != null) {
- PositionInfo position = PositionFactory.getLocalInstance(ctx).getPositionInfo(
- new ObjectUuidPK(BOSUuid.read(certificationBillinfo.getPosition().getId().toString())));
- certificationBillinfo.setPositionStr(position.getName());
- }
- CertificationApplyReasonInfo certificationApplyReasonInfo = CertificationApplyReasonFactory
- .getLocalInstance(ctx).getCertificationApplyReasonInfo(
- new ObjectUuidPK(BOSUuid.read(certificationBillinfo.getReason().getId().toString())));
- certificationBillinfo.setApplyreasonStr(certificationApplyReasonInfo.getName());
- String personId = certificationBillinfo.getPerson().getId().toString();
- EmpPosOrgRelationCollection empPosOrgRelationCollection = EmpPosOrgRelationFactory.getLocalInstance(ctx)
- .getEmpPosOrgRelationCollection("where person='" + personId
- + "' and assignType=1 and isSystem=1 order by endDateTime desc");
- if (empPosOrgRelationCollection.size() > 0) {
- certificationBillinfo.setEmpOrgRelation(empPosOrgRelationCollection.get(0));
- }
- HRCertificationBillTypeInfo billTypeInfo = (HRCertificationBillTypeInfo) certificationBillinfo.get("certificationBillType");
- if (billTypeInfo != null) {
- String certificationBillTypeId = billTypeInfo.getId().toString();
- CertificationTempletCollection coll = CertificationTempletFactory.getLocalInstance(ctx)
- .getCertificationTempletCollection(
- "where certificationBillType = '" + certificationBillTypeId + "' and state=1");
- if (coll != null && coll.size() == 1) {
- CertificationTempletInfo tempinfo = coll.get(0);
- certificationBillinfo.setCertificationTemplet(tempinfo);
- }
- }
- } catch (EASBizException var11) {
- logger.error(var11.getMessage(), var11);
- } catch (BOSException var12) {
- logger.error(var12.getMessage(), var12);
- } catch (UuidException var13) {
- logger.error(var13.getMessage(), var13);
- }
- }
- /**
- * 调用submit方法
- */
- public static void exeSubmit(Context ctx, String billId ) throws BOSException, EASBizException {
- //提交
- try {
- IHRCertificationBill localInstance = HRCertificationBillFactory.getLocalInstance(ctx);
- HRCertificationBillInfo billInfo = localInstance.getHRCertificationBillInfo(new ObjectUuidPK(billId));
- // IObjectPK userId = ctx.getCaller();
- // UserInfo user = UserFactory.getLocalInstance(ctx).getUserByID(userId);
- // billInfo.setAuditor(user);
-
- boolean isOpen = WfEventListenerStateManager.getInstance().isEnable();
- //开启工作流事务
- if(!isOpen) {
- WfEventListenerStateManager.getInstance().enableEventListener();
- }
- localInstance.submit(billInfo);
- //如果本来工作流服务状态不是关的,将它关掉
- if(!isOpen) {
- WfEventListenerStateManager.getInstance().disableEventListener();
- }
- } catch (Exception var4) {
- var4.printStackTrace();
- }
- }
- }
|