diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java index 9d8e7a9f..334bfab5 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java @@ -48,4 +48,16 @@ public interface JclOrgMapper { JclOrgMap getResInfo(@Param("level") String level, @Param("grade") String grade, @Param("id") String id); + + int insertSubVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + + int insertSubVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + + int insertDeptVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + + int insertDeptVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + + int insertCompanyVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + int insertJobVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator); + } diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml index 6d46360c..064d1e2e 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml @@ -407,4 +407,189 @@ left join jcl_org_grade f on d.${grade}=f.id where a.id=#{id} + + + + + insert into jcl_org_chart_subcompany(creater, subcompanyid, subcompanyname, subcompanydesc, company, + supsubcompanyid, supsubcompany, canceled, subcompanycode, limitusers, + tlevel, versiondate, type) + select #{creator}, + a.id as subcompanyid, + a.subcompanyname, + a.subcompanydesc, + a.companyid as company, + b.supsubcomid as supsubcompanyid, + b.subcompanyname as supsubcompany, + a.canceled, + a.subcompanycode, + a.limitusers, + a.tlevel, + #{currentDate}, + c.fblx as type + from hrmsubcompany a + left join hrmsubcompany b on a.supsubcomid = b.id + left join hrmsubcompanydefined c on a.id = c.subcomid left join hrmsubcompany b on a.supsubcomid=b.id + + + + + insert into jcl_chart_subcompanyvirtual(subcompanyvirtualid, creater, subcompanyname, subcompanycode, + subcompanydesc, supsubcompany, supsubcomid, company, companyid, + canceled, virtualtype, tlevel, showorder, versiondate) + select a.id as subcompanyvirtualid, + #{creator}, + a.subcompanyname, + a.subcompanycode, + a.subcompanydesc, + b.subcompanyname as supsubcompany, + a.supsubcomid, + c.companyname as company, + a.companyid, + a.canceled, + a.virtualtypeid as virtualtype, + a.tlevel, + a.showorder, + #{currentDate} + from hrmsubcompanyvirtual a + left join hrmsubcompanyvirtual b on a.supsubcomid = b.id + left join hrmcompanyvirtual c on a.companyid = c.id + + + + + insert into jcl_chart_department(creater, departmentid, departmentmark, departmentname, subcompanyid, + subcompany, supdepartmentid, supdepartment, canceled, departmentcode, + coadjutant, tlevel, versiondate, type, fleader) + select #{creator}, + a.id as departmentid, + a.departmentmark, + a.departmentname, + a.subcompanyid1 as subcompanyid, + b.SUBCOMPANYNAME as subcompany, + a.supdepid as supdepartmentid, + c.departmentname as supdepartment, + a.canceled, + a.departmentcode, + a.coadjutant, + a.tlevel, + #{currentDate}, + d.bmlx as type, + a.bmfzr as fleader + from hrmdepartment a + left join hrmsubcompany b on a.subcompanyid1 = b.id + left join hrmdepartment c on a.supdepid = c.id + left join hrmdepartmentdefined d on a.id=d.deptid;left join hrmdepartmentdefined d on a.id=d.deptid + + + + + insert into jcl_chart_departmentvirtual(departmentvirtualid, creater, departmentname, departmentcode, + departmentmark, supdeptment, supdepid, allsupdepid, subcompany, + subcompanyid, canceled, virtualtype, tlevel, showorder, versiondate) + select a.id as departmentvirtualid, + #{creator}, + a.departmentname, + a.departmentcode, + a.departmentmark, + 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, + #{currentDate} + from hrmdepartmentvirtual a + left join hrmdepartmentvirtual b on a.SUPDEPID = b.id + left join hrmsubcompanyvirtual c on a.SUBCOMPANYID1 = c.id + + + + + INSERT into jcl_chart_companyvirtual(companyvirtualid, creater, companyname, companycode, companydesc, + showorder, canceled, virtualtype, virtualtypedesc, versiondate) + select id as companyvirtualid, + #{creator}, + companyname, + companycode, + companydesc, + showorder, + canceled, + virtualtype, + virtualtypedesc, + #{currentDate} + from hrmcompanyvirtual + + + + + insert into jcl_org_chart_job(creater, jobname, department, subcompany, jobresponsibility, canceled, jobcode, + description, versiondate) + select #{creator}, + a.job_name as jobname, + a.ec_department as department, + a.ec_company as subcompany, + b.jobresponsibility, + a.forbidden_tag as canceled, + a.job_no as jobcode, + a.description, + #{currentDate} + from jcl_org_job a + left join hrmjobtitles b on a.ec_jobtitle = b.id + + + + insert into jcl_chart_resource(resourceid, creater, workyear, usekind, managerstr, status, sex, accounttype, + belongto, loginid, maritalstatus, telephone, mobile, mobilecall, email, + locationname, resourcetype, startdate, enddate, jobtitleid, jobtitle, joblevel, + seclevel, departmentid, department, subcompanyid, subcompany, costcenter, + manager, assistant, workcode, classification, versiondate, policy, degree, + versionid) + select a.id as resourceid, + 1, + 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, + a.subcompanyid1 as subcompanyid, + f.subcompanyname as subcompany, + a.costcenterid as costcenter, + a.managerid as manager, + a.assistantid as assistant, + workcode, + classification, + '2023-07-11 15:47', + policy, + degree, + 1111 + 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 hrmdepartment e on a.departmentid = e.id + left join hrmsubcompany f on a.subcompanyid1= f.id; + + \ No newline at end of file diff --git a/src/com/engine/organization/service/ChartService.java b/src/com/engine/organization/service/ChartService.java index 20710587..3b32cee4 100644 --- a/src/com/engine/organization/service/ChartService.java +++ b/src/com/engine/organization/service/ChartService.java @@ -1,5 +1,7 @@ package com.engine.organization.service; +import weaver.hrm.User; + import java.util.Map; /** @@ -28,5 +30,10 @@ public interface ChartService { Map getDepartmentDetail(Map params); - + /** + * 组织架构图,版本记录 + * @param params 请求参数 + * @return 数据集合 + */ + Map versionRecord(Map params, User user); } diff --git a/src/com/engine/organization/service/impl/ChartServiceImpl.java b/src/com/engine/organization/service/impl/ChartServiceImpl.java index fa278324..82881f4e 100644 --- a/src/com/engine/organization/service/impl/ChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/ChartServiceImpl.java @@ -4,16 +4,22 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.organization.entity.chart.ChartPO; import com.engine.organization.mapper.hrmresource.SystemDataMapper; +import com.engine.organization.mapper.jclorgmap.JclOrgMapper; import com.engine.organization.service.ChartService; +import com.engine.organization.service.OrgChartService; import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.OrganizationAssert; +import com.engine.organization.util.OrganizationDateUtil; import com.engine.organization.util.db.MapperProxyFactory; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import weaver.conn.RecordSetTrans; import weaver.general.Util; +import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; +import java.time.LocalDate; import java.util.*; /** @@ -40,6 +46,15 @@ public class ChartServiceImpl extends Service implements ChartService { */ boolean hasVirtualFields; + private JclOrgMapper getJclOrgMapMapper() { + return MapperProxyFactory.getProxy(JclOrgMapper.class,true); + } + + private OrgChartService getOrgChartService(User user) { + return ServiceUtil.getService(OrgChartServiceImpl.class, user); + + } + @Override public Map getCompanyData(Map params) { Map result = new HashMap<>(); @@ -307,6 +322,200 @@ public class ChartServiceImpl extends Service implements ChartService { return result; } + @Override + public Map versionRecord(Map params, User user) { + RecordSetTrans recordSetTrans = new RecordSetTrans(); + recordSetTrans.setAutoCommit(false);//关闭自动提交 + + RecordSet rs = new RecordSet(); + + // 维度 + String dimension = Util.null2String(params.get("fclass")); + dimension = StringUtils.isBlank(dimension) ? "0" : dimension; + //描述 + String description = Util.null2String(params.get("description")); + + //当前日期 + String currentDate = OrganizationDateUtil.getFormatLocalDateTime(new Date()); + //当前用户 + String currentUser = String.valueOf(user.getUID()); + + + //版本记录表数据存储 + getOrgChartService(user).insertChartVersion(Integer.valueOf(dimension),description); + String versionId = ""; + String createDate = OrganizationDateUtil.getFormatLocalDate(LocalDate.now()); + rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createdate = ?",dimension,createDate); + if (rs.next()) { + versionId = Util.null2String(rs.getString("id")); + } + + String subCompanyQuerySql;//分部查询数据sql + String deptQuerySql;//部门查询数据sql + //判断是否有虚拟组织字段 + boolean virtualFlag = isHasVirtualFields(); + if (virtualFlag) { + subCompanyQuerySql = "select a.id as subcompanyid,\n" + + " a.subcompanyname,\n" + + " a.subcompanydesc,\n" + + " a.companyid as company,\n" + + " b.supsubcomid as supsubcompanyid,\n" + + " b.subcompanyname as supsubcompany,\n" + + " a.canceled,\n" + + " a.subcompanycode,\n" + + " a.limitusers,\n" + + " a.tlevel,\n" + + " c.fblx as type\n" + + " from hrmsubcompany a\n" + + " left join hrmsubcompany b on a.supsubcomid = b.id\n" + + " left join hrmsubcompanydefined c on a.id = c.subcomid "; + deptQuerySql = " select a.id as departmentid,\n" + + " a.departmentmark,\n" + + " a.departmentname,\n" + + " a.subcompanyid1 as subcompanyid,\n" + + " b.SUBCOMPANYNAME as subcompany,\n" + + " a.supdepid as supdepartmentid,\n" + + " c.departmentname as supdepartment,\n" + + " a.canceled,\n" + + " a.departmentcode,\n" + + " a.coadjutant,\n" + + " a.tlevel,\n" + + " d.bmlx as type,\n" + + " a.bmfzr as fleader\n" + + " from hrmdepartment a\n" + + " left join hrmsubcompany b on a.subcompanyid1 = b.id\n" + + " left join hrmdepartment c on a.supdepid = c.id\n" + + " left join hrmdepartmentdefined d on a.id=d.deptid;left join hrmdepartmentdefined d on a.id=d.deptid"; + + }else{ + subCompanyQuerySql = "select a.id as subcompanyid,\n" + + " a.subcompanyname,\n" + + " a.subcompanydesc,\n" + + " a.companyid as company,\n" + + " b.supsubcomid as supsubcompanyid,\n" + + " b.subcompanyname as supsubcompany,\n" + + " a.canceled,\n" + + " a.subcompanycode,\n" + + " a.limitusers,\n" + + " a.tlevel,\n" + + " from hrmsubcompany a\n" + + " left join hrmsubcompany b on a.supsubcomid = b.id"; + deptQuerySql = " select a.id as departmentid,\n" + + " a.departmentmark,\n" + + " a.departmentname,\n" + + " a.subcompanyid1 as subcompanyid,\n" + + " b.SUBCOMPANYNAME as subcompany,\n" + + " a.supdepid as supdepartmentid,\n" + + " c.departmentname as supdepartment,\n" + + " a.canceled,\n" + + " a.departmentcode,\n" + + " a.coadjutant,\n" + + " a.tlevel,\n" + + " a.bmfzr as fleader\n" + + " from hrmdepartment a\n" + + " left join hrmsubcompany b on a.subcompanyid1 = b.id\n" + + " left join hrmdepartment c on a.supdepid = c.id"; + } + + + //当前分部版本存储 + rs.executeQuery(subCompanyQuerySql); + while (rs.next()) { + rs.getString("subcompanyid"); + rs.getString("subcompanyname"); + rs.getString("subcompanydesc"); + rs.getString("company"); + rs.getString("supsubcompanyid"); + rs.getString("supsubcompany"); + rs.getString("canceled"); + rs.getString("subcompanycode"); + rs.getString("limitusers"); + rs.getString("tlevel"); + if (virtualFlag) { + rs.getString("type"); + } + //创建者、当前时间、versionId + } + int subFlag = getJclOrgMapMapper().insertSubVersionRecord(currentDate,currentUser); + + //当前部门版本存储 + rs.executeQuery(deptQuerySql); + while (rs.next()){ + rs.getString("departmentid"); + rs.getString("departmentmark"); + rs.getString("departmentname"); + rs.getString("subcompanyid"); + rs.getString("subcompany"); + rs.getString("supdepartmentid"); + rs.getString("supdepartment"); + rs.getString("canceled"); + rs.getString("departmentcode"); + rs.getString("coadjutant"); + rs.getString("tlevel"); + rs.getString("fleader"); + if (virtualFlag){ + rs.getString("type"); + } + //创建者、当前日期、versionId + } + int deptFlag = getJclOrgMapMapper().insertDeptVersionRecord(currentDate,currentDate); + + //虚拟总部存储 + rs.executeQuery("select id as companyvirtualid,companyname,companycode,companydesc,showorder,canceled," + + "virtualtype,virtualtypedesc from hrmcompanyvirtual"); + while (rs.next()){ + rs.getString("companyvirtualid"); + rs.getString("companyname"); + rs.getString("companycode"); + rs.getString("companydesc"); + rs.getString("canceled"); + rs.getString("virtualtype"); + rs.getString("virtualtypedesc"); + //创建者、当前时间 + } + + //虚拟分部版本存储 + rs.executeQuery("select a.id as subcompanyvirtualid,a.subcompanyname,a.subcompanycode,a.subcompanydesc," + + "b.subcompanyname as supsubcompany,a.supsubcomid,c.companyname as company,a.companyid,a.canceled," + + "a.virtualtypeid as virtualtype,a.tlevel,a.showorder from hrmsubcompanyvirtual a " + + "left join hrmsubcompanyvirtual b on a.supsubcomid = b.id\n" + + "left join hrmcompanyvirtual c on a.companyid = c.id"); + while (rs.next()) { + rs.getString("subcompanyvirtualid"); + rs.getString("subcompanyname"); + rs.getString("subcompanycode"); + rs.getString("subcompanydesc"); + rs.getString("supsubcompany"); + rs.getString("supsubcomid"); + rs.getString("company"); + rs.getString("companyid"); + rs.getString("canceled"); + rs.getString("virtualtype"); + rs.getString("tlevel"); + rs.getString("showorder"); + } + //虚拟部门版本存储 + int deptVirtualFlag = getJclOrgMapMapper().insertDeptVirtualVersionRecord(currentDate,currentUser); + + + //当前岗位版本存储 + + + + return null; + } + + private boolean isHasVirtualFields() { + RecordSet rs = new RecordSet(); + boolean flag = false; + rs.executeQuery("select count(1) as num from hrm_formfield where (GROUPID =6 and FIELDNAME = 'fblx') or (GROUPID =7 and FIELDNAME = 'bmlx')"); + if (rs.next()) { + String num = rs.getString("num"); + flag = "2".equals(num); + } + return flag; + } + /** * 查询实时数据,顶级元素SQL *