From 1318fc1abaaff7730ebf2880e4b34c2190a93053 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 12 Aug 2022 09:34:19 +0800 Subject: [PATCH 1/4] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/mapper/extend/ExtMapper.java | 14 ++++++++++--- .../organization/mapper/extend/ExtMapper.xml | 21 +++++++++++++++---- .../service/impl/ExtServiceImpl.java | 6 +++--- .../service/impl/ImportCommonServiceImpl.java | 12 +++++------ .../thread/OrganizationRunable.java | 2 +- .../cusfielddata/CusFieldDataTrigger.java | 2 +- 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/com/engine/organization/mapper/extend/ExtMapper.java b/src/com/engine/organization/mapper/extend/ExtMapper.java index 247d5e15..7b91636a 100644 --- a/src/com/engine/organization/mapper/extend/ExtMapper.java +++ b/src/com/engine/organization/mapper/extend/ExtMapper.java @@ -29,12 +29,20 @@ public interface ExtMapper { int countExtById(ExtendInfoParams params); /** - * 插入主表拓展表 + * 插入主表 * * @param params * @return */ - int insertExt(ExtendInfoParams params); + int insertTable(ExtendInfoParams params); + + /** + * 插入拓展表 + * + * @param params + * @return + */ + int insertExtTable(ExtendInfoParams params); /** * 更新主表拓展表 @@ -42,5 +50,5 @@ public interface ExtMapper { * @param params * @return */ - int updateExt(ExtendInfoParams params); + int updateTable(ExtendInfoParams params); } diff --git a/src/com/engine/organization/mapper/extend/ExtMapper.xml b/src/com/engine/organization/mapper/extend/ExtMapper.xml index 69cde37a..cddb6748 100644 --- a/src/com/engine/organization/mapper/extend/ExtMapper.xml +++ b/src/com/engine/organization/mapper/extend/ExtMapper.xml @@ -2,7 +2,7 @@ - insert into ${tableName} ( @@ -17,8 +17,9 @@ ) - - + + select ${sequenceName}.currval from dual @@ -33,8 +34,20 @@ ) + + insert into ${tableName} ( + + ${key} + + ) + values ( + + #{value} + + ) + - + update ${tableName} set ${key} = #{value} diff --git a/src/com/engine/organization/service/impl/ExtServiceImpl.java b/src/com/engine/organization/service/impl/ExtServiceImpl.java index 9f37bfa9..3a65782f 100644 --- a/src/com/engine/organization/service/impl/ExtServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExtServiceImpl.java @@ -232,14 +232,14 @@ public class ExtServiceImpl extends Service implements ExtService { int count = getExtMapper().countExtById(infoParams); if (count > 0) { map.put("update_time", new Date()); - getExtMapper().updateExt(infoParams); + getExtMapper().updateTable(infoParams); } else { map.put("creator", user.getUID()); map.put("delete_type", 0); map.put("create_time", new Date()); map.put("update_time", new Date()); map.put("id", id); - getExtMapper().insertExt(infoParams); + getExtMapper().insertExtTable(infoParams); } } else { if (!tableName.equals("JCL_ORG_HRMRESOURCE")) { @@ -249,7 +249,7 @@ public class ExtServiceImpl extends Service implements ExtService { map.put("delete_type", 0); map.put("create_time", new Date()); map.put("update_time", new Date()); - getExtMapper().insertExt(infoParams); + getExtMapper().insertTable(infoParams); } return infoParams.getId(); } diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index 8e078bf8..7d60a9fd 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -641,7 +641,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ map.put("forbidden_tag", 0); } ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build(); - MapperProxyFactory.getProxy(ExtMapper.class).insertExt(infoParams); + MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); map.put("id", infoParams.getId()); new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, map).run(); historyDetailPO.setOperateDetail("添加成功"); @@ -657,7 +657,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ } if (checkRepeatNo(compNo, COMPANY_TYPE, companyId)) { map.put("update_time", new Date()); - MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(companyId).tableName("JCL_ORG_COMP").params(map).build()); + MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(companyId).tableName("JCL_ORG_COMP").params(map).build()); map.put("id", companyId); new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map).run(); historyDetailPO.setOperateDetail("更新成功"); @@ -828,7 +828,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ map.put("forbidden_tag", 0); } ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_DEPT").params(map).build(); - MapperProxyFactory.getProxy(ExtMapper.class).insertExt(infoParams); + MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); map.put("id", infoParams.getId()); new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, map).run(); historyDetailPO.setOperateDetail("添加成功"); @@ -844,7 +844,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ } if (checkRepeatNo(deptNo, DEPARTMENT_TYPE, departmentId)) { map.put("update_time", new Date()); - MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(departmentId).tableName("JCL_ORG_DEPT").params(map).build()); + MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(departmentId).tableName("JCL_ORG_DEPT").params(map).build()); map.put("id", departmentId); new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map).run(); historyDetailPO.setOperateDetail("更新成功"); @@ -1043,7 +1043,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ map.put("forbidden_tag", 0); } ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_JOB").params(map).build(); - MapperProxyFactory.getProxy(ExtMapper.class).insertExt(infoParams); + MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); map.put("jobactivityid", JobServiceImpl.JOB_ACTIVITY_ID); map.put("id", infoParams.getId()); new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.ADD, map).run(); @@ -1060,7 +1060,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ } if (checkRepeatNo(jobNo, JOB_TYPE, jobId)) { map.put("update_time", new Date()); - MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(jobId).tableName("JCL_ORG_JOB").params(map).build()); + MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(jobId).tableName("JCL_ORG_JOB").params(map).build()); map.put("jobactivityid", JobServiceImpl.JOB_ACTIVITY_ID); map.put("id", jobId); new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, map).run(); diff --git a/src/com/engine/organization/thread/OrganizationRunable.java b/src/com/engine/organization/thread/OrganizationRunable.java index b2c84115..1b6d7be2 100644 --- a/src/com/engine/organization/thread/OrganizationRunable.java +++ b/src/com/engine/organization/thread/OrganizationRunable.java @@ -436,7 +436,7 @@ public class OrganizationRunable implements Runnable { departmentMap.put("uuid", uuid); long jclTableId = Long.parseLong(Util.null2String(params.get("id"))); ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName(jclTableName).params(departmentMap).id(jclTableId).build(); - getExtMapper().updateExt(infoParams); + getExtMapper().updateTable(infoParams); } } diff --git a/src/com/engine/organization/trigger/cusfielddata/CusFieldDataTrigger.java b/src/com/engine/organization/trigger/cusfielddata/CusFieldDataTrigger.java index 6a4148ef..0f56e2fd 100644 --- a/src/com/engine/organization/trigger/cusfielddata/CusFieldDataTrigger.java +++ b/src/com/engine/organization/trigger/cusfielddata/CusFieldDataTrigger.java @@ -97,7 +97,7 @@ public class CusFieldDataTrigger { hrmResourceMap.put("departmentid", ecBmId); // 公司 hrmResourceMap.put("subcompanyid1", ecGsId); - MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(id).tableName("hrmresource").params(hrmResourceMap).build()); + MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(id).tableName("hrmresource").params(hrmResourceMap).build()); updateFlag = true; } From e4d9d80fee53e66e95a4535435411765485eb32d Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 12 Aug 2022 10:12:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=85=BC=E5=AE=B9Oracle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/脚本/Oracle/组织架构图触发器.sql | 81 ++++++++++++++-- .../organization/mapper/comp/CompMapper.xml | 4 +- .../mapper/department/DepartmentMapper.xml | 4 +- .../organization/mapper/job/JobMapper.xml | 4 +- .../mapper/post/PostInfoMapper.xml | 4 +- .../organization/mapper/post/PostMapper.xml | 4 +- .../mapper/scheme/GradeMapper.xml | 4 +- .../mapper/scheme/LevelMapper.xml | 4 +- .../mapper/scheme/SchemeMapper.xml | 4 +- .../mapper/sequence/SequenceMapper.xml | 4 +- .../mapper/staff/StaffPlanMapper.xml | 4 +- .../service/impl/OrgChartServiceImpl.java | 94 ++++++++++--------- 12 files changed, 145 insertions(+), 70 deletions(-) diff --git a/docs/脚本/Oracle/组织架构图触发器.sql b/docs/脚本/Oracle/组织架构图触发器.sql index 29292d5f..75277090 100644 --- a/docs/脚本/Oracle/组织架构图触发器.sql +++ b/docs/脚本/Oracle/组织架构图触发器.sql @@ -10,19 +10,33 @@ vleader int; 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; + 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); @@ -60,6 +74,7 @@ vdatebegin date; 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 @@ -68,13 +83,28 @@ begin 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; -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 comp_id=:new.id; +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; @@ -108,6 +138,7 @@ st int; 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 @@ -126,15 +157,28 @@ 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; @@ -215,6 +259,7 @@ st int; vleaderlv VARCHAR2(255); vstr VARCHAR2(255); vwz int; + vcnt int; begin if :new.lastname!=:old.lastname or :new.status!=:old.status then st:=100000000; @@ -227,18 +272,30 @@ begin 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 nvl(field100002,'') into vstr from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=3 and id=:new.id; -vwz:=Instr(vstr,'_'); + +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; @@ -274,6 +331,7 @@ st int; vleaderlv VARCHAR2(255); vstr VARCHAR2(255); vwz int; + vcnt int; begin if :new.field100002!=:old.field100002 then st:=100000000; @@ -281,19 +339,28 @@ begin 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,''); + 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 diff --git a/src/com/engine/organization/mapper/comp/CompMapper.xml b/src/com/engine/organization/mapper/comp/CompMapper.xml index 6832e6b6..96ca0365 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.xml +++ b/src/com/engine/organization/mapper/comp/CompMapper.xml @@ -317,8 +317,8 @@ select - id, - dept_name as name + id as "id", + dept_name as "name" from jcl_org_dept t WHERE delete_type = 0 AND id IN diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml index 15158253..434bed68 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.xml +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -396,8 +396,8 @@ select - id, - post_info_name as name + id as "id", + post_info_name as "name" from jcl_org_post_info t WHERE delete_type = 0 AND id IN diff --git a/src/com/engine/organization/mapper/post/PostMapper.xml b/src/com/engine/organization/mapper/post/PostMapper.xml index b10eb867..4ceb10c3 100644 --- a/src/com/engine/organization/mapper/post/PostMapper.xml +++ b/src/com/engine/organization/mapper/post/PostMapper.xml @@ -38,8 +38,8 @@ select - id, - level_name as name + id as "id", + level_name as "name" from jcl_org_level t WHERE delete_type = 0 AND id IN diff --git a/src/com/engine/organization/mapper/scheme/SchemeMapper.xml b/src/com/engine/organization/mapper/scheme/SchemeMapper.xml index d7ac5226..94cc2695 100644 --- a/src/com/engine/organization/mapper/scheme/SchemeMapper.xml +++ b/src/com/engine/organization/mapper/scheme/SchemeMapper.xml @@ -47,8 +47,8 @@ select - id, - sequence_name as name + id as "id", + sequence_name as "name" from jcl_org_sequence t WHERE delete_type = 0 AND id IN diff --git a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml index cb7e8789..6640a79f 100644 --- a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml @@ -52,8 +52,8 @@