From 52c8b86adb6907394dcfe342f5201e0dd6990859 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 21 Oct 2022 09:28:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=85=B3=E8=81=94=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/脚本/Mysql/组织架构图触发器.sql | 995 +----------------- docs/脚本/Oracle/组织架构图触发器.sql | 410 +------- docs/脚本/SqlServer/组织架构图触发器.sql | 713 +------------ .../service/impl/HrmResourceServiceImpl.java | 6 +- .../service/impl/ImportCommonServiceImpl.java | 61 +- .../service/impl/OrgChartServiceImpl.java | 49 +- .../thread/HrmResourceTriggerRunnable.java | 30 +- .../util/tree/SearchTreeUtil.java | 4 +- 8 files changed, 125 insertions(+), 2143 deletions(-) diff --git a/docs/脚本/Mysql/组织架构图触发器.sql b/docs/脚本/Mysql/组织架构图触发器.sql index 3f98d039..173ef144 100644 --- a/docs/脚本/Mysql/组织架构图触发器.sql +++ b/docs/脚本/Mysql/组织架构图触发器.sql @@ -1,973 +1,9 @@ -DELIMITER $$ -create trigger HrmCompany_ed after update on HrmCompany FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - if NEW.companyname <> OLD.companyname then - set _id=0; - set _ftype=0; - set _fobjid=0; - - set _fecid=new.id; - set _uuid=new.uuid; - set _fnumber='00'; - set _fname=new.companyname; - - set _fclass=0; - set _fclassname='行政维度'; - - select cast(fvalue as SIGNED) into _fleader from jcl_info where id=1; - - select messagerurl, lastname, jobtitle into _fleaderimg, _fleadername, _fleaderjobid from hrmresource where id=_fleader; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''), ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fleader; - - set _fparentid=-1; - - set _fobjparentid=0; - - select cast(now() as date) into _fdatebegin; - - set _fdateend='2099-12-31'; - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin); - - select count(1) into _fonjob from hrmresource where status<=3; - - set _fisvitual=0; - - delete from jcl_org_map where fobjid=0 and fdatebegin=_fdatebegin; - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where fobjid=0 and fdateend>_fdatebegin; - - insert into jcl_org_map - (id,ftype,fobjid,fecid,Uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; -END $$ -DELIMITER ; - - -DELIMITER $$ -create trigger JCL_ORG_COMP_in after INSERT on JCL_ORG_COMP FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - set _ftype=1; - - set _fobjid=new.id; - set _id=new.id; - set _uuid=new.uuid; - set _fnumber=new.comp_no; - set _fname=new.comp_name; - set _fleader=new.comp_principal; - set _fparentid=ifnull(new.parent_company,0); - set _fobjparentid=ifnull(new.parent_company,0); - set _delete=ifnull(new.forbidden_tag,0); - - select id into _fecid from HrmSubCompany where uuid=_uuid; - - set _fclass=0; - set _fclassname='行政维度'; - - select messagerurl, lastname, jobtitle into _fleaderimg,_fleadername,_fleaderjobid from hrmresource where id=_fleader; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - select ifnull(field100008,''),ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fleader; - - select cast(now() as date) into _fdatebegin; - - set _fdateend='2099-12-31'; - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and comp_id=_fobjid; - - select count(1) into _fonjob from hrmresource where status<=3 and subcompanyid1=_fecid; - - set _fisvitual=0; - - delete from jcl_org_map where ftype=1 and fobjid=_fobjid and fdatebegin=_fdatebegin; - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=1 and fobjid=_fobjid and fdateend>_fdatebegin; - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; -END $$ -DELIMITER ; - -DELIMITER $$ -create trigger JCL_ORG_COMP_ed after update on JCL_ORG_COMP FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - if NEW.comp_name <> OLD.comp_name or NEW.comp_principal <> OLD.comp_principal or NEW.parent_company <> OLD.parent_company or NEW.forbidden_tag <> OLD.forbidden_tag then - set _ftype=1; - - set _fobjid=new.id; - set _id=new.id; - set _uuid=new.uuid; - set _fnumber=new.comp_no; - set _fname=new.comp_name; - set _fleader=new.comp_principal; - set _fparentid=ifnull(new.parent_company,0); - set _fobjparentid=ifnull(new.parent_company,0); - set _delete=ifnull(new.forbidden_tag,0); - - select id into _fecid from HrmSubCompany where uuid=_uuid; - - set _fclass=0; - set _fclassname='行政维度'; - - select messagerurl, lastname, jobtitle into _fleaderimg,_fleadername,_fleaderjobid from hrmresource where id=_fleader; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - select ifnull(field100008,''),ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fleader; - - select cast(now() as date) into _fdatebegin; - - set _fdateend='2099-12-31'; - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and comp_id=_fobjid; - - select count(1) into _fonjob from hrmresource where status<=3 and subcompanyid1=_fecid; - - set _fisvitual=0; - - delete from jcl_org_map where ftype=1 and fobjid=_fobjid and fdatebegin=_fdatebegin; - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=1 and fobjid=_fobjid and fdateend>_fdatebegin; - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; - end if; -END $$ -DELIMITER ; - - -DELIMITER $$ -create trigger JCL_ORG_COMP_del after update on JCL_ORG_COMP FOR EACH ROW -begin - declare _deletetype int; - declare _ftype int; - declare _fobjid int; - declare _fdatebegin date; - - set _ftype=1; - set _fobjid =old.id; - select cast(now() as date) into _fdatebegin; - set _deletetype = new.delete_type; - if NEW.delete_type <> OLD.delete_type then - delete from jcl_org_map where ftype=1 and fobjid=_fobjid and fdatebegin=_fdatebegin; - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=1 and fobjid=_fobjid and fdateend>_fdatebegin; - end if; -END $$ -DELIMITER ; - - -DROP trigger IF EXISTS JCL_ORG_DEPT_in; -DELIMITER $$ -create trigger JCL_ORG_DEPT_in after INSERT on JCL_ORG_DEPT FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - - declare _st int; - - set _st=100000000; - - set _ftype=2; - - - set _fobjid = new.id; - set _id = new.id+_st; - set _uuid = new.uuid; - set _fnumber = new.dept_no; - set _fname = new.dept_name; - set _fleader = new.dept_principal; - set _fparentid =(case ifnull(new.parent_dept,0) when 0 then new.parent_comp else new.parent_dept+_st end); - set _fobjparentid = (case ifnull(new.parent_dept,0) when 0 then new.parent_comp else new.parent_dept end); - set _delete = ifnull(new.forbidden_tag,0); - - - - select id into _fecid from HrmDepartment where uuid=_uuid; - - set _fclass=0; - set _fclassname='行政维度'; - - - select messagerurl,lastname,jobtitle into _fleaderimg,_fleadername,_fleaderjobid from hrmresource where id=_fleader; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''),ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fleader; - - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and dept_id=_fobjid; - - - select count(1) into _fonjob from hrmresource where status<=3 and departmentid=_fecid; - - - set _fisvitual=0; - - delete from jcl_org_map where ftype=2 and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=2 and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; -END $$ -DELIMITER ; - -DROP trigger IF EXISTS JCL_ORG_dept_ed; -DELIMITER $$ -create trigger JCL_ORG_dept_ed after update on JCL_ORG_DEPT FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - - declare _st int; - if (NEW.dept_name <> OLD.dept_name or NEW.dept_principal <> OLD.dept_principal or NEW.parent_dept <> OLD.parent_dept or NEW.forbidden_tag <> OLD.forbidden_tag) then - set _st=100000000; - - set _ftype=2; - - set _fobjid = new.id; - set _id = new.id+_st; - set _uuid = new.uuid; - set _fnumber = new.dept_no; - set _fname = new.dept_name; - set _fleader = new.dept_principal; - set _fparentid = (case ifnull(new.parent_dept,0) when 0 then new.parent_comp else new.parent_dept+_st end); - set _fobjparentid = (case ifnull(new.parent_dept,0) when 0 then new.parent_comp else new.parent_dept end); - set _delete = ifnull(new.forbidden_tag,0); - - - select id into _fecid from HrmDepartment where uuid=_uuid; - - set _fclass=0; - set _fclassname='行政维度'; - - - select messagerurl, lastname, jobtitle into _fleaderimg,_fleadername,_fleaderjobid from hrmresource where id=_fleader; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''), ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fleader; - - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and dept_id=_fobjid; - - - select count(1) into _fonjob from hrmresource where status<=3 and departmentid=_fecid; - - - set _fisvitual=0; - - delete from jcl_org_map where ftype=2 and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=2 and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; - end if; -END $$ -DELIMITER ; - - - -DELIMITER $$ -create trigger JCL_ORG_dept_del after update on JCL_ORG_dept FOR EACH ROW -BEGIN - declare _deletetype int; - declare _ftype int; - declare _fobjid int; - declare _fdatebegin date; - - set _ftype=2; - set _fobjid = old.id; - select cast(now() as date) into _fdatebegin; - set _deletetype = new.delete_type; - if NEW.delete_type <> OLD.delete_type then - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - end if; -END $$ -DELIMITER ; - -DELIMITER $$ -create trigger JCL_ORG_JOB_in after INSERT on JCL_ORG_JOB FOR EACH ROW -BEGIN - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - - declare _st int; - declare _sj int; - - set _st=100000000; - - - - set _sj=200000000; - - - set _ftype=3; - - set _fobjid = new.id; - set _id = new.id+_sj; - set _fnumber = new.job_no; - set _fname = new.job_name; - set _fparentid = (case ifnull(new.parent_job,0) when 0 then new.parent_dept+_st else new.parent_job+_sj end); - set _fobjparentid = (case ifnull(new.parent_job,0) when 0 then new.parent_dept else new.parent_job end); - set _delete=ifnull(new.forbidden_tag,0); - - set _fclass=0; - set _fclassname='行政维度'; - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and job_id=_fobjid; - - - select count(1) into _fonjob from hrmresource where status<=3 - and departmentid=(select id from hrmdepartment where uuid=(select uuid from JCL_ORG_DEPT where id=new.PARENT_DEPT)) - and jobtitle in (select id from hrmjobtitles where JOBTITLENAME=new.JOB_NAME); - - - set _fisvitual=0; - - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; -END $$ -DELIMITER ; - - - -DELIMITER $$ -create trigger JCL_ORG_JOB_ed after UPDATE on JCL_ORG_JOB FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - - declare _st int; - declare _sj int; - if NEW.job_name <> OLD.job_name or NEW.parent_dept <> OLD.parent_dept or NEW.parent_job <> OLD.parent_job or NEW.forbidden_tag <> OLD.forbidden_tag then - set _st=100000000; - set _sj=200000000; - set _ftype=3; - - set _fobjid=new.id; - set _id=new.id+_sj; - set _fnumber=new.job_no; - set _fname=new.job_name; - set _fparentid=(case ifnull(new.parent_job,0) when 0 then new.parent_dept+_st else new.parent_job+_sj end); - set _fobjparentid=(case ifnull(new.parent_job,0) when 0 then new.parent_dept else new.parent_job end); - set _delete=ifnull(new.forbidden_tag,0); - - - set _fclass=0; - set _fclassname='行政维度'; - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - select sum(ifnull(staff_num,0)) into _fplan from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=_fdatebegin and time_end>=_fdatebegin) - and job_id=_fobjid; - - - select count(1) into _fonjob from hrmresource where status<=3 - and departmentid=(select id from hrmdepartment where uuid=(select uuid from JCL_ORG_DEPT where id=new.PARENT_DEPT)) - and jobtitle in (select id from hrmjobtitles where JOBTITLENAME=new.JOB_NAME); - - - set _fisvitual=0; - - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; - end if; -END $$ -DELIMITER ; - - - - - -DELIMITER $$ -create trigger JCL_ORG_job_del after update on JCL_ORG_JOB FOR EACH ROW -begin - declare _deletetype int; - declare _ftype int; - declare _fobjid int; - declare _fdatebegin date; - - set _ftype=3; - set _fobjid = old.id; - select cast(now() as date) into _fdatebegin; - set _deletetype = new.delete_type; - if NEW.delete_type <> OLD.delete_type then - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - end if; -END $$ -DELIMITER ; - - -DELIMITER $$ -create trigger hrmresource_in after INSERT on hrmresource FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - declare _wz int; - declare _str varchar(100); - declare _st int; - declare _sj int; - declare _sk int; - set _st=100000000; - set _sj=200000000; - set _sk=300000000; - set _ftype=4; - - set _fobjid=new.id; - set _id=new.id+_sk; - set _fnumber=new.workcode; - set _fname=new.lastname; - set _delete=case when new.status<=3 then 0 else 1 end; - set _fleaderimg=new.messagerurl; - set _fleadername=new.lastname; - set _fleaderjobid=new.jobtitle; - - - select ifnull(field100002,'') into _str from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fobjid; - set _wz=LOCATE('_',_str); - set _fobjparentid=cast(right(_str,length(_str)-_wz) as SIGNED); - set _fparentid=_fobjparentid+_sj; - - - set _fclass=0; - set _fclassname='行政维度'; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''),ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fobjid; - - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - set _fisvitual=0; - - - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; -END $$ -DELIMITER ; - - -DELIMITER $$ -create trigger hrmresource_ed after update on hrmresource FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - declare _wz int; - declare _str varchar(100); - declare _st int; - declare _sj int; - declare _sk int; - if NEW.lastname <> OLD.lastname or NEW.status <> OLD.status then - set _st=100000000; - set _sj=200000000; - set _sk=300000000; - set _ftype=4; - - set _fobjid=new.id; - set _id=new.id+_sk; - set _fnumber=new.workcode; - set _fname=new.lastname; - set _delete=case when new.status<=3 then 0 else 1 end; - set _fleaderimg=new.messagerurl; - set _fleadername=new.lastname; - set _fleaderjobid=new.jobtitle; - - - select ifnull(field100002,'') into _str from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fobjid; - set _wz=LOCATE('_',_str); - set _fobjparentid=cast(right(_str,length(_str)-_wz) as SIGNED); - set _fparentid=_fobjparentid+_sj; - - - set _fclass=0; - set _fclassname='行政维度'; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''),ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fobjid; - - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - set _fisvitual=0; - - - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; - end if; -END $$ -DELIMITER ; - - -DROP trigger IF EXISTS cus_fielddata_jclgw; -DELIMITER $$ -create trigger cus_fielddata_jclgw after UPDATE on cus_fielddata FOR EACH ROW -begin - declare _ftype int; - declare _id int; - declare _fobjid int; - declare _fecid int; - declare _uuid varchar(100); - declare _fclass int; - declare _fclassname varchar(100); - declare _fnumber varchar(100); - declare _fname varchar(255); - declare _fleader int; - - declare _fleaderimg varchar(255); - declare _fleadername varchar(100); - declare _fleaderjobid int; - declare _fleaderjob varchar(255); - declare _fleaderlv varchar(100); - declare _fleaderst varchar(100); - declare _fparentid int; - declare _fobjparentid int; - declare _fplan int; - declare _fonjob int; - declare _fisvitual int; - declare _fdatebegin date; - declare _fdateend date; - declare _delete int; - declare _wz int; - declare _str varchar(100); - declare _st int; - declare _sj int; - declare _sk int; - if NEW.field100002 <> OLD.field100002 then - set _st=100000000; - set _sj=200000000; - set _sk=300000000; - set _ftype=4; - - - set _fobjid=new.id; - set _id=new.id+_sk; - set _str=ifnull(new.field100002,''); - - select workcode, lastname, case when status <= 3 then 0 else 1 end, messagerurl, lastname, jobtitle into _fnumber, _fname , _delete, _fleaderimg , _fleadername, _fleaderjobid from hrmresource where id = _fobjid; - - - set _wz=LOCATE('_',_str); - set _fobjparentid=cast(right(_str,length(_str)-_wz) as SIGNED); - set _fparentid=_fobjparentid+_sj; - - set _fclass=0; - set _fclassname='行政维度'; - - select jobtitlemark into _fleaderjob from hrmjobtitles where id=_fleaderjobid; - - - select ifnull(field100008,''), ifnull(field100007,'') into _fleaderst,_fleaderlv from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=_fobjid; - - - select cast(now() as date) into _fdatebegin; - - - set _fdateend='2099-12-31'; - - - set _fisvitual=0; - - delete from jcl_org_map where ftype=_ftype and fobjid=_fobjid and fdatebegin=_fdatebegin; - - - update jcl_org_map set fdateend=date_add(_fdatebegin,interval -1 day) where ftype=_ftype and fobjid=_fobjid and fdateend>_fdatebegin; - - - if _delete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (_id,_ftype,_fobjid,_fecid,_uuid,_fclass,_fclassname,_fnumber,_fname,_fleader,_fleaderimg, - _fleadername,_fleaderjobid,_fleaderjob,_fleaderlv,_fleaderst,_fparentid,_fobjparentid, - _fplan,_fonjob,_fisvitual,_fdatebegin,_fdateend); - end if; - end if; -END $$ -DELIMITER ; - - - - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id,1,a.id,b.id,a.uuid,0,'行政维度',a.comp_no,a.comp_name,a.comp_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008,ifnull(parent_company,0),ifnull(parent_company,0), + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade,ifnull(parent_company,0),ifnull(parent_company,0), ifnull(e.fcnt,0),ifnull(f.fcnt,0),0,NOW(),'2099-12-31' from JCL_ORG_comp as a @@ -980,7 +16,7 @@ from group by comp_id) e on a.id=e.comp_id left join (select subcompanyid1,count(1) fcnt from hrmresource where status<=3 group by subcompanyid1) f on f.subcompanyid1=b.id - left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 + left join jcl_org_hrmresource g on c.uuid=g.uuid where ifnull(a.delete_type,0) <>1 and ifnull(a.forbidden_tag,0) <>1; @@ -991,7 +27,7 @@ insert into jcl_org_map fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id+100000000,2,a.id,b.id,a.uuid,0,'行政维度',a.dept_no,a.dept_name,a.dept_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008, + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade, (case ifnull(parent_dept,0) when 0 then parent_comp else parent_dept+100000000 end), (case ifnull(parent_dept,0) when 0 then parent_comp else parent_dept end), ifnull(e.fcnt,0),ifnull(f.fcnt,0),0,NOW(),'2099-12-31' @@ -1005,7 +41,7 @@ from where time_start<=NOW() and time_end>NOW()) group by dept_id) e on a.id=e.dept_id left join (select departmentid,count(1) fcnt from hrmresource where status<=3 group by departmentid) f on f.departmentid=b.id - left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 + left join jcl_org_hrmresource g ON c.uuid = g.uuid where ifnull(a.delete_type,0) <>1 and ifnull(a.forbidden_tag,0) <>1; @@ -1032,27 +68,18 @@ from JCL_ORG_job as a where ifnull(a.delete_type,0) <>1 and ifnull(a.forbidden_tag,0) <>1 and a.id>=10; -delete from cus_fielddata where scopeid=-1; -insert into cus_fielddata(scope, scopeid, id, field100002) -select 'HrmCustomFieldByInfoType',-1,a.id,e.id -from hrmresource a - left join HrmJobTitles b on a.jobtitle=b.id - left join hrmdepartment c on a.departmentid=c.id - left join JCL_ORG_DEPT d on c.uuid=d.uuid - left join jcl_org_job e on d.id=e.parent_dept and e.job_name=b.jobtitlename; - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fisvitual,fdatebegin,fdateend) -select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.workcode,a.lastname,a.messagerurl,a.jobtitle, - b.jobtitlemark,c.field100007,c.field100008, - right(ifnull(field100002,''),LENGTH(ifnull(field100002,''))-LOCATE('_',ifnull(field100002,''))) +200000000, - right(ifnull(field100002,''),LENGTH(ifnull(field100002,''))-LOCATE('_',ifnull(field100002,''))), +select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.work_code,a.last_name,c.messagerurl,b.id, + b.job_name,a.job_level,a.job_grade, + ifnull( b.id, '' ) +200000000, + b.id, 0,NOW(),'2099-12-31' -from hrmresource a - left join hrmjobtitles b on a.jobtitle=b.id - left join cus_fielddata c on a.id=c.id and c.scope='HrmCustomFieldByInfoType' and c.scopeid=-1 +from jcl_org_hrmresource a + left join jcl_org_job b ON a.job_title = b.id + left join hrmresource c on a.uuid = c.uuid where a.status<4; insert into jcl_org_map diff --git a/docs/脚本/Oracle/组织架构图触发器.sql b/docs/脚本/Oracle/组织架构图触发器.sql index 75277090..0e72604e 100644 --- a/docs/脚本/Oracle/组织架构图触发器.sql +++ b/docs/脚本/Oracle/组织架构图触发器.sql @@ -1,380 +1,3 @@ -create or replace trigger HrmCompany_ed before update on HrmCompany FOR EACH ROW -declare -vleader int; - vleaderimg varchar2(255); - vleadername varchar2(100); - vleaderjobid int; - vleaderjob varchar2(255); - vleaderlv varchar2(100); - vleaderst varchar2(100); - vdatebegin date; - vplan int; - vonjob int; - vcnt int; -begin - if :new.companyname!=:old.companyname then - -select count(1) into vcnt from jcl_info where id=1; -if vcnt=1 then -select to_number(fvalue) into vleader from jcl_info where id=1; -end if; - -select count(1) into vcnt from hrmresource where id=vleader; -if vcnt=1 then -select messagerurl,lastname,jobtitle into vleaderimg,vleadername,vleaderjobid -from hrmresource where id=vleader; -end if; - -select count(1) into vcnt from hrmjobtitles where id=vleaderjobid; -if vcnt=1 then -select jobtitlemark into vleaderjob from hrmjobtitles where id=vleaderjobid; -end if; - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=vleader; -if vcnt=1 then -select nvl(field100008,''),nvl(field100007,'') into vleaderst,vleaderlv from cus_fielddata -where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=vleader; -end if; - - vdatebegin:=sysdate; - -select sum(nvl(staff_num,0)) into vplan from JCL_ORG_STAFF -where plan_id in (select id from JCL_ORG_STAFFPLAN where time_start<=vdatebegin and time_end>=vdatebegin); - -select count(1) into vonjob from hrmresource where status<=3; - -delete from jcl_org_map where fobjid=0 and fdatebegin=vdatebegin; - -update jcl_org_map set fdateend=vdatebegin-1 where fobjid=0 and fdateend>vdatebegin; - -insert into jcl_org_map -(id,ftype,fobjid,fecid,Uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) -values - (0,0,0,:new.id,:new.uuid,0,'行政维度','00',:new.companyname,vleader,vleaderimg, - vleadername,vleaderjobid,vleaderjob,vleaderlv,vleaderst,-1,0, - vplan,vonjob,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); - -end if; -end; -/ - -create or replace trigger JCL_ORG_COMP_ed after insert or update on JCL_ORG_COMP FOR EACH ROW -declare -vdatebegin date; - vecid int; - vleaderimg varchar2(255); - vleadername varchar2(100); - vleaderjobid int; - vleaderjob varchar2(255); - vleaderlv varchar2(100); - vleaderst varchar2(100); - vparentid int; - vobjparentid int; - vplan int; - vonjob int; - vcnt int; -begin - if :new.comp_name!=:old.comp_name or :new.comp_principal!=:old.comp_principal or :new.parent_company!=:old.parent_company - or :new.forbidden_tag!=:old.forbidden_tag or :new.DELETE_TYPE!=:old.DELETE_TYPE then - - vdatebegin:=sysdate; - vparentid:=nvl(:new.parent_company,0); - vobjparentid:=nvl(:new.parent_company,0); - -select count(1) into vcnt from HrmSubCompany where uuid=:new.uuid; -if vcnt=1 then -select id into vecid from HrmSubCompany where uuid=:new.uuid; -end if; - -select count(1) into vcnt from hrmresource where id=:new.comp_principal; -if vcnt=1 then -select messagerurl,lastname,jobtitle into vleaderimg,vleadername,vleaderjobid from hrmresource where id=:new.comp_principal; -end if; - -select count(1) into vcnt from hrmjobtitles where id=vleaderjobid; -if vcnt=1 then -select jobtitlemark into vleaderjob from hrmjobtitles where id=vleaderjobid; -end if; - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.comp_principal; -if vcnt=1 then -select nvl(field100008,''),nvl(field100007,'') into vleaderst,vleaderlv from cus_fielddata -where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.comp_principal; -end if; - -select sum(nvl(staff_num,0)) into vplan from JCL_ORG_STAFF; -select count(1) into vonjob from hrmresource where status<=3 and subcompanyid1=vecid; - -delete from jcl_org_map where ftype=1 and fobjid=:new.id and fdatebegin=vdatebegin; -update jcl_org_map set fdateend=vdatebegin-1 where ftype=1 and fobjid=:new.id and fdateend>vdatebegin; -if nvl(:new.DELETE_TYPE,0)=0 and nvl(:new.forbidden_tag,0)=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (:new.id,1,:new.id,vecid,:new.uuid,0,'行政维度',:new.comp_no,:new.comp_name,:new.comp_principal, - vleaderimg,vleadername,vleaderjobid,vleaderjob,vleaderlv,vleaderst,vparentid,vobjparentid, - vplan,vonjob,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); -end if; -end if; -end; -/ - -create or replace trigger JCL_ORG_dept_ed after insert or update on JCL_ORG_dept FOR EACH ROW -declare -st int; - vdatebegin date; - vparentid int; - vobjparentid int; - vecid int; - vleaderimg VARCHAR2(200); - vleadername VARCHAR2(200); - veaderjobid int; - vleaderjob VARCHAR2(255); - vleaderst VARCHAR2(255); - vleaderlv VARCHAR2(255); - vplan int; - vonjob int; - vcnt int; -begin - if :new.dept_name!=:old.dept_name or :new.dept_principal!=:old.dept_principal or :new.parent_comp!=:old.parent_comp - or :new.parent_dept!=:old.parent_dept or :new.forbidden_tag!=:old.forbidden_tag or :new.DELETE_TYPE!=:old.DELETE_TYPE then - - st:=100000000; - vdatebegin:=sysdate; - if :new.parent_dept=0 then - vparentid:=:new.parent_comp; -else - vparentid:=:new.parent_dept+st; -end if; - - if nvl(:new.parent_dept,0)=0 then - vobjparentid:=:new.parent_comp; -else - vobjparentid:=:new.parent_dept+st; -end if; - -select count(1) into vcnt from HrmDepartment where uuid=:new.uuid; -if vcnt=1 then -select id into vecid from HrmDepartment where uuid=:new.uuid; -end if; - -select count(1) into vcnt from hrmresource where id=:new.dept_principal; -if vcnt=1 then -select messagerurl,lastname,jobtitle into vleaderimg,vleadername,veaderjobid -from hrmresource where id=:new.dept_principal; -end if; - -select count(1) into vcnt from hrmjobtitles where id=:new.dept_principal; -if vcnt=1 then -select jobtitlemark into vleaderjob from hrmjobtitles where id=:new.dept_principal; - -end if; - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.dept_principal; -if vcnt=1 then -select nvl(field100008,''),nvl(field100007,'') into vleaderst,vleaderlv from cus_fielddata -where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.dept_principal; -end if; - -select sum(nvl(staff_num,0)) into vplan from JCL_ORG_STAFF -where plan_id in (select id from JCL_ORG_STAFFPLAN where time_start<=vdatebegin and time_end>=vdatebegin) and dept_id=:new.id; - -select count(1) into vonjob from hrmresource where status<=3 and departmentid=vecid; - -delete from jcl_org_map where ftype=2 and fobjid=:new.id and fdatebegin=vdatebegin; -update jcl_org_map set fdateend=vdatebegin-1 where ftype=2 and fobjid=:new.id and fdateend>vdatebegin; - -if nvl(:new.forbidden_tag,0)=0 and nvl(:new.DELETE_TYPE,0)=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (:new.id+st,2,:new.id,vecid,:new.uuid,0,'行政维度',:new.dept_no,:new.dept_name,:new.dept_principal, - vleaderimg,vleadername,veaderjobid,vleaderjob,vleaderlv,vleaderst,vparentid,vobjparentid, - vplan,vonjob,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); -end if; -end if; -end; -/ - - -create or replace trigger JCL_ORG_job_ed after insert or update on JCL_ORG_job FOR EACH ROW -declare -st int; - sj int; - vplan int; - vonjob int; - vdatebegin date; - vparentid int; - vobjparentid int; -begin - if :new.job_name!=:old.job_name or :new.parent_dept!=:old.parent_dept or :new.parent_job!=:old.parent_job - or :new.forbidden_tag!=:old.forbidden_tag or :new.DELETE_TYPE!=:old.DELETE_TYPE then - st:=100000000; - sj:=200000000; - vdatebegin:=to_date(sysdate); - -select case nvl(:new.parent_job,0) when 0 then :new.parent_dept+st else :new.parent_job+sj end, - case nvl(:new.parent_job,0) when 0 then :new.parent_dept else :new.parent_job end -into vparentid,vobjparentid from dual; - -select sum(nvl(staff_num,0)) into vplan from JCL_ORG_STAFF -where plan_id in (select id from JCL_ORG_STAFFPLAN where time_start<=vdatebegin and time_end>=vdatebegin) and job_id=:new.id; - -select count(1) into vonjob from hrmresource where status<=3 - and departmentid=(select id from hrmdepartment where uuid=(select uuid from JCL_ORG_DEPT where id=:new.PARENT_DEPT)) - and jobtitle in (select id from hrmjobtitles where JOBTITLENAME=:new.JOB_NAME); - -delete from jcl_org_map where ftype=3 and fobjid=:new.id and fdatebegin=vdatebegin; -update jcl_org_map set fdateend=vdatebegin-1 where ftype=3 and fobjid=:new.id and fdateend>vdatebegin; - -if nvl(:new.forbidden_tag,0)=0 and nvl(:new.DELETE_TYPE,0)=0 then - insert into jcl_org_map - (id,ftype,fobjid,fclass,fclassname,fnumber,fname,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (:new.id+sj,3,:new.id,0,'行政维度',:new.job_no,:new.job_name,vparentid,vobjparentid, - vplan,vonjob,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); -end if; -end if; -end; -/ - -create or replace trigger hrmresource_ed after insert or update on hrmresource FOR EACH ROW -declare -st int; - sj int; - sk int; - vdatebegin date; - vdelete int; - vleaderjob VARCHAR2(255); - vparentid int; - vobjparentid int; - vleaderst VARCHAR2(255); - vleaderlv VARCHAR2(255); - vstr VARCHAR2(255); - vwz int; - vcnt int; -begin - if :new.lastname!=:old.lastname or :new.status!=:old.status then - st:=100000000; - sj:=200000000; - sk:=300000000; - vdatebegin:=to_date(sysdate); - - if :new.status<=3 then - vdelete:=0; -else - vdelete:=1; -end if; - -select count(1) into vcnt from hrmjobtitles where id=:new.jobtitle; -if vcnt=1 then -select jobtitlemark into vleaderjob from hrmjobtitles where id=:new.jobtitle; -end if; - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.id; -if vcnt=1 then -select nvl(field100008,''),nvl(field100007,'') into vleaderst,vleaderlv from cus_fielddata -where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.id; -end if; - -delete from jcl_org_map where ftype=4 and fobjid=:new.id and fdatebegin=vdatebegin; - -update jcl_org_map set fdateend=vdatebegin-1 where ftype=4 and fobjid=:new.id and fdateend>vdatebegin; - - - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=-1 and id=:new.id; -if vcnt=1 then -select nvl(field100002,'') into vstr from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=-1 and id=:new.id; -end if; - - vwz:=Instr(vstr,'_'); - vobjparentid:=to_number(substr(vstr,vwz+1,length(vstr)-vwz)); - vparentid:=vobjparentid+sj; - - if vdelete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid,fisvitual,fdatebegin,fdateend) - values - (:new.id+sk,4,:new.id,:new.id,:new.uuid,0,'行政维度',:new.workcode,:new.lastname,:new.messagerurl, - :new.lastname,:new.jobtitle,vleaderjob,vleaderlv,vleaderst,vparentid,vobjparentid,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); -end if; -end if; -end; -/ - -create or replace trigger cus_fielddata_jclgw after insert or update on cus_fielddata FOR EACH ROW -declare -st int; - sj int; - sk int; - vnumber VARCHAR2(255); - vname VARCHAR2(255); - vleaderimg VARCHAR2(255); - vleadername VARCHAR2(255); - vleaderjobid VARCHAR2(255); - vuuid VARCHAR2(255); - vdatebegin date; - vdelete int; - vleaderjob VARCHAR2(255); - vparentid int; - vobjparentid int; - vleaderst VARCHAR2(255); - vleaderlv VARCHAR2(255); - vstr VARCHAR2(255); - vwz int; - vcnt int; -begin - if :new.field100002!=:old.field100002 then - st:=100000000; - sj:=200000000; - sk:=300000000; - vdatebegin:=to_date(sysdate); - -select count(1) into vcnt from hrmresource where id=:new.id; -if vcnt=1 then -select workcode,lastname,case when status<=3 then 0 else 1 end,messagerurl,lastname,jobtitle,uuid -into vnumber,vname,vdelete,vleaderimg,vleadername,vleaderjobid,vuuid from hrmresource where id=:new.id; -end if; - -select count(1) into vcnt from hrmjobtitles where id=vleaderjobid; -if vcnt=1 then -select jobtitlemark into vleaderjob from hrmjobtitles where id=vleaderjobid; -end if; - -select count(1) into vcnt from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.id; -if vcnt=1 then -select nvl(field100008,''),nvl(field100007,'') into vleaderst,vleaderlv from cus_fielddata -where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.id; -end if; - - vstr:=nvl(:new.field100002,''); - vwz:=Instr(vstr,'_'); - vobjparentid:=to_number(substr(vstr,vwz+1,length(vstr)-vwz)); - vparentid:=vobjparentid+sj; - -delete from jcl_org_map where ftype=4 and fobjid=:new.id and fdatebegin=vdatebegin; -update jcl_org_map set fdateend=vdatebegin-1 where ftype=4 and fobjid=:new.id and fdateend>vdatebegin; -if vdelete=0 then - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid,fisvitual,fdatebegin,fdateend) - values - (:new.id+sk,4,:new.id,:new.id,vuuid,0,'行政维度',vnumber,vname,vleaderimg, - vleadername,vleaderjobid,vleaderjob,vleaderlv,vleaderst,vparentid,vobjparentid,0,vdatebegin,to_date('2099-12-31','yyyy-mm-dd')); -end if; -end if; -end; -/ - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, @@ -387,7 +10,7 @@ insert into jcl_org_map fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id,1,a.id,b.id,a.uuid,0,'行政维度',a.comp_no,a.comp_name,a.comp_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008,nvl(parent_company,0),nvl(parent_company,0), + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade,nvl(parent_company,0),nvl(parent_company,0), nvl(e.fcnt,0),nvl(f.fcnt,0),0,to_date(sysdate),to_date('2099-12-31','yyyy-mm-dd') from JCL_ORG_comp a @@ -400,7 +23,7 @@ from group by comp_id) e on a.id=e.comp_id left join (select subcompanyid1,count(1) fcnt from hrmresource where status<=3 group by subcompanyid1) f on f.subcompanyid1=b.id - left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 + left join jcl_org_hrmresource g ON c.uuid = g.uuid where nvl(a.delete_type,0) <>1 and nvl(a.forbidden_tag,0) <>1 / @@ -409,7 +32,7 @@ insert into jcl_org_map fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id+100000000,2,a.id,b.id,a.uuid,0,'行政维度',a.dept_no,a.dept_name,a.dept_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008, + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade, (case nvl(parent_dept,0) when 0 then parent_comp else parent_dept+100000000 end), (case nvl(parent_dept,0) when 0 then parent_comp else parent_dept end), nvl(e.fcnt,0),nvl(f.fcnt,0),0,to_date(sysdate),to_date('2099-12-31','yyyy-mm-dd') @@ -423,7 +46,7 @@ from where time_start<=to_date(sysdate) and time_end>to_date(sysdate)) group by dept_id) e on a.id=e.dept_id left join (select departmentid,count(1) fcnt from hrmresource where status<=3 group by departmentid) f on f.departmentid=b.id - left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 + left join jcl_org_hrmresource g ON c.uuid = g.uuid where nvl(a.delete_type,0) <>1 and nvl(a.forbidden_tag,0) <>1 / @@ -450,28 +73,17 @@ from JCL_ORG_job a where nvl(a.delete_type,0) <>1 and nvl(a.forbidden_tag,0) <>1 / -delete from cus_fielddata where scopeid=-1 -/ -insert into cus_fielddata(scope, scopeid, id, field100002) -select 'HrmCustomFieldByInfoType',-1,a.id,'199_'||to_char(e.id) -from hrmresource a - left join HrmJobTitles b on a.jobtitle=b.id - left join hrmdepartment c on a.departmentid=c.id - left join JCL_ORG_DEPT d on c.uuid=d.uuid - left join jcl_org_job e on d.id=e.parent_dept and e.job_name=b.jobtitlename -/ - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fisvitual,fdatebegin,fdateend) -select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.workcode,a.lastname,a.messagerurl,a.jobtitle, - b.jobtitlemark,c.field100007,c.field100008, - to_number(substr(nvl(field100002,''),instr(nvl(field100002,''),'_')+1,length(nvl(field100002,''))-instr(nvl(field100002,''),'_')))+200000000, - to_number(substr(nvl(field100002,''),instr(nvl(field100002,''),'_')+1,length(nvl(field100002,''))-instr(nvl(field100002,''),'_'))), +select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.work_code,a.last_name,c.messagerurl,b.id , + b.job_name,a.job_level,a.job_grade, + to_number(nvl(b.id,''))+200000000, + to_number(nvl(b.id,'')), 0,to_date(sysdate),to_date('2099-12-31','yyyy-mm-dd') -from hrmresource a - left join hrmjobtitles b on a.jobtitle=b.id - left join cus_fielddata c on a.id=c.id and c.scope='HrmCustomFieldByInfoType' and c.scopeid=-1 +from jcl_org_hrmresource a + left join jcl_org_job b ON a.job_title = b.id + left join hrmresource c on a.uuid = c.uuid where a.status<4 / \ No newline at end of file diff --git a/docs/脚本/SqlServer/组织架构图触发器.sql b/docs/脚本/SqlServer/组织架构图触发器.sql index cef7bc76..28d78dc7 100644 --- a/docs/脚本/SqlServer/组织架构图触发器.sql +++ b/docs/脚本/SqlServer/组织架构图触发器.sql @@ -1,687 +1,9 @@ - - -create trigger HrmCompany_ed on HrmCompany after update as - - if update(companyname) - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - - - set @id=0 - - - set @ftype=0 - - - set @fobjid=0 - - - select @fecid=id,@uuid=uuid,@fnumber='00',@fname=companyname from inserted - - - set @fclass=0 - set @fclassname='行政维度' - - - - select @fleader=cast(fvalue as int) from jcl_info where id=1 - - select @fleaderimg=messagerurl,@fleadername=lastname,@fleaderjobid=jobtitle - from hrmresource where id=@fleader - - select @fleaderjob=jobtitlemark from hrmjobtitles where id=@fleaderjobid - - - select @fleaderst=isnull(field100008,''),@fleaderlv=isnull(field100007,'') from cus_fielddata - where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fleader - - - set @fparentid=-1 - - - set @fobjparentid=0 - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - select @fplan=sum(isnull(staff_num,0)) from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=@fdatebegin and time_end>=@fdatebegin) - - - select @fonjob=count(1) from hrmresource where status<=3 - - - set @fisvitual=0 - - - delete from jcl_org_map where fobjid=0 and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where fobjid=0 and fdateend>@fdatebegin - - insert into jcl_org_map - (id,ftype,fobjid,fecid,Uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end -go - - -create trigger JCL_ORG_COMP_ed on JCL_ORG_COMP after update,insert as - - if update(comp_name) or update(comp_principal) or update(parent_company) or update(forbidden_tag) - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - declare @delete int - - set @ftype=1 - - - select @fobjid=id,@id=id,@uuid=uuid,@fnumber=comp_no,@fname=comp_name, - @fleader=comp_principal,@fparentid=isnull(parent_company,0), - @fobjparentid=isnull(parent_company,0),@delete=isnull(forbidden_tag,0) - from inserted - - - select @fecid=id from HrmSubCompany where uuid=@uuid - - - set @fclass=0 - set @fclassname='行政维度' - - - select @fleaderimg=messagerurl,@fleadername=lastname,@fleaderjobid=jobtitle - from hrmresource where id=@fleader - - select @fleaderjob=jobtitlemark from hrmjobtitles where id=@fleaderjobid - - - select @fleaderst=isnull(field100008,''),@fleaderlv=isnull(field100007,'') from cus_fielddata - where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fleader - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - select @fplan=sum(isnull(staff_num,0)) from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=@fdatebegin and time_end>=@fdatebegin) - and comp_id=@fobjid; - - - select @fonjob=count(1) from hrmresource where status<=3 and subcompanyid1=@fecid - - - set @fisvitual=0 - SET NOCOUNT ON - - delete from jcl_org_map where ftype=1 and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=1 and fobjid=@fobjid and fdateend>@fdatebegin - - - if @delete=0 - begin - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end - SET NOCOUNT OFF - end -go - -create trigger JCL_ORG_COMP_del on JCL_ORG_COMP after update as - if update(delete_type) - begin - - declare @deletetype int - declare @ftype int - declare @fobjid int - declare @fdatebegin date - - set @ftype=1 - select @fobjid=id from deleted - select @fdatebegin=cast(GETDATE() as date) - - select @deletetype=isnull(delete_type,0) from inserted - - if @deletetype=1 - begin - delete from jcl_org_map where ftype=1 and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=1 and fobjid=@fobjid and fdateend>@fdatebegin - end - end -go - - - - -create trigger JCL_ORG_dept_ed on JCL_ORG_dept after update,insert as - - if update(dept_name) or update(dept_principal) or update(parent_comp) or update(parent_dept) or update(forbidden_tag) - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - declare @delete int - - declare @st int - - set @st=100000000 - - set @ftype=2 - - - select @fobjid=id,@id=id+@st,@uuid=uuid,@fnumber=dept_no,@fname=dept_name, - @fleader=dept_principal, - @fparentid=(case isnull(parent_dept,0) when 0 then parent_comp else parent_dept+@st end), - @fobjparentid=(case isnull(parent_dept,0) when 0 then parent_comp else parent_dept end), - @delete=isnull(forbidden_tag,0) - from inserted - - - select @fecid=id from HrmDepartment where uuid=@uuid - - set @fclass=0 - set @fclassname='行政维度' - - - select @fleaderimg=messagerurl,@fleadername=lastname,@fleaderjobid=jobtitle - from hrmresource where id=@fleader - - select @fleaderjob=jobtitlemark from hrmjobtitles where id=@fleaderjobid - - - select @fleaderst=isnull(field100008,''),@fleaderlv=isnull(field100007,'') from cus_fielddata - where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fleader - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - select @fplan=sum(isnull(staff_num,0)) from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=@fdatebegin and time_end>=@fdatebegin) - and dept_id=@fobjid - - - select @fonjob=count(1) from hrmresource where status<=3 and departmentid=@fecid - - - set @fisvitual=0 - SET NOCOUNT ON - - delete from jcl_org_map where ftype=2 and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=2 and fobjid=@fobjid and fdateend>@fdatebegin - - - if @delete=0 - begin - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end - SET NOCOUNT OFF - end -go - -create trigger JCL_ORG_dept_del on JCL_ORG_dept after update as -if update(delete_type) - begin - declare @deletetype int - declare @ftype int - declare @fobjid int - declare @fdatebegin date - - set @ftype=2 - select @fobjid=id from deleted - select @fdatebegin=cast(GETDATE() as date) - select @deletetype=isnull(delete_type,0) from inserted - if @deletetype=1 - begin - delete from jcl_org_map where ftype=@ftype and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=@ftype and fobjid=@fobjid and fdateend>@fdatebegin - end - end -go - - - -create trigger JCL_ORG_job_ed on JCL_ORG_job after update,insert as - - if update(job_name) or update(parent_dept) or update(parent_job) or update(forbidden_tag) - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - declare @delete int - declare @parentdept int - - declare @st int - - set @st=100000000 - - declare @sj int - - set @sj=200000000 - - - set @ftype=3 - - - select @fobjid=id,@id=id+@sj,@fnumber=job_no,@fname=job_name, - @fparentid=(case isnull(parent_job,0) when 0 then parent_dept+@st else parent_job+@sj end), - @fobjparentid=(case isnull(parent_job,0) when 0 then parent_dept else parent_job end), - @delete=isnull(forbidden_tag,0),@parentdept=parent_dept - from inserted - - - set @fclass=0 - set @fclassname='行政维度' - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - select @fplan=sum(isnull(staff_num,0)) from JCL_ORG_STAFF - where plan_id in (select id from JCL_ORG_STAFFPLAN - where time_start<=@fdatebegin and time_end>=@fdatebegin) - and job_id=@fobjid - - - select @fonjob=count(1) from hrmresource where status<=3 - and departmentid=(select id from hrmdepartment where uuid=(select uuid from JCL_ORG_DEPT where id=@parentdept)) - and jobtitle in (select id from hrmjobtitles where JOBTITLENAME=@fname); - - - set @fisvitual=0 - SET NOCOUNT ON - - delete from jcl_org_map where ftype=@ftype and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=@ftype and fobjid=@fobjid and fdateend>@fdatebegin - - - if @delete=0 - begin - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end - SET NOCOUNT OFF - end -go - -create trigger JCL_ORG_job_del on JCL_ORG_job after update as -if update(delete_type) - begin - declare @deletetype int - declare @ftype int - declare @fobjid int - declare @fdatebegin date - - set @ftype=3 - select @fobjid=id from deleted - select @fdatebegin=cast(GETDATE() as date) - select @deletetype=isnull(delete_type,0) from inserted - if @deletetype=1 - begin - delete from jcl_org_map where ftype=@ftype and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=@ftype and fobjid=@fobjid and fdateend>@fdatebegin - end - end -go - - - -create trigger hrmresource_ed on hrmresource after update,insert as - - if update(lastname) or update(status) - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - declare @delete int - declare @wz int - declare @str varchar(100) - - - declare @st int - - set @st=100000000 - - declare @sj int - - set @sj=200000000 - - declare @sk int - - set @sk=300000000 - - - set @ftype=4 - - - select @fobjid=id,@id=id+@sk,@fnumber=workcode,@fname=lastname, - @delete=case when status<=3 then 0 else 1 end, - @fleaderimg=messagerurl,@fleadername=lastname,@fleaderjobid=jobtitle - from inserted - - - select @str=isnull(field100002,'') - from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fobjid - set @wz=charindex('_',@str) - set @fobjparentid=cast(right(@str,len(@str)-@wz) as int) - set @fparentid=@fobjparentid+@sj - - - set @fclass=0 - set @fclassname='行政维度' - - select @fleaderjob=jobtitlemark from hrmjobtitles where id=@fleaderjobid - - - select @fleaderst=isnull(field100008,''),@fleaderlv=isnull(field100007,'') from cus_fielddata - where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fobjid - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - set @fisvitual=0 - - - delete from jcl_org_map where ftype=@ftype and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=@ftype and fobjid=@fobjid and fdateend>@fdatebegin - - - if @delete=0 - begin - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end - end -go - - -create trigger cus_fielddata_jclgw on cus_fielddata after update as - - if update(field100002) - - begin - declare @ftype int - declare @id int - declare @fobjid int - declare @fecid int - declare @uuid varchar(100) - declare @fclass int - declare @fclassname varchar(100) - declare @fnumber varchar(100) - declare @fname varchar(255) - declare @fleader int - - declare @fleaderimg varchar(255) - declare @fleadername varchar(100) - declare @fleaderjobid int - declare @fleaderjob varchar(255) - declare @fleaderlv varchar(100) - declare @fleaderst varchar(100) - declare @fparentid int - declare @fobjparentid int - declare @fplan int - declare @fonjob int - declare @fisvitual int - declare @fdatebegin date - declare @fdateend date - declare @delete int - declare @wz int - declare @str varchar(100) - - declare @st int - - set @st=100000000 - - declare @sj int - - set @sj=200000000 - - declare @sk int - - set @sk=300000000 - - - set @ftype=4 - - - select @fobjid=id,@id=id+@sk,@str=isnull(field100002,'') from inserted - - select @fnumber=workcode,@fname=lastname, - @delete=case when status<=3 then 0 else 1 end, - @fleaderimg=messagerurl,@fleadername=lastname,@fleaderjobid=jobtitle - from hrmresource where id=@fobjid - - - set @wz=charindex('_',@str) - set @fobjparentid=cast(right(@str,len(@str)-@wz) as int) - set @fparentid=@fobjparentid+@sj - - set @fclass=0 - set @fclassname='行政维度' - - select @fleaderjob=jobtitlemark from hrmjobtitles where id=@fleaderjobid - - - select @fleaderst=isnull(field100008,''),@fleaderlv=isnull(field100007,'') from cus_fielddata - where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=@fobjid - - - select @fdatebegin=cast(GETDATE() as date) - - - set @fdateend='2099-12-31' - - - set @fisvitual=0 - - - delete from jcl_org_map where ftype=@ftype and fobjid=@fobjid and fdatebegin=@fdatebegin - - - update jcl_org_map set fdateend=dateadd(day,-1,@fdatebegin) - where ftype=@ftype and fobjid=@fobjid and fdateend>@fdatebegin - - - if @delete=0 - begin - insert into jcl_org_map - (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, - fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, - fplan,fonjob,fisvitual,fdatebegin,fdateend) - values - (@id,@ftype,@fobjid,@fecid,@uuid,@fclass,@fclassname,@fnumber,@fname,@fleader,@fleaderimg, - @fleadername,@fleaderjobid,@fleaderjob,@fleaderlv,@fleaderst,@fparentid,@fobjparentid, - @fplan,@fonjob,@fisvitual,@fdatebegin,@fdateend) - end - end -go - - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id,1,a.id,b.id,a.uuid,0,'行政维度',a.comp_no,a.comp_name,a.comp_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008,isnull(parent_company,0),isnull(parent_company,0), + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade,isnull(parent_company,0),isnull(parent_company,0), isnull(e.fcnt,0),isnull(f.fcnt,0),0,cast(GETDATE() as date),'2099-12-31' from JCL_ORG_comp as a @@ -694,7 +16,7 @@ left join (select comp_id,sum(isnull(staff_num,0)) fcnt from JCL_ORG_STAFF group by comp_id) e on a.id=e.comp_id left join (select subcompanyid1,count(1) fcnt from hrmresource where status<=3 group by subcompanyid1) f on f.subcompanyid1=b.id -left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 +left join jcl_org_hrmresource g ON c.uuid = g.uuid where isnull(a.delete_type,0) <>1 and isnull(a.forbidden_tag,0) <>1 go @@ -705,7 +27,7 @@ fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fplan,fonjob,fisvitual,fdatebegin,fdateend) select a.id+100000000,2,a.id,b.id,a.uuid,0,'行政维度',a.dept_no,a.dept_name,a.dept_principal,c.messagerurl, - c.lastname,c.jobtitle,d.jobtitlemark,g.field100007,g.field100008, + c.lastname,c.jobtitle,d.jobtitlemark,g.job_level,g.job_grade, (case isnull(parent_dept,0) when 0 then parent_comp else parent_dept+100000000 end), (case isnull(parent_dept,0) when 0 then parent_comp else parent_dept end), isnull(e.fcnt,0),isnull(f.fcnt,0),0,cast(GETDATE() as date),'2099-12-31' @@ -719,7 +41,7 @@ left join (select dept_id,sum(isnull(staff_num,0)) fcnt from JCL_ORG_STAFF where time_start<=cast(GETDATE() as date) and time_end>cast(GETDATE() as date)) group by dept_id) e on a.id=e.dept_id left join (select departmentid,count(1) fcnt from hrmresource where status<=3 group by departmentid) f on f.departmentid=b.id -left join cus_fielddata g on c.id=g.id and g.scope='HrmCustomFieldByInfoType' and g.scopeid=3 +left join jcl_org_hrmresource g ON c.uuid = g.uuid where isnull(a.delete_type,0) <>1 and isnull(a.forbidden_tag,0) <>1 go @@ -747,31 +69,18 @@ on f.id=a.parent_dept and a.job_name=f.jobtitlename where isnull(a.delete_type,0) <>1 and isnull(a.forbidden_tag,0) <>1 and a.id>=10 go - -delete from cus_fielddata where scopeid=-1 -go -insert into cus_fielddata(scope, scopeid, id, field100002) -select 'HrmCustomFieldByInfoType',-1,a.id,'199_'+cast(e.id as varchar(10)) -from hrmresource a -left join HrmJobTitles b on a.jobtitle=b.id -left join hrmdepartment c on a.departmentid=c.id -left join JCL_ORG_DEPT d on c.uuid=d.uuid -left join jcl_org_job e on d.id=e.parent_dept and e.job_name=b.jobtitlename -go - - insert into jcl_org_map (id,ftype,fobjid,fecid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, fisvitual,fdatebegin,fdateend) -select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.workcode,a.lastname,a.messagerurl,a.jobtitle, - b.jobtitlemark,c.field100007,c.field100008, - cast(right(isnull(field100002,''),len(isnull(field100002,''))-charindex('_',isnull(field100002,''))) as int)+200000000, - cast(right(isnull(field100002,''),len(isnull(field100002,''))-charindex('_',isnull(field100002,''))) as int), +select a.id+300000000,4,a.id,a.id,a.uuid,0,'行政维度',a.work_code,a.last_name,c.messagerurl,b.id, + b.job_name,a.job_level,a.job_grade, + cast(isnull(b.id,'') as int)+200000000, + cast(isnull(b.id,'') as int), 0,cast(GETDATE() as date),'2099-12-31' -from hrmresource a -left join hrmjobtitles b on a.jobtitle=b.id -left join cus_fielddata c on a.id=c.id and c.scope='HrmCustomFieldByInfoType' and c.scopeid=-1 +from jcl_org_hrmresource a +left join jcl_org_job b on a.job_title = b.id +left join hrmresource c on a.uuid = c.uuid where a.status<4 GO diff --git a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java index 70724bd4..5b09db96 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -41,6 +41,7 @@ import com.engine.organization.mapper.scheme.SchemeMapper; import com.engine.organization.mapper.sequence.SequenceMapper; import com.engine.organization.service.ExtService; import com.engine.organization.service.HrmResourceService; +import com.engine.organization.thread.HrmResourceTriggerRunnable; import com.engine.organization.thread.OrganizationSyncEc; import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.MenuBtn; @@ -216,7 +217,9 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic // 获取人员UUID RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_RESOURCE, ecResourceId); params.put("uuid", recordInfo.getUuid()); - return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_HRM, params, "", null); + Long resourceId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_HRM, params, "", null); + new Thread(new HrmResourceTriggerRunnable(resourceId)).start(); + return resourceId; } @Override @@ -285,6 +288,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic //更新明细表 getExtService(user).updateExtDT(user, EXTEND_TYPE, JCL_ORG_HRMEXT_DT1, params, id); + new Thread(new HrmResourceTriggerRunnable(id)).start(); return updateCount; } diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index 8fdc9bd1..99bfd971 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -16,7 +16,6 @@ import com.engine.organization.entity.extend.ExtendInfoOperateType; import com.engine.organization.entity.extend.param.ExtendInfoParams; import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.entity.fieldset.param.FieldTransferParam; -import com.engine.organization.entity.jclimport.po.CusFormFieldPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryPO; import com.engine.organization.entity.jclimport.vo.JclImportHistoryDetailVO; @@ -99,6 +98,8 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ String tableName = ""; String errorMsg = ""; List excludeFields = new ArrayList<>(); + List includeFields = new ArrayList<>(); + List selectedList = new ArrayList<>(); Map returnMaps = new HashMap<>(); if (StringUtils.isNotBlank(importType)) { switch (importType) { @@ -121,7 +122,17 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ break; case "resource": extendType = "4"; - tableName = "hrmResource"; + tableName = "JCL_ORG_HRMRESOURCE"; + includeFields.add(FieldTransferParam.builder().id("-1").name("所属分部").build()); + includeFields.add(FieldTransferParam.builder().id("-2").name("所属部门").build()); + selectedList.add("-1"); + selectedList.add("-2"); + excludeFields.add("ec_company"); + excludeFields.add("ec_department"); + excludeFields.add("scheme_id"); + excludeFields.add("sequence_id"); + excludeFields.add("job_grade"); + excludeFields.add("job_level"); break; default: errorMsg = "未找到对应的导入类型,请确认"; @@ -134,42 +145,16 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ if (StringUtils.isAnyEmpty(extendType, tableName)) { return returnMaps; } - if ("4".equals(extendType)) { - String voField = "subcompanyid1,departmentid," + - "workcode,lastname,loginid,password,seclevel,sex," + - // "jobtitle,jobactivity,jobgroupid,jobcall,joblevel," + - "jobactivitydesc,managerid,assistantid,status," + - "workroom,locationid,telephone,mobile,mobilecall," + - "fax,email,systemlanguage,birthday,folk," + - "nativeplace,regresidentplace,certificatenum," + - "maritalstatus,policy,bememberdate,bepartydate," + - "islabouunion,educationlevel,degree,healthinfo,height," + - "weight,usekind,startdate,enddate,probationenddate," + - "residentplace,homeaddress,tempresidentnumber," + - "companystartdate,workstartdate," + - "accumfundaccount,accounttype,belongto,height,weight,accountname,bankid1,accountid1," + - "telephone,dsporder,classification"; - Collection hrmFields = Arrays.asList(voField.split(",")); - // 获取人员表单字段 - List hrmFieldBeanList = getSystemDataMapper().getHrmFieldBeanListByFields(hrmFields); - List customFieldList = getSystemDataMapper().getHrmCustomFieldList(); - List mergeList = new ArrayList<>(); - mergeList.addAll(hrmFieldBeanList); - mergeList.addAll(customFieldList); - - List fieldDatas = mergeList.stream().map(item -> FieldTransferParam.builder().id(item.getScopeId() + item.getTableName() + item.getFieldId()).name(item.getFieldLabel()).build()).collect(Collectors.toList()); - List selectedKeys = mergeList.stream().filter(item -> ("1".equals(item.getRequired()) || "workcode".equals(item.getFieldName()) || "subcompanyid1".equals(item.getFieldName()) || "departmentid".equals(item.getFieldName()))).map(item -> item.getScopeId() + item.getTableName() + item.getFieldId()).collect(Collectors.toList()); - - returnMaps.put("data", fieldDatas); - returnMaps.put("selectedKeys", selectedKeys); - } else { - List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ExtendInfoOperateType.LIST.getValue(), "1"); - List filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); - List fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); - List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(item -> item.getId().toString()).collect(Collectors.toList()); - returnMaps.put("data", fieldDatas); - returnMaps.put("selectedKeys", selectedKeys); - } + + List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ExtendInfoOperateType.LIST.getValue(), "1"); + List filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); + List fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); + fieldDatas.addAll(0, includeFields); + List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(item -> item.getId().toString()).collect(Collectors.toList()); + selectedKeys.addAll(0,selectedList); + returnMaps.put("data", fieldDatas); + returnMaps.put("selectedKeys", selectedKeys); + return returnMaps; } diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index 80acd803..470983b6 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -3,9 +3,14 @@ package com.engine.organization.service.impl; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import com.engine.core.impl.Service; +import com.engine.organization.entity.scheme.po.GradePO; +import com.engine.organization.entity.scheme.po.LevelPO; +import com.engine.organization.mapper.scheme.GradeMapper; +import com.engine.organization.mapper.scheme.LevelMapper; import com.engine.organization.service.OrgChartService; import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.db.DBType; +import com.engine.organization.util.db.MapperProxyFactory; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.hrm.User; @@ -247,8 +252,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { item.put("fnumber", rs.getString("fnumber")); item.put("fleader", rs.getString("fleader")); item.put("fobjid",rs.getString("fobjid")); - item.put("fleaderlv",rs.getString("fleaderlv")); - item.put("fleaderst",rs.getString("fleaderst")); + item.put("fleaderlv",convertLevel(rs.getString("fleaderlv"))); + item.put("fleaderst",convertGrade(rs.getString("fleaderst"))); item.put("fecid",rs.getString("fecid")); list.add(item); } @@ -289,8 +294,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { item.put("fnumber", rs.getString("fnumber")); item.put("hasChildren", hasChildren(rs.getString("id"), false)); item.put("fleader", rs.getString("fleader")); - item.put("fleaderlv",rs.getString("fleaderlv")); - item.put("fleaderst",rs.getString("fleaderst")); + item.put("fleaderlv",convertLevel(rs.getString("fleaderlv"))); + item.put("fleaderst",convertGrade(rs.getString("fleaderst"))); item.put("fobjid",rs.getString("fobjid")); currentList.add(item); } @@ -368,8 +373,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { item.put("fobjid", rs.getString("fobjid")); item.put("fecid", rs.getString("fecid")); item.put("fleader", rs.getString("fleader")); - item.put("fleaderlv", rs.getString("fleaderlv")); - item.put("fleaderst", rs.getString("fleaderst")); + item.put("fleaderlv", convertLevel(rs.getString("fleaderlv"))); + item.put("fleaderst", convertGrade(rs.getString("fleaderst"))); item.put("hasChildren", hasChildren(rs.getString("id"), false)); currentList.add(item); } @@ -411,4 +416,36 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } return !"0".equals(count); } + + private String convertLevel(String fLeaderLv) { + String jobLevelName = ""; + if (StringUtils.isBlank(fLeaderLv)) { + try { + long parseLong = Long.parseLong(fLeaderLv); + LevelPO levelByID = MapperProxyFactory.getProxy(LevelMapper.class).getLevelByID(parseLong); + if (null != levelByID) { + jobLevelName = levelByID.getLevelName(); + } + } catch (NumberFormatException exception) { + jobLevelName = fLeaderLv; + } + } + return jobLevelName; + } + + private String convertGrade(String fLeaderSt) { + String jobGradeName = ""; + if (StringUtils.isBlank(fLeaderSt)) { + try { + long parseLong = Long.parseLong(fLeaderSt); + GradePO gradeByID = MapperProxyFactory.getProxy(GradeMapper.class).getGradeByID(parseLong); + if (null != gradeByID) { + jobGradeName = gradeByID.getGradeName(); + } + } catch (NumberFormatException exception) { + jobGradeName = fLeaderSt; + } + } + return jobGradeName; + } } diff --git a/src/com/engine/organization/thread/HrmResourceTriggerRunnable.java b/src/com/engine/organization/thread/HrmResourceTriggerRunnable.java index cfd8dd18..543127dc 100644 --- a/src/com/engine/organization/thread/HrmResourceTriggerRunnable.java +++ b/src/com/engine/organization/thread/HrmResourceTriggerRunnable.java @@ -2,6 +2,7 @@ package com.engine.organization.thread; import com.engine.organization.entity.hrmresource.po.HrmResourcePO; import com.engine.organization.entity.map.JclOrgMap; +import com.engine.organization.mapper.hrmresource.HrmResourceMapper; import com.engine.organization.mapper.jclorgmap.JclOrgMapper; import com.engine.organization.mapper.trigger.CompTriggerMapper; import com.engine.organization.mapper.trigger.HrmResourceTriggerMapper; @@ -28,7 +29,9 @@ public class HrmResourceTriggerRunnable implements Runnable { private HrmResourceTriggerMapper getHrmResourceTriggerMapper() { return MapperProxyFactory.getProxy(HrmResourceTriggerMapper.class); } - + private HrmResourceMapper getHrmResourceMapper() { + return MapperProxyFactory.getProxy(HrmResourceMapper.class); + } private JclOrgMapper getJclOrgMapper() { return MapperProxyFactory.getProxy(JclOrgMapper.class); } @@ -46,17 +49,20 @@ public class HrmResourceTriggerRunnable implements Runnable { JclOrgMap jclMap = new JclOrgMap(); jclMap.setFType(4); // 查询当前人员信息数据 - HrmResource hrmResource = getHrmResourceTriggerMapper().getHrmResource(userId); - if (null != hrmResource) { - jclMap.setFObjId(hrmResource.getId()); - jclMap.setId(hrmResource.getId() + sk); - jclMap.setFNumber(hrmResource.getWorkcode()); - jclMap.setFName(hrmResource.getLastname()); - delete = hrmResource.getStatus() <= 3 ? 0 : 1; - jclMap.setFLeaderImg(hrmResource.getMessagerurl()); - jclMap.setFLeaderName(hrmResource.getLastname()); - jclMap.setFLeaderJobId(hrmResource.getJobtitle()); - HrmResourcePO resourceByEcId = getCompTriggerMapper().getResourceByEcId(jclMap.getFLeader()); + String ecResourceId = getHrmResourceMapper().getEcResourceId(userId.toString()); + HrmResource ecHrmResource = getHrmResourceTriggerMapper().getHrmResource(Long.parseLong(ecResourceId)); + HrmResourcePO hrmResource = getCompTriggerMapper().getResourceByEcId(Integer.parseInt(ecResourceId)); + if (null != hrmResource && null!=ecHrmResource) { + jclMap.setFObjId(hrmResource.getId().intValue()); + jclMap.setId(hrmResource.getId().intValue() + sk); + jclMap.setFNumber(hrmResource.getWorkCode()); + jclMap.setFName(hrmResource.getLastName()); + jclMap.setUuid(hrmResource.getUuid()); + delete = hrmResource.getStatus() < 4 ? 0 : 1; + jclMap.setFLeaderImg(ecHrmResource.getMessagerurl()); + jclMap.setFLeaderName(hrmResource.getLastName()); + jclMap.setFLeaderJobId(hrmResource.getJobTitle().intValue()); + HrmResourcePO resourceByEcId = getCompTriggerMapper().getResourceByEcId(Integer.parseInt(ecResourceId)); if (null != resourceByEcId) { Long jobTitle = resourceByEcId.getJobTitle(); if (null!=jobTitle) { diff --git a/src/com/engine/organization/util/tree/SearchTreeUtil.java b/src/com/engine/organization/util/tree/SearchTreeUtil.java index 2ce35393..5ff6bdee 100644 --- a/src/com/engine/organization/util/tree/SearchTreeUtil.java +++ b/src/com/engine/organization/util/tree/SearchTreeUtil.java @@ -10,7 +10,6 @@ import java.util.*; import java.util.stream.Collectors; /** - * @description: * @author:dxfeng * @createTime: 2022/06/06 * @version: 1.0 @@ -117,6 +116,9 @@ public class SearchTreeUtil { if (isAdd && CollectionUtils.isNotEmpty(childMap.get(e.getId()))) { treeNodes.addAll(childMap.get(e.getId())); } + if (CollectionUtils.isNotEmpty(e.getSubs())) { + treeNodes.addAll(e.getSubs()); + } e.setSubs(treeNodes); }).peek(item -> { if (CollectionUtils.isNotEmpty(item.getSubs())) {