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
*