组织管理版本记录数据同步

pull/193/head
Mlin 2 years ago
parent 6befb0de03
commit 10a9a350b4

@ -3,6 +3,8 @@ 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;
@ -382,16 +384,32 @@ public class ChartServiceImpl extends Service implements ChartService {
//当前用户
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);
rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createtime = ?",dimension,createDate);
if (rs.next()) {
versionId = Util.null2String(rs.getString("id"));
}
if ("0".equals(dimension)) {
//实体维度
trueDimension(versionId,currentUser,currentDate);
} else {
virtualDimension(versionId,currentUser,currentDate,dimension);
}
Map<String, Object> result = new HashMap<>();
result.put("api_status", true);
return result;
}
private void trueDimension(String versionId,String currentUser,String currentDate){
RecordSet rs = new RecordSet();
rs.execute("delete from jcl_chart_subcompany where versionid = "+versionId);
rs.execute("delete from jcl_chart_department where versionid = "+versionId);
rs.execute("delete from jcl_chart_job where versionid = "+versionId);
rs.execute("delete from jcl_chart_resource where versionid = "+versionId);
String subCompanyQuerySql;//分部查询数据sql
String deptQuerySql;//部门查询数据sql
//判断是否有虚拟组织字段
@ -407,27 +425,16 @@ public class ChartServiceImpl extends Service implements ChartService {
" a.subcompanycode,\n" +
" a.limitusers,\n" +
" a.tlevel,\n" +
" c.fblx as type\n" +
" c.fblx as isvirtual\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";
deptQuerySql = "select 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,d.bmlx as isvirtual,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";
}else{
subCompanyQuerySql = "select a.id as subcompanyid,\n" +
@ -442,7 +449,7 @@ public class ChartServiceImpl extends Service implements ChartService {
" a.tlevel,\n" +
" from hrmsubcompany a\n" +
" left join hrmsubcompany b on a.supsubcomid = b.id";
deptQuerySql = " select a.id as departmentid,\n" +
deptQuerySql = "select a.id as departmentid,\n" +
" a.departmentmark,\n" +
" a.departmentname,\n" +
" a.subcompanyid1 as subcompanyid,\n" +
@ -460,91 +467,280 @@ public class ChartServiceImpl extends Service implements ChartService {
}
List<Object> insertList = new ArrayList<>();
List<List<Object>> insertParamList = new ArrayList<>();
//当前分部版本存储
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
insertList = new ArrayList<>();
insertList.add(currentUser);
insertList.add(rs.getInt("subcompanyid"));
insertList.add(rs.getString("subcompanyname"));
insertList.add(rs.getString("subcompanydesc"));
insertList.add(rs.getString("company"));
insertList.add(rs.getInt("supsubcompanyid"));
insertList.add(rs.getString("supsubcompany"));
insertList.add(rs.getInt("canceled"));
insertList.add(rs.getString("subcompanycode"));
insertList.add(rs.getInt("limitusers"));
insertList.add(rs.getInt("tlevel"));
insertList.add(currentDate);
insertList.add(virtualFlag ? Util.getIntValue(rs.getString("isvirtual"),0) : 1);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
int subFlag = getJclOrgMapMapper().insertSubVersionRecord(currentDate,currentUser);
String insertSubSql = "insert into jcl_chart_subcompany(creater, subcompanyid, subcompanyname, subcompanydesc, company,\n" +
" supsubcompanyid, supsubcompany, canceled, subcompanycode, limitusers,\n" +
" tlevel, versiondate, isvirtual,versionId) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertSubSql,insertParamList);
//当前部门版本存储
rs.executeQuery(deptQuerySql);
insertParamList = new ArrayList<>();
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
insertList = new ArrayList<>();
insertList.add(currentUser);
insertList.add(rs.getInt("departmentid"));
insertList.add(rs.getString("departmentmark"));
insertList.add(rs.getString("departmentname"));
insertList.add(rs.getInt("subcompanyid"));
insertList.add(rs.getString("subcompany"));
insertList.add(rs.getInt("supdepartmentid"));
insertList.add(rs.getString("supdepartment"));
insertList.add(rs.getInt("canceled"));
insertList.add(rs.getString("departmentcode"));
insertList.add(rs.getString("coadjutant"));
// insertList.add(rs.getInt("tlevel"));
insertList.add(rs.getString("fleader"));
insertList.add(currentDate);
insertList.add(virtualFlag ? Util.getIntValue(rs.getString("isvirtual"),0) : 1);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
String insertDeptSql = "insert into jcl_chart_department(creater, departmentid, departmentmark, departmentname, subcompanyid,\n" +
" subcompany, supdepartmentid, supdepartment, canceled, departmentcode,\n" +
" coadjutant, fleader,versiondate, isvirtual,versionid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertDeptSql,insertParamList);
//当前岗位版本存储
rs.executeQuery("select a.id as jobid,a.job_name 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 " +
"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(currentUser);
insertList.add(rs.getString("jobname"));
insertList.add(rs.getString("departmentid"));
insertList.add(rs.getString("department"));
insertList.add(rs.getString("subcompanyid"));
insertList.add(rs.getString("subcompany"));
insertList.add(rs.getString("jobresponsibility"));
insertList.add(rs.getString("canceled"));
insertList.add(rs.getString("jobcode"));
insertList.add(rs.getString("description"));
insertList.add(currentDate);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
String insertJobSql = "insert into jcl_chart_job(jobid,creater,jobname,departmentid,department,subcompanyid," +
"subcompany,jobresponsibility,canceled,jobcode,description,versiondate,versionid)values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertJobSql,insertParamList);
//当前人员版本存储
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," +
"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 hrmdepartment e on a.departmentid = e.id " +
"left join hrmsubcompany f on a.subcompanyid1=f.id");
insertParamList = new ArrayList<>();
while (rs.next()) {
insertList = new ArrayList<>();
insertList.add(rs.getInt("resourceid"));
insertList.add(currentUser);
insertList.add(rs.getInt("workyear"));
insertList.add(rs.getString("usekind"));
insertList.add(rs.getString("managerstr"));
insertList.add(rs.getInt("status"));
insertList.add(rs.getString("sex"));
insertList.add(rs.getInt("accounttype"));
insertList.add(rs.getInt("belongto"));
insertList.add(rs.getString("loginid"));
insertList.add(rs.getString("maritalstatus"));
insertList.add(rs.getString("telephone"));
insertList.add(rs.getString("mobile"));
insertList.add(rs.getString("mobilecall"));
insertList.add(rs.getString("email"));
insertList.add(rs.getString("locationname"));
insertList.add(rs.getString("resourcetype"));
insertList.add(rs.getString("startdate"));
insertList.add(rs.getString("enddate"));
insertList.add(rs.getInt("jobtitleid"));
insertList.add(rs.getString("jobtitle"));
insertList.add(rs.getInt("joblevel"));
insertList.add(rs.getInt("seclevel"));
insertList.add(rs.getInt("departmentid"));
insertList.add(rs.getString("department"));
insertList.add(rs.getInt("subcompanyid"));
insertList.add(rs.getString("subcompany"));
insertList.add(rs.getString("costcenter"));
insertList.add(rs.getInt("manager"));
insertList.add(rs.getInt("assistant"));
insertList.add(rs.getString("workcode"));
insertList.add(rs.getString("classification"));
insertList.add(currentDate);
insertList.add(rs.getString("policy"));
insertList.add(rs.getString("degree"));
insertList.add(Util.getIntValue(versionId));
insertList.add(rs.getString("lastname"));
insertList.add(rs.getString("companyworkyear"));
insertParamList.add(insertList);
}
int deptFlag = getJclOrgMapMapper().insertDeptVersionRecord(currentDate,currentDate);
String insertResourceSql = "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,lastname,companyworkyear) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertResourceSql,insertParamList);
}
private void virtualDimension(String versionId,String currentUser,String currentDate,String fclass){
RecordSet rs = new RecordSet();
List<Object> insertList;
List<List<Object>> insertParamList = new ArrayList<>();
rs.execute("delete from jcl_chart_companyvirtual where versionid = "+versionId);
rs.execute("delete from jcl_chart_subcompanyvirtual where versionid = "+versionId);
rs.execute("delete from jcl_chart_departmentvirtual where versionid = "+versionId);
rs.execute("delete from jcl_chart_resource where versionid = "+versionId);
//虚拟总部存储
rs.executeQuery("select id as companyvirtualid,companyname,companycode,companydesc,showorder,canceled," +
"virtualtype,virtualtypedesc from hrmcompanyvirtual");
"virtualtype,virtualtypedesc from hrmcompanyvirtual where id=?",fclass);
while (rs.next()){
rs.getString("companyvirtualid");
rs.getString("companyname");
rs.getString("companycode");
rs.getString("companydesc");
rs.getString("canceled");
rs.getString("virtualtype");
rs.getString("virtualtypedesc");
//创建者、当前时间
insertList = new ArrayList<>();
insertList.add(rs.getInt("companyvirtualid"));
insertList.add(currentUser);
insertList.add(rs.getString("companyname"));
insertList.add(rs.getString("companycode"));
insertList.add(rs.getString("companydesc"));
insertList.add(Util.getIntValue(rs.getString("showorder")));
insertList.add(rs.getInt("canceled"));
insertList.add(rs.getString("virtualtype"));
insertList.add(rs.getString("virtualtypedesc"));
insertList.add(currentDate);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
String insertVirtualComSql = "insert into jcl_chart_companyvirtual(companyvirtualid,creater,companyname,companycode,companydesc,showorder,\n" +
"canceled,virtualtype,virtualtypedesc,versiondate,versionid) values(?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertVirtualComSql,insertParamList);
//虚拟分部版本存储
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");
"left join hrmcompanyvirtual c on a.companyid = c.id where a.companyid=?",fclass);
insertParamList = new ArrayList<>();
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");
insertList = new ArrayList<>();
insertList.add(rs.getInt("subcompanyvirtualid"));
insertList.add(currentUser);
insertList.add(rs.getString("subcompanyname"));
insertList.add(rs.getString("subcompanycode"));
insertList.add(rs.getString("subcompanydesc"));
insertList.add(rs.getString("supsubcompany"));
insertList.add(rs.getInt("supsubcomid"));
insertList.add(rs.getString("company"));
insertList.add(rs.getInt("companyid"));
insertList.add(rs.getInt("canceled"));
insertList.add(rs.getString("virtualtype"));
insertList.add(rs.getString("tlevel"));
insertList.add(Util.getIntValue(rs.getString("showorder")));
insertList.add(currentDate);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
//虚拟部门版本存储
int deptVirtualFlag = getJclOrgMapMapper().insertDeptVirtualVersionRecord(currentDate,currentUser);
//当前岗位版本存储
String insertVirtualSubComSql = "insert into jcl_chart_subcompanyvirtual(subcompanyvirtualid, creater, " +
"subcompanyname, subcompanycode,subcompanydesc, supsubcompany, supsubcomid, company, companyid," +
"canceled, virtualtype, tlevel, showorder, versiondate,versionid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertVirtualSubComSql,insertParamList);
//虚拟部门版本存储
rs.executeQuery("select a.id as departmentvirtualid,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 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);
insertParamList = new ArrayList<>();
while (rs.next()){
insertList = new ArrayList<>();
insertList.add(rs.getInt("departmentvirtualid"));
insertList.add(currentUser);
insertList.add(rs.getString("departmentname"));
insertList.add(rs.getString("departmentcode"));
insertList.add(rs.getString("departmentmark"));
insertList.add(rs.getString("supdeptment"));
insertList.add(rs.getInt("supdepid"));
insertList.add(rs.getString("allsupdepid"));
insertList.add(rs.getString("subcompany"));
insertList.add(rs.getInt("subcompanyid"));
insertList.add(rs.getInt("canceled"));
insertList.add(rs.getString("virtualtype"));
insertList.add(rs.getString("tlevel"));
insertList.add(Util.getIntValue(rs.getString("showorder")));
insertList.add(currentDate);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
String insertVirtualDeptSql = "insert into jcl_chart_departmentvirtual(departmentvirtualid, creater, " +
"departmentname, departmentcode,departmentmark, supdeptment, supdepid, allsupdepid, subcompany, " +
"subcompanyid, canceled, virtualtype, tlevel, showorder, versiondate,versionid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
insertData(insertVirtualDeptSql,insertParamList);
//虚拟人员版本存储
rs.executeQuery("select resourceid,a.managerid,b.SUBCOMPANYID1 as subcompanyid,b.departmentid,a.managerstr," +
"virtualtype from hrmresourcevirtual a left join hrmresource b on a.RESOURCEID=b.ID where a.virtualtype=?",fclass);
insertParamList = new ArrayList<>();
while (rs.next()) {
insertList = new ArrayList<>();
insertList.add(rs.getInt("resourceid"));
insertList.add(rs.getInt("managerid"));
insertList.add(rs.getInt("subcompanyid"));
insertList.add(rs.getInt("departmentid"));
insertList.add(rs.getString("managerstr"));
insertList.add(rs.getString("virtualtype"));
insertList.add(currentDate);
insertList.add(Util.getIntValue(versionId));
insertParamList.add(insertList);
}
String insertVirtualHrmSql = "insert into jcl_chart_resource(resourceid,MANAGER,subcompanyid," +
"departmentid,managerstr,virtualtype,versiondate,versionid) values (?,?,?,?,?,?,?,?)";
insertData(insertVirtualHrmSql,insertParamList);
}
return null;
private void insertData(String insertSql,List<List<Object>> insertParamList) {
RecordSetTrans recordSetTrans = new RecordSetTrans();
recordSetTrans.setAutoCommit(false);//关闭自动提交
try {
recordSetTrans.executeBatchSql(insertSql,insertParamList);
recordSetTrans.commit();
} catch (Exception e) {
recordSetTrans.rollback();
e.printStackTrace();
}
}
private boolean isHasVirtualFields() {

@ -609,13 +609,13 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
RecordSet rs = new RecordSet();
String recordDate = OrganizationDateUtil.getFormatLocalDateTime(LocalDateTime.now());
String createDate = OrganizationDateUtil.getFormatLocalDate(LocalDate.now());
rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createdate = ?",fclass,createDate);
rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createtime = ?",fclass,createDate);
rs.next();
String id = Util.null2String(rs.getString("id"));
if(StringUtils.isNotEmpty(id)){
rs.executeUpdate("update JCL_ORG_CHARTVERSION set recorddate = ?,description = ?,creator = ? where fclass = ? and createdate = ?",recordDate,description,user.getUID(),fclass,createDate);
rs.executeUpdate("update JCL_ORG_CHARTVERSION set recorddate = ?,description = ?,creator = ? where fclass = ? and createtime = ?",recordDate,description,user.getUID(),fclass,createDate);
}else {
rs.executeUpdate("insert into JCL_ORG_CHARTVERSION (recorddate,description,creator,deletetype,createdate,fclass) values(?,?,?,?,?,?)",recordDate,description,user.getUID(),0,createDate,fclass);
rs.executeUpdate("insert into JCL_ORG_CHARTVERSION (recorddate,description,creator,deletetype,createtime,fclass) values(?,?,?,?,?,?)",recordDate,description,user.getUID(),0,createDate,fclass);
}
}

@ -80,6 +80,23 @@ public class OrgChartController {
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/versionRecord")
@Produces(MediaType.APPLICATION_JSON)
public String versionRecord(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
apidatas = getOrgChartWrapper(user).versionRecord(ParamUtil.request2Map(request), user);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getSubCompanyTree")

@ -64,4 +64,8 @@ public class OrgChartWrapper extends Service {
public Map<String, Object> getDepartmentDetail(Map<String, Object> request2Map, User user) {
return getChartService(user).getDepartmentDetail(request2Map);
}
public Map<String, Object> versionRecord(Map<String, Object> request2Map, User user) {
return getChartService(user).versionRecord(request2Map,user);
}
}

Loading…
Cancel
Save