package com.engine.custom.yunxuetang; import com.alibaba.fastjson.JSONObject; import com.engine.custom.yunxuetang.bean.DeptRequestBody; import com.engine.custom.yunxuetang.bean.JobRequestBody; import com.engine.custom.yunxuetang.bean.JobTypeRequestBody; import com.engine.custom.yunxuetang.bean.ResponseData; import com.engine.custom.yunxuetang.util.HttpClientUtil; import com.engine.custom.yunxuetang.util.SyncUtil; import com.weaver.general.Util; import okhttp3.*; import weaver.conn.BatchRecordSet; import weaver.conn.RecordSet; import weaver.general.GCONST; import weaver.general.StringUtil; import weaver.hrm.job.JobActivitiesComInfo; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { //查询未封存的分部 数量不大暂不分页 public static final String querySubsql = "select ID,SUBCOMPANYNAME,SHOWORDER,SUBCOMPANYCODE from hrmsubcompany where CANCELED is null or CANCELED != 1"; //更新分部云学堂id public static final String updateSubyxtid = "update hrmsubcompanydefined set yxtid = ? where subcomid = ?"; //查询部门等级sql public static final String queryDeptLevelsql = "select TLEVEL level from HRMDEPARTMENT group by TLEVEL"; //根据层级获取对应层级的总数 public static final String queryDeptLevelCountsql = "select count(*) cnt from HRMDEPARTMENT where TLEVEL = ?"; //查询某级部门 public static final String queryDeptsql = "select dept.* from (" + " select id , DEPARTMENTNAME ,DEPARTMENTCODE ,SUBCOMPANYID1 , SUPDEPID,SHOWORDER, " + " ROW_NUMBER() OVER (ORDER BY SHOWORDER) AS rn from HRMDEPARTMENT where TLEVEL = ? " + " ) dept WHERE dept.rn BETWEEN ? AND ? "; //查询删除的部门 public static final String queryDelDeptsql = "select id from HRMDEPARTMENT where CANCELED = 1 order by TLEVEL desc"; // public static final String queryDelDeptsql = "select id from HRMDEPARTMENT order by TLEVEL desc"; //查询删除的分部 public static final String queryDelSubsql = "select id from HRMSUBCOMPANY where CANCELED = 1 order by TLEVEL desc"; // public static final String queryDelSubsql = "select id from HRMSUBCOMPANY order by TLEVEL desc"; //查询岗位分类 public static final String queryJobTypesql = "select * from hrmjobactivities"; //查询岗位 public static final String queryJobsql = "select * from hrmjobtitles"; public static final char Separator = Util.getSeparator(); public static void main(String[] args) { String rootPath = "D:\\WEAVER2\\ecology\\"; GCONST.setRootPath(rootPath); GCONST.setServerName("ecology"); // Test test = new Test(); //同步部门成功,开始调用删除部门接口同步封存部门 // test.syncDeptList(); //先删除部门再删除分部 // test.deldept(); //同步岗位类型 防止有同名岗位 // test.syncJobTypeList(); //同步岗位 // test.syncJobList(); JobActivitiesComInfo jobActivitiesComInfo = new JobActivitiesComInfo(); jobActivitiesComInfo.getJobActivitiesname(); // boolean next = jobActivitiesComInfo.next(); } private void syncDeptList() { //同步分部作为一级部门 //获取分部beanList SyncUtil syncUtil = new SyncUtil(); RecordSet recordSet = new RecordSet(); BatchRecordSet batchRecordSet = new BatchRecordSet(); List subcompanyList = getSubcompanyList(recordSet); List updatesubcompanyList = new ArrayList<>(); //推送数据云学堂 for (DeptRequestBody deptRequestBody : subcompanyList) { ResponseData responseData = syncUtil.syncDept(deptRequestBody); System.out.println("responseData"+responseData); String yxtid = responseData.getData().getString("id"); updatesubcompanyList.add(yxtid+Separator+deptRequestBody.getThirdId()); System.out.println("sql==="+yxtid+Separator+deptRequestBody.getThirdId()); } batchRecordSet.executeSqlBatchNew(updateSubyxtid,updatesubcompanyList); //同步部门(从一级开始同步,查询一共几级部门,按顺序推送) ArrayList levelList = new ArrayList<>(); recordSet.executeQuery(queryDeptLevelsql); while (recordSet.next()){ int level = Util.getIntValue(recordSet.getString("level"),2); levelList.add(level); } Collections.sort(levelList); //去重,一般不会有这个问题 List listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(levelList)); //禁止在循环中创建recordSet对象,防止连接溢出 for (int i = 0; i < listWithoutDuplicates.size(); i++) { int total = getTotalRecords(recordSet, listWithoutDuplicates.get(i)); int pageSize = 200; int totalPages = (int) Math.ceil((double) total / pageSize); if (i == 0) { //level为2的作为2级部门,上级部门字段为分部 for (int pageIndex = 0; pageIndex < totalPages; pageIndex++) { List pageData = getDeptList(listWithoutDuplicates.get(i),recordSet,pageIndex, pageSize); for (DeptRequestBody deptRequestBody : pageData) { ResponseData responseData = syncUtil.syncDept(deptRequestBody); System.out.println("deptRequestBody===>"+deptRequestBody); System.out.println("responseData===>"+responseData); responseData.getData().getString("id"); } } } else { //level大于2的上级部门为oa原上级部门 for (int pageIndex = 0; pageIndex < totalPages; pageIndex++) { List pageData = getDeptList(listWithoutDuplicates.get(i),recordSet,pageIndex, pageSize); for (DeptRequestBody deptRequestBody : pageData) { ResponseData responseData = syncUtil.syncDept(deptRequestBody); System.out.println("deptRequestBody===>"+deptRequestBody); System.out.println("responseData===>"+responseData); responseData.getData().getString("id"); } } } } } private List getSubcompanyList(RecordSet recordSet){ recordSet.executeQuery(querySubsql); ArrayList subcompanyList = new ArrayList<>(); while (recordSet.next()){ DeptRequestBody deptRequestBody = new DeptRequestBody(); //三方id deptRequestBody.setThirdId(Util.null2String("sub_"+recordSet.getString("ID"))); //分部名称 deptRequestBody.setName(Util.null2String(recordSet.getString("SUBCOMPANYNAME"))); //排序 deptRequestBody.setOrderIndex(Util.getIntValue(recordSet.getString("SHOWORDER"))); //编码 deptRequestBody.setCode(Util.null2String(recordSet.getString("SUBCOMPANYCODE"))); subcompanyList.add(deptRequestBody); } return subcompanyList; }; private List getDeptList(Integer level, RecordSet recordSet ,int pageIndex, int pageSize) { ArrayList deptRequestBodyList = new ArrayList<>(); int start = pageIndex * pageSize + 1; int end = start + pageSize - 1; recordSet.executeQuery(queryDeptsql,level,start,end); while (recordSet.next()){ DeptRequestBody deptRequestBody = new DeptRequestBody(); //三方id deptRequestBody.setThirdId("dept_"+Util.null2String(recordSet.getString("ID"))); //分部名称 deptRequestBody.setName(Util.null2String(recordSet.getString("DEPARTMENTNAME"))); //排序 deptRequestBody.setOrderIndex(Util.getIntValue(recordSet.getString("SHOWORDER"))); //编码 deptRequestBody.setCode(Util.null2String(recordSet.getString("DEPARTMENTCODE"))); String supdepid = Util.null2String(recordSet.getString("SUPDEPID")); if ("0".equals(supdepid)|| StringUtil.isEmpty(supdepid)){ deptRequestBody.setParentThirdId("sub_"+Util.null2String(recordSet.getString("SUBCOMPANYID1"))); }else { deptRequestBody.setParentThirdId("dept_"+supdepid); } deptRequestBodyList.add(deptRequestBody); } return deptRequestBodyList; } //获取对应层级总数 public static int getTotalRecords(RecordSet recordSet , int level) { recordSet.executeQuery(queryDeptLevelCountsql,level); recordSet.next(); return recordSet.getInt("cnt"); } //删除部门 public void deldept() { SyncUtil syncUtil = new SyncUtil(); RecordSet recordSet = new RecordSet(); recordSet.executeQuery(queryDelDeptsql); while (recordSet.next()){ syncUtil.syncDelDept("dept_"+recordSet.getString("id")); } recordSet.executeQuery(queryDelSubsql); while (recordSet.next()){ syncUtil.syncDelDept("sub_"+recordSet.getString("id")); } } private void syncJobList() { SyncUtil syncUtil = new SyncUtil(); ArrayList jobRequestBodyList = getJobRequestBodyList(); for (JobRequestBody jobRequestBody : jobRequestBodyList) { syncUtil.syncJobs(jobRequestBody); } } private void syncJobTypeList() { SyncUtil syncUtil = new SyncUtil(); ArrayList jobTypeRequestBodyList = getJobTypeRequestBodyList(); for (JobTypeRequestBody jobTypeRequestBody : jobTypeRequestBodyList) { syncUtil.syncJobType(jobTypeRequestBody); } } // 获取岗位 private ArrayList getJobRequestBodyList() { RecordSet recordSet = new RecordSet(); ArrayList jobList = new ArrayList<>(); recordSet.executeQuery(queryJobsql); while (recordSet.next()){ String id = recordSet.getString("id"); String jobtitlename = recordSet.getString("JOBTITLENAME"); JobRequestBody jobRequestBody = new JobRequestBody(); jobRequestBody.setThirdId(id); jobRequestBody.setName(jobtitlename); jobList.add(jobRequestBody); } return jobList; } // 获取岗位分类 private ArrayList getJobTypeRequestBodyList() { RecordSet recordSet = new RecordSet(); ArrayList jobTypeList = new ArrayList<>(); recordSet.executeQuery(queryJobTypesql); while (recordSet.next()){ String id = recordSet.getString("id"); String jobtitlename = recordSet.getString("JOBACTIVITYNAME"); JobTypeRequestBody jobTypeRequestBody = new JobTypeRequestBody(); jobTypeRequestBody.setThirdId(id); jobTypeRequestBody.setName(jobtitlename); jobTypeList.add(jobTypeRequestBody); } return jobTypeList; } public static String extractChinesePart(String input) { // 正则表达式匹配 ~`~`数字 中文内容`~`数字 的模式 Pattern pattern = Pattern.compile("~`~`\\d+ ([\u4e00-\u9fa5]+)`~`"); Matcher matcher = pattern.matcher(input); if (matcher.find()) { return matcher.group(1); // 返回匹配的第一个分组,即中文内容 } //birthdayReminders return input; } }