PROCEDURE:
CREATE OR REPLACE PROCEDURE HTCHR.copy_BonusDept_From_HRM ( orgid in number,bonusorgid in number,hrmtype in number) is BEGIN delete from HTCHR.BONUSDEPARTMENT b where B.BONUSORGANIZATION_ID = bonusorgid; insert into HTCHR.BONUSDEPARTMENT b ( B.ID, B.CODE,B.FULLNAME,B.SHORTNAME,B.ENGLISHNAME,B.REPEALED,B.DEPTLEVEL,B.PLDEPT,B.ATTRIBUTE, --B.MAINMANAGER_ID, B.BONUSORGANIZATION_ID, B.ADMINPARENT_ID ) select concat(bonusorgid,'*'||D.id), D.CODE,D.FULLNAME,D.SHORTNAME,D.ENGLISHNAME,D.REPEALED,D.DEPTLEVEL,D.PLDEPT,D.ATTRIBUTE, replace(D.ORGANIZATION_ID,D.ORGANIZATION_ID,bonusorgid), --D.MAINMANAGER_ID, case hrmtype when 1 --DLine1 then case when D.DOTTEDONEPARENT_ID is not null then concat(bonusorgid,'*'||D.DOTTEDONEPARENT_ID) else concat('',D.DOTTEDONEPARENT_ID) end when 2 --DLine2 then case when D.DOTTEDTWOPARENT_ID is not null then concat(bonusorgid,'*'||D.DOTTEDTWOPARENT_ID) else concat('',D.DOTTEDTWOPARENT_ID) end when 3 --SLine then case when D.SOLIDPARENT_ID is not null then concat(bonusorgid,'*'||D.SOLIDPARENT_ID) else concat('',D.SOLIDPARENT_ID) end else --行政 case when D.ADMINPARENT_ID is not null then concat(bonusorgid,'*'||D.ADMINPARENT_ID) else concat('',D.ADMINPARENT_ID) end end from HTCHR.DEPARTMENT d where d.ORGANIZATION_ID = orgid; end; /
JPA調用:
/** * 復制HRM組織 * * @param orgId * @param prefixStr * @param hrmType */ public void copyFromHrm(Integer orgId,Integer bonusOrgId,Integer hrmType) { Query query = entityManager.createNativeQuery("{call copy_BonusDept_From_HRM(?,?,?)}"); query.setParameter(1, orgId); query.setParameter(2, bonusOrgId); query.setParameter(3, hrmType); query.executeUpdate(); }
復制完刷新組織樹的時候需要refresh一下:
/** * 刷新bonusOrganization * * @param bonusOrganization */ public void refeshBonusOrganization(BonusOrganization bonusOrganization) { bonusOrganization.getBonusDepartments().clear(); entityManager.refresh(bonusOrganization); }