From d510f32bc504f525bf2f508d0743e0300033f5a1 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 13 Jul 2023 15:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9E=B6=E6=9E=84=E5=9B=BE?= =?UTF-8?q?=EF=BC=8CBUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/chart/CompanyTreePO.java | 5 +-- .../service/impl/ChartServiceImpl.java | 36 +++++++++---------- .../service/impl/OrgChartServiceImpl.java | 27 ++++++++++---- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/com/engine/organization/entity/chart/CompanyTreePO.java b/src/com/engine/organization/entity/chart/CompanyTreePO.java index 6e959f9e..9a358082 100644 --- a/src/com/engine/organization/entity/chart/CompanyTreePO.java +++ b/src/com/engine/organization/entity/chart/CompanyTreePO.java @@ -4,7 +4,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import weaver.conn.RecordSet; /** * @author:dxfeng @@ -24,9 +23,7 @@ public class CompanyTreePO { private String key; public boolean getIsLeaf() { - RecordSet rs = new RecordSet(); - rs.executeQuery("select id from hrmsubcompany where (canceled is null or canceled != '1') and supsubcomid = ?",id); - return !rs.next(); + return isLeaf; } public String getpId() { diff --git a/src/com/engine/organization/service/impl/ChartServiceImpl.java b/src/com/engine/organization/service/impl/ChartServiceImpl.java index e980b1c8..32e05545 100644 --- a/src/com/engine/organization/service/impl/ChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/ChartServiceImpl.java @@ -3,8 +3,6 @@ package com.engine.organization.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.organization.entity.chart.ChartPO; -import com.engine.organization.entity.chart.history.DepartmentHistory; -import com.engine.organization.entity.chart.history.SubcompanyHistory; import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.mapper.jclorgmap.JclOrgMapper; import com.engine.organization.service.ChartService; @@ -17,7 +15,6 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.conn.RecordSetTrans; -import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; @@ -238,9 +235,9 @@ public class ChartServiceImpl extends Service implements ChartService { } } else { if (hasVirtualFields) { - sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name,fleader as bmfzr,isvirtual as isvitual from " + DEPARTMENT_TABLE + " a where a.id = '" + departmentId + "' and versionid = " + versionId; + sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name,fleader as bmfzr,isvirtual as isvitual from " + DEPARTMENT_TABLE + " a where a." + DEPARTMENT_ID + " = '" + departmentId + "' and versionid = " + versionId; } else { - sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name from " + DEPARTMENT_TABLE + " a where a.id = '" + departmentId + "' and versionid = " + versionId; + sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name from " + DEPARTMENT_TABLE + " a where a." + DEPARTMENT_ID + " = '" + departmentId + "' and versionid = " + versionId; } } rs.executeQuery(sql); @@ -386,7 +383,7 @@ public class ChartServiceImpl extends Service implements ChartService { return "select id,companyname as name,'0' as type from " + COMPANY_TABLE; } else { //查询其他维度集团版本信息 - return "select id,companyname as name,'0' as type from " + COMPANY_TABLE + " where " + + return "select companyvirtualid as id,companyname as name,'0' as type from " + COMPANY_TABLE + " where " + " versionid = " + versionId + " and companyvirtualid = " + dimension; } } else { @@ -560,16 +557,16 @@ public class ChartServiceImpl extends Service implements ChartService { insertData(insertDeptSql,insertParamList); //当前岗位版本存储 - rs.executeQuery("select a.id as jobid,a.job_name as jobname,a.ec_department as departmentid," + + rs.executeQuery("select b.id as jobid,b.JOBTITLENAME as jobname,a.ec_department as departmentid," + "c.departmentname as department,a.ec_company as subcompanyid,d.subcompanyname as subcompany," + "b.jobresponsibility,a.forbidden_tag as canceled,a.job_no as jobcode,a.description " + - "from jcl_org_job a left join hrmjobtitles b on a.ec_jobtitle = b.id " + + "from jcl_org_job a inner join hrmjobtitles b on a.ec_jobtitle = b.id " + "left join hrmdepartment c on a.ec_department=c.id " + "left join hrmsubcompany d on a.ec_company=d.id"); insertParamList = new ArrayList<>(); while (rs.next()) { insertList = new ArrayList<>(); - insertList.add(rs.getString("jobid")); + insertList.add(StringUtils.isBlank(rs.getString("jobid"))?null:rs.getString("jobid")); insertList.add(currentUser); insertList.add(rs.getString("jobname")); insertList.add(rs.getString("departmentid")); @@ -591,13 +588,12 @@ public class ChartServiceImpl extends Service implements ChartService { //当前人员版本存储 rs.executeQuery("select a.id as resourceid,workyear,usekind,managerstr,status,sex,accounttype,belongto," + "loginid,maritalstatus,a.telephone,mobile,mobilecall,email,b.locationname,resourcetype,startdate," + - "enddate,c.id as jobtitleid,d.JOBTITLENAME as jobtitle,joblevel,seclevel,departmentid,e.departmentname as department," + + "enddate,d.id as jobtitleid,d.JOBTITLENAME as jobtitle,joblevel,seclevel,departmentid,e.departmentname as department," + "a.subcompanyid1 as subcompanyid,f.subcompanyname as subcompany,a.costcenterid as costcenter," + "a.managerid as manager,a.assistantid as assistant,workcode,classification,policy," + "degree,a.lastname,a.companyworkyear from hrmresource a " + "left join hrmlocations b on a.locationid = b.id " + - "left join jcl_org_job c on a.jobtitle = c.id " + - "left join hrmjobtitles d on c.ec_jobtitle = d.id " + + "left join hrmjobtitles d on a.jobtitle = d.id " + "left join hrmdepartment e on a.departmentid = e.id " + "left join hrmsubcompany f on a.subcompanyid1=f.id"); insertParamList = new ArrayList<>(); @@ -605,7 +601,7 @@ public class ChartServiceImpl extends Service implements ChartService { insertList = new ArrayList<>(); insertList.add(StringUtils.isBlank(rs.getString("resourceid")) ? null : rs.getInt("resourceid")); insertList.add(currentUser); - insertList.add(StringUtils.isBlank(rs.getString("workyear")) ? null : rs.getInt("workyear")); + insertList.add(StringUtils.isBlank(rs.getString("workyear")) ? null : rs.getString("workyear")); insertList.add(rs.getString("usekind")); insertList.add(rs.getString("managerstr")); insertList.add(StringUtils.isBlank(rs.getString("status")) ? null : rs.getInt("status")); @@ -710,7 +706,7 @@ public class ChartServiceImpl extends Service implements ChartService { insertParamList.add(insertList); } String insertVirtualSubComSql = "insert into jcl_chart_subcompanyvirtual(subcompanyvirtualid, creater, " + - "subcompanyname, subcompanycode,subcompanydesc, supsubcompany, supsubcomid, company, companyid," + + "subcompanyname, subcompanycode,subcompanydesc, supsubcompany, supsubcompanyid, company, companyid," + "canceled, virtualtype, tlevel, showorder, versiondate,versionid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; insertData(insertVirtualSubComSql,insertParamList); @@ -719,7 +715,7 @@ public class ChartServiceImpl extends Service implements ChartService { "b.DEPARTMENTNAME as supdeptment,b.SUPDEPID as supdepid,a.allsupdepid,c.SUBCOMPANYNAME as subcompany," + "a.SUBCOMPANYID1 as subcompanyid,a.canceled,a.virtualtype,a.tlevel,a.showorder from hrmdepartmentvirtual a " + "left join hrmdepartmentvirtual b on a.SUPDEPID = b.id " + - "left join hrmsubcompanyvirtual c on a.SUBCOMPANYID1 = c.id where a.companyid = ",fclass); + "left join hrmsubcompanyvirtual c on a.SUBCOMPANYID1 = c.id where a.virtualtype = ?",fclass); insertParamList = new ArrayList<>(); while (rs.next()){ insertList = new ArrayList<>(); @@ -757,13 +753,15 @@ public class ChartServiceImpl extends Service implements ChartService { insertList.add(StringUtils.isBlank(rs.getString("subcompanyid")) ? null : rs.getInt("subcompanyid")); insertList.add(StringUtils.isBlank(rs.getString("departmentid")) ? null : rs.getInt("departmentid")); insertList.add(rs.getString("managerstr")); - insertList.add(rs.getString("virtualtype")); + //insertList.add(rs.getString("virtualtype")); insertList.add(currentDate); insertList.add(StringUtils.isBlank(versionId) ? null : Util.getIntValue(versionId)); insertParamList.add(insertList); } String insertVirtualHrmSql = "insert into jcl_chart_resource(resourceid,MANAGER,subcompanyid," + - "departmentid,managerstr,virtualtype,versiondate,versionid) values (?,?,?,?,?,?,?,?)"; + "departmentid,managerstr," + + //"virtualtype," + + "versiondate,versionid) values (?,?,?,?,?,?,?)"; insertData(insertVirtualHrmSql,insertParamList); } @@ -911,7 +909,7 @@ public class ChartServiceImpl extends Service implements ChartService { } } else { sql = "select " + SUB_COMPANY_ID + " as id,a.subcompanyname as name,'1' as type from " + SUB_COMPANY_TABLE + " a where (canceled is null or canceled != '1') and supsubcompanyid = '" + fObjId + "' and versionid = " + versionId + - " union select " + DEPARTMENT_ID + " as id,a.departmentname as name,'2' as type from " + DEPARTMENT_TABLE + " a where (canceled is null or canceled != '1') and (supdepartmentid is null or supdepartmentid = '0') and subcompanyid = '" + fObjId + "' and versionid = " + versionId; + " union select " + DEPARTMENT_ID + " as id,a.departmentname as name,'2' as type from " + DEPARTMENT_TABLE + " a where (canceled is null or canceled != '1') and (supdepid is null or supdepid = '0') and subcompanyid = '" + fObjId + "' and versionid = " + versionId; } break; case "2": @@ -922,7 +920,7 @@ public class ChartServiceImpl extends Service implements ChartService { sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name,'2' as type ,isvirtual as isvitual from " + DEPARTMENT_TABLE + " a where (canceled is null or canceled != '1') and (isvirtual is null or isvirtual != '1') and a.supdepartmentid = '" + fObjId + "' and versionid = " + versionId; } } else { - sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name,'2' as type from " + DEPARTMENT_TABLE + " a where (canceled is null or canceled != '1') and supdepartmentid = '" + fObjId + "' and versionid = " + versionId; + sql = "select " + DEPARTMENT_ID + " as id,a.departmentname as name,'2' as type from " + DEPARTMENT_TABLE + " a where (canceled is null or canceled != '1') and supdepid = '" + fObjId + "' and versionid = " + versionId; } break; default: diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index b4d50663..b184573b 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -86,7 +86,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '0'"; rs.executeQuery(sql); while (rs.next()) { - companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).build()); + companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf("select id from hrmsubcompany where (canceled is null or canceled != '1') and supsubcomid = ?", rs.getString("id"))).build()); } result.put("api_status", true); result.put("fclasslist", fclasslist); @@ -111,21 +111,21 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { boolean isSearchCurrent = StringUtils.isBlank(id) || "0".equals(id); String sql; if (isSearchCurrent) { - sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '" + subcompany + "'"; + sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = ? "; if (StringUtils.isNotBlank(fclass) && !"0".equals(fclass)) { - sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '" + subcompany + "' and companyid = '" + fclass + "'"; + sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = ? and companyid = '" + fclass + "'"; } } else { - sql = "select id as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = '" + subcompany + "'"; + sql = "select subcompanyid as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = ? "; if (StringUtils.isNotBlank(fclass) && !"0".equals(fclass)) { - sql = "select id as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = '" + subcompany + "' and companyid = '" + fclass + "'"; + sql = "select subcompanyvirtualid as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = ? and companyid = '" + fclass + "'"; } // 添加时间轴条件 sql += " and versionid = " + id; } - rs.executeQuery(sql); + rs.executeQuery(sql,subcompany); while (rs.next()) { - companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).build()); + companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf(sql, rs.getString("id"))).build()); } result.put("companyTree", companyTree); return result; @@ -701,6 +701,19 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { return fieldname; } + /** + * 判断树是否为叶子节点 + * + * @param sql 查询下级元素SQL + * @param treeId 当前元素ID + * @return + */ + private boolean judgeTreeLeaf(String sql, String treeId) { + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery(sql, treeId); + return !recordSet.next(); + } + static class OrgSelectItem { private Integer key; private String id;