新增初始化动作流

This commit is contained in:
Administrator 2025-07-02 19:42:39 +08:00
parent 19c5e0336d
commit d33ae54e23
3 changed files with 665 additions and 2 deletions

View File

@ -0,0 +1,542 @@
package com.weaver.seconddev.jcl.organization.esb;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.common.mybatis.util.DatabaseUtil;
import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface;
import com.weaver.seconddev.jcl.organization.util.DatabaseUtils;
import com.weaver.seconddev.jcl.organization.util.RecruitModuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* @use初始化系统人员到员工信息表
* @date 2025年7月2日
* @author xuxy
*/
@Service("InitializationEmployeeInfo_jcl")
public class InitializationEmployeeInfo implements EsbServerlessRpcRemoteInterface {
@Autowired
private DatabaseUtils databaseUtils;
private static final Logger log = LoggerFactory.getLogger(InitializationEmployeeInfo.class);
private static String nowData;
@Autowired
RecruitModuleUtils recruitModuleUtils;
@Override
public WeaResult<Map<String, Object>> execute(Map<String, Object> params) {
String formId = null!=params.get("formId")?String.valueOf(params.get("formId").toString()):"";
String layoutId = null!=params.get("layoutId")?String.valueOf(params.get("layoutId").toString()):"";
String objId = null!=params.get("objId")?String.valueOf(params.get("objId").toString()):"";
log.error("InitializationEmployeeInfo.formId:[{}],layoutId:{},objId:{}",formId,layoutId,objId);
Map<String, Object> result = new HashMap<>();
String tenant_key = RecruitModuleUtils.getCurrentTenantKey();
log.error("InitializationEmployeeInfo.tenant_key:{}", tenant_key);
//当前时间
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 定义日期时间格式化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化当前日期
nowData = now.format(formatter);
log.error("InitializationEmployeeInfo.nowData:{}", nowData);
//根据ygxxid查询源数据
/**
* 多租户查询主表名称
*/
Map<String, String> ebTableInfo = recruitModuleUtils.getEbTableInfo("uf_jcl_employee_information_apptag", "uf_jcl_employee_information_tag");
String obj_Id = ebTableInfo.get("objId");
String ebTableName = ebTableInfo.get("table_name");
log.error("InitializationEmployeeInfo.ebTableName:{}", ebTableName);
/**
* 查询组织人员系统表新导入数据
*/
String sql = " select a.id,a.id FORM_DATA_ID,0 as DATA_INDEX,a.CREATE_TIME,a.UPDATE_TIME,\n" +
" '"+tenant_key+"' as TENANT_KEY,a.DELETE_TYPE IS_DELETE,a.CREATOR,a.DELETE_TYPE,0 as FT_STATUS,0 as is_flow,\n" +
" 1 as data_status,0 as is_top,4 as classification,0 as dn_first,\n" +
" a.id glzzyg,b.child_status, b.first_work_date, b.work_year, b.family_contact,\n" +
" b.accumfundaccount, b.bank_accountname, b.bank_account, b.residence_place, b.native_place, b.marital_status,\n" +
" b.graduate_school, b.nation, b.education, b.politics_status, b.household_type, a.username, a.email, a.mobile, a.telephone, a.avatar,\n" +
" a.personnel_status personnel_status_jcl, a.superior, a.sec_level, a.position, a.grade, a.job_num, a.hiredate, a.jobset_level,\n" +
" b.id_no, b.birthday, b.age, b.graduate_date, b.degree degreename, a.department, a.sex,\n" +
" b.branch_bank_id, b.bankid\n" +
" from eteams.employee a left join ecology10.hr_userinfo b on a.id = b.user\n" +
" left join "+ebTableName+" as tgt on a.id = tgt.id\n" +
" where a.delete_type=0 and a.tenant_key ='"+tenant_key+"' and tgt.id IS NULL ";
log.error("InitializationEmployeeInfo.sql111:{}", sql);
Map<String, Object> rs2 = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> employee_infos = databaseUtils.getDataSourceList(rs2);
log.error("InitializationEmployeeInfo.employee_infos:{}", employee_infos);
/**
* 先同步系统主表信息
*/
for (Map<String, Object> employeeInfo : employee_infos) {
cleanUpTime(employeeInfo);
insert(ebTableName,employeeInfo);
/**
* 写入表单引擎数据大表
*/
insertFormdata(employeeInfo,formId,layoutId);
/**
* 写入EB表单数据大表
*/
insertPhysical(employeeInfo,objId);
}
/**
* 员工信息表人员状态转换
*/
sql=" UPDATE "+ebTableName+"\n" +
" SET personnel_status = CASE\n" +
" WHEN personnel_status_jcl = 1 THEN 1\n" +
" WHEN personnel_status_jcl = 3 THEN 2\n" +
" WHEN personnel_status_jcl = 6 THEN 5\n" +
" WHEN personnel_status_jcl = 7 THEN 6\n" +
" ELSE 4\n" +
" END\n" +
"WHERE 1=1 ";
List<Map<String, Object>> info = getYgxxDetailInfo(sql);
log.error("InitializationEmployeeInfo.personnel_status:{}", info);
/**
* 单独刷新一下所属公司字段
*/
sql = " UPDATE "+ebTableName+" e\n" +
"JOIN eteams.employee a on e.id=a.id\n" +
"join eteams.department b\n" +
"on a.department = b.id\n" +
"SET e.subcompany = b.subcompanyid where a.tenant_key = '"+tenant_key+"' ";
List<Map<String, Object>> info2 = getYgxxDetailInfo(sql);
log.error("InitializationEmployeeInfo.subcompany:{}", info2);
/**
* 明细表同步
*/
syncAllYgxxDetailInfo(Long.parseLong(obj_Id),tenant_key);
/**
* 映射表数据
*/
Map<String, Object> mapping = getMapping();
log.error("InitializationEmployeeInfo.mapping:{}", mapping);
result.put("code",200);
result.put("msg","初始化数据成功!");
log.error("InitializationEmployeeInfo.result:"+result);
return WeaResult.success(result);
}
/**
* 写入表单引擎数据大表
* @return
*/
public void insertFormdata(Map<String, Object> map,String form_id, String layout_id){
String sql="insert into formdata(id, form_id, layout_id, data_status, tenant_key, operator, create_time, update_time, " +
" module, client, is_delete, creator, delete_type)" +
" values('" + map.get("id") + "','" + form_id + "','" + layout_id + "','submit','" + map.get("tenant_key") + "','" + map.get("updater") + "','" + map.get("create_time") + "'," +
" '" + map.get("update_time") + "','ebuilderform','pc','" + map.get("delete_type") + "','" + map.get("creator") + "','" + map.get("delete_type") + "')";
log.error("insertFormdata.sql:{}", sql);
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> recordList = databaseUtils.getDataSourceList(rs);
log.error("insertFormdata.recordList:{}", recordList);
}
/**
* 写入EB表单数据大表
* @return
*/
public void insertPhysical(Map<String, Object> map,String obj_id){
String sql="insert into ebdf_physical_data(id, tenant_key, obj_id, name, form_data_id, form_table_id, is_flow, data_status, creator, create_time)" +
" values('" + map.get("id") + "','" + map.get("tenant_key") + "','" + obj_id + "','" + map.get("name") + "','" + map.get("id") + "'," +
" '" + map.get("id") + "','" + map.get("is_flow") + "','" + map.get("data_status") + "','" + map.get("creator") + "','" + map.get("create_time") + "')";
log.error("insertPhysical.sql:{}", sql);
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> recordList = databaseUtils.getDataSourceList(rs);
log.error("insertPhysical.recordList:{}", recordList);
}
/**
* 数据同步处理明细表
* @return
*/
public void syncAllYgxxDetailInfo(long objId,String tenant_key){
log.error("syncAllYgxxDetailInfo.objId:{},tenant_key:{}",objId,tenant_key);
String uf_jcl_emp_gzll = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_gzll");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_gzll:{}", uf_jcl_emp_gzll);
/**
* 工作履历表
* */
String gzsql = " SELECT src.id, src.user_id FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type as IS_DELETE,src.creator,src.delete_type,src.position, src.department,src.company,\n" +
" src.end_date, src.start_date, src.dimiss_reason, src.prover, src.prover_mobile,\n" +
" src.job_name, src.job_remark FROM hr_employment_record AS src\n" +
" LEFT JOIN "+uf_jcl_emp_gzll+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"'";
List<Map<String, Object>> gzllInfo = getYgxxDetailInfo(gzsql);
log.error("getYgxxDetailInfo.gzllInfo:{}", gzllInfo);
for (Map<String, Object> map : gzllInfo) {
cleanUpTime(map);
map.remove("hiredate");
insert(uf_jcl_emp_gzll,map);
}
/**
* 教育经历表
* */
String uf_jcl_emp_jyjl = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_jyjl");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_jyjl:{}", uf_jcl_emp_jyjl);
String jysql = " SELECT src.id, src.employee_id FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type,src.education, src.data_end, src.data_start,\n" +
" src.edu_degree, src.remark, src.data_name, src.emp_major FROM hr_education AS src\n" +
" LEFT JOIN "+uf_jcl_emp_jyjl+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"' ";
List<Map<String, Object>> jyjlInfo = getYgxxDetailInfo(jysql);
log.error("getYgxxDetailInfo.jyjlInfo:{}", jyjlInfo);
for (Map<String, Object> map : jyjlInfo) {
//插入教育经历表
cleanUpTime(map);
map.remove("hiredate");
insert(uf_jcl_emp_jyjl,map);
}
/**
* 家庭信息表
* */
String uf_jcl_emp_jtxx = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_jtxx");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_jtxx:{}", uf_jcl_emp_jtxx);
String jtxxsql = "SELECT src.id, src.employee_id as FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type, src.job_name, src.fm_birthday,\n" +
" src.work_company, src.childrenflag, src.title, src.member_name, src.address_name FROM hr_family AS src\n" +
" LEFT JOIN "+uf_jcl_emp_jtxx+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"' ";
List<Map<String, Object>> jtxxInfo = getYgxxDetailInfo(jtxxsql);
log.error("getYgxxDetailInfo.jtxxInfo:{}", jtxxInfo);
for (Map<String, Object> map : jtxxInfo) {
//插入家庭信息表
cleanUpTime(map);
map.remove("hiredate");
insert(uf_jcl_emp_jtxx,map);
}
/**
* 表彰与奖励
* */
String uf_jcl_emp_bzyjl = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_bzyjl");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_bzyjl:{}", uf_jcl_emp_bzyjl);
String bzsql = "SELECT src.id,src. employeeid FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type,src.reward_date, src.reward_remark, src.reward_name FROM hr_rewards_before AS src\n" +
" LEFT JOIN "+uf_jcl_emp_bzyjl+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"';";
List<Map<String, Object>> bzInfo = getYgxxDetailInfo(bzsql);
log.error("getYgxxDetailInfo.bzInfo:{}", bzInfo);
for (Map<String, Object> map : bzInfo) {
cleanUpTime(map);
map.remove("hiredate");
//插入家庭信息表
insert(uf_jcl_emp_bzyjl,map);
}
/**
* 培训经历
* */
String uf_jcl_emp_pxjl = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_pxjl");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_pxjl:{}", uf_jcl_emp_pxjl);
String pxsql = "SELECT src.id, src.employee_id FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type,src.train_company, src.remark, src.data_name, src.data_start, src.data_end FROM hr_train AS src\n" +
" LEFT JOIN "+uf_jcl_emp_pxjl+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"'";
List<Map<String, Object>> pxInfo = getYgxxDetailInfo(pxsql);
log.error("getYgxxDetailInfo.pxInfo:{}", pxInfo);
for (Map<String, Object> map : pxInfo) {
//插入培训表
cleanUpTime(map);
map.remove("hiredate");
insert(uf_jcl_emp_pxjl,map);
}
/**
* 语言能力
* */
String uf_jcl_emp_yynl = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_yynl");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_yynl:{}", uf_jcl_emp_yynl);
String yysql = "SELECT src.id, src.employee_id FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type\n" +
" ,src.user_language, src.lang_level, src.remark FROM hr_language AS src\n" +
" LEFT JOIN "+uf_jcl_emp_yynl+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"'";
List<Map<String, Object>> yyInfo = getYgxxDetailInfo(yysql);
log.error("getYgxxDetailInfo.yyInfo:{}", yyInfo);
for (Map<String, Object> map : yyInfo) {
//插入培训表
cleanUpTime(map);
map.remove("hiredate");
insert("hr_language",map);
}
/**
* 权威机构资格
* */
String uf_jcl_emp_qwjgzgrz = recruitModuleUtils.getDetailTableNameByMasterId(objId, "uf_jcl_emp_qwjgzgrz");
log.error("syncAllYgxxDetailInfo.uf_jcl_emp_qwjgzgrz:{}", uf_jcl_emp_qwjgzgrz);
String qwsql = "SELECT src.id, src.employee_id FORM_DATA_ID, 1 as DATA_INDEX,src.create_time,src.update_time,'"+tenant_key+"' as TENANT_KEY,\n" +
" src.delete_type IS_DELETE,src.creator,src.delete_type, src.award_company, src.data_end, src.data_start,src.data_name FROM hr_certification AS src\n" +
" LEFT JOIN "+uf_jcl_emp_qwjgzgrz+" AS tgt ON src.id = tgt.id\n" +
" WHERE tgt.id IS NULL and src.tenant_key = '"+tenant_key+"'";
List<Map<String, Object>> qwInfo = getYgxxDetailInfo(qwsql);
log.error("getYgxxDetailInfo.qwInfo:{}", qwInfo);
for (Map<String, Object> map : qwInfo) {
//插入权威机构表
cleanUpTime(map);
map.remove("hiredate");
insert(uf_jcl_emp_qwjgzgrz,map);
}
}
/**
* 根据明细表名称和关联id查询员工信息明细表数据
* @return
*/
public List<Map<String, Object>> getYgxxDetailInfo(String sql){
log.error("getYgxxDetailInfo.sql:{}", sql);
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> recordList = databaseUtils.getDataSourceList(rs);
log.error("getYgxxDetailInfo.recordList:{}", recordList);
return recordList;
}
/**
* 获得key名映射
* @return
*/
public Map<String,Object> getMapping(){
/**
* 多租户查询主表名称
*/
Map<String, String> ebTableInfo = recruitModuleUtils.getEbTableInfo("uf_jcl_employee_information_apptag", "uf_jcl_zdtbysb_tag");
String ebTableName = ebTableInfo.get("table_name");
log.error("InitializationEmployeeInfo.ebTableName:{}", ebTableName);
String sql = "select ygxxzdkey,rlxtzdkey from "+ebTableName;
List<Map<String, Object>> recordList = databaseUtils.getSqlList(sql);
Map<String, Object> resultMap = recordList.stream().collect(Collectors.toMap(e->e.get("rlxtzdkey").toString(),e -> e.get("ygxxzdkey").toString()));
return resultMap;
}
public int insert(String tableName, Map<String, Object> setMap){
int result = 400;
log.info("insert-setMap{}",setMap);
if (StringUtils.isBlank(tableName) || null==setMap || setMap.size() <= 0) {
return result;
}
List<String> setkey = new ArrayList<>();
List<Object> setvalue = new ArrayList<>();
setMap.forEach((key1, value) -> {
setkey.add(key1);
setvalue.add(value);
});
List<String> setvalueNew = new ArrayList<>();
for (Object obj : setvalue) {
if (obj == null) {
setvalueNew.add("");
} else {
setvalueNew.add(obj.toString());
}
}
String sql = " insert into " + tableName + "(" + String.join(",", setkey) + ") values('"
+ String.join("','", setvalueNew)+ "')";
log.info("insert-sql{}",sql);
//查询数据库类型
String databaseId = DatabaseUtil.getDatabaseId();
log.info("insert-databaseId{}",databaseId);
if(databaseId.equalsIgnoreCase("oracle")){
// 正则表达式匹配日期格式
Pattern pattern = Pattern.compile("'(\\d{4}-\\d{2}-\\d{2})'");
Matcher matcher = pattern.matcher(sql);
// 使用 StringBuffer 进行替换
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "TO_DATE('" + matcher.group(1) + "', 'yyyy-mm-dd')");
}
matcher.appendTail(sb);
String updatedSql = sb.toString();
System.out.println(updatedSql);
// 示例字符串包含日期和时间
// 正则表达式匹配日期和时间格式
Pattern patternWithTime = Pattern.compile("'(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})'");
Matcher matcherWithTime = patternWithTime.matcher(updatedSql);
// 使用 StringBuffer 进行替换
StringBuffer sbWithTime = new StringBuffer();
while (matcherWithTime.find()) {
matcherWithTime.appendReplacement(sbWithTime, "TO_DATE('" + matcherWithTime.group(1) + "', 'yyyy-mm-dd hh24:mi:ss')");
}
matcherWithTime.appendTail(sbWithTime);
String updatedSqlWithTime = sbWithTime.toString();
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", updatedSqlWithTime);
log.error("insert.recordList:{}", rs);
result = Integer.parseInt(String.valueOf(rs.get("code")));
}else{
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
log.error("insert.recordList:{}", rs);
result = Integer.parseInt(String.valueOf(rs.get("code")));
}
return result;
}
public int update(String tableName, Map<String, Object> setMap,String condition,String id){
int result = 400;
if(StringUtils.isNotBlank(id)){
log.info("update-setMap{},id{}",setMap,id);
if (StringUtils.isBlank(tableName) || setMap == null || setMap.size() <= 0) {
return result;
}
StringBuilder sql = new StringBuilder();
sql.append("update "+tableName + " set ");
//查询数据库类型
String databaseId = DatabaseUtil.getDatabaseId();
log.info("update-databaseId{}",databaseId);
for (String key : setMap.keySet()) {
if(databaseId.equalsIgnoreCase("oracle")){
//判断是否是日期类型
if(isValidDateTime(String.valueOf(setMap.get(key)))){
sql.append(key).append("=").append("TO_DATE('").append(setMap.get(key)).append("', 'yyyy-mm-dd hh24:mi:ss')").append(",");
}else if(isValidDate(String.valueOf(setMap.get(key)))){
sql.append(key).append("=").append("TO_DATE('").append(setMap.get(key)).append("', 'yyyy-mm-dd')").append(",");
}else{
sql.append(key).append("=").append("'").append(setMap.get(key)).append("'").append(",");
}
}else {
sql.append(key).append("=").append("'").append(setMap.get(key)).append("'").append(",");
}
}
if (sql.length() > 0) {
sql.deleteCharAt(sql.length() - 1); // 删除最后一个字符
}
sql.append(" where "+condition+" = "+id);
log.info("update-sql{}",sql);
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql.toString());
log.error("update.recordList:{}", rs);
result = Integer.parseInt(String.valueOf(rs.get("code")));
}
return result;
}
public static boolean isValidDate(String dateTimeStr) {
// 定义日期时间格式
String dateTimePattern = "yyyy-MM-dd";
return isValidDate(dateTimeStr, dateTimePattern);
}
public static boolean isValidDateTime(String dateTimeStr) {
// 定义日期时间格式
String dateTimePattern = "yyyy-MM-dd HH:mm:ss";
return isValidDate(dateTimeStr, dateTimePattern);
}
private static boolean isValidDate(String dateStr, String pattern) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setLenient(false); // 设置为严格模式避免宽松解析
sdf.parse(dateStr);
return true;
} catch (ParseException e) {
return false;
}
}
private void cleanUpTime(Map<String, Object> employee_info){
//特殊处理
//try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
long create_time =0L;
long update_time =0L;
long hiredate_time =0L;
String createDate =nowData;
String updateDate =nowData;
String hiredate =nowData;
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "create_time"))){
String time = getIgnoreCase(employee_info, "create_time");
if(!time.contains("-")){
create_time = Long.parseLong(time);
Date date = new Date(create_time);
createDate = sdf.format(date);
}else {
createDate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "update_time"))){
String time = getIgnoreCase(employee_info, "update_time");
if(!time.contains("-")){
update_time = Long.parseLong(time);
Date date = new Date(update_time);
updateDate = sdf.format(date);
}else {
updateDate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "hiredate"))){
String time = getIgnoreCase(employee_info, "hiredate");
if(!time.contains("-")){
hiredate_time = Long.parseLong(time);
Date date = new Date(hiredate_time);
hiredate = sdf2.format(date);
}else {
hiredate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "ft_status"))){
String ft_status = getIgnoreCase(employee_info, "ft_status");
if("false".equalsIgnoreCase(ft_status)){
employee_info.put("ft_status","0");
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "is_delete"))){
String is_delete = getIgnoreCase(employee_info, "is_delete");
if("false".equalsIgnoreCase(is_delete)){
employee_info.put("is_delete","0");
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "delete_type"))){
String delete_type = getIgnoreCase(employee_info, "delete_type");
if("false".equalsIgnoreCase(delete_type)){
employee_info.put("delete_type","0");
}
}
employee_info.put("create_time",createDate);
employee_info.put("update_time",updateDate);
employee_info.put("hiredate",hiredate);
// }catch (ParseException e) {
// e.printStackTrace();
// }
}
public static String getIgnoreCase(Map<String, Object> map, String key) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equalsIgnoreCase(key)) {
return entry.getValue().toString();
}
}
return null; // 或者抛出异常取决于你的需求
}
}

View File

@ -0,0 +1,120 @@
package com.weaver.seconddev.jcl.organization.esb;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface;
import com.weaver.seconddev.jcl.organization.util.DatabaseUtils;
import com.weaver.seconddev.jcl.organization.util.RecruitModuleUtils;
import com.weaver.seconddev.jcl.organization.util.SyncDataUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @use同步兼职信息到组织
* @date 2025年6月18日
* @author xuxy
*/
@Service("RemoveCache_jcl")
public class RemoveCache implements EsbServerlessRpcRemoteInterface {
@Autowired
private DatabaseUtils databaseUtils;
@Autowired
RecruitModuleUtils recruitModuleUtils;
@Autowired
private SyncDataUtils syncDataUtils;
public static String path = "/api/hrm/fix/removeCache";
private static final Logger log = LoggerFactory.getLogger(RemoveCache.class);
@Override
public WeaResult<Map<String, Object>> execute(Map<String, Object> params) {
Map<String, Object> result = new HashMap<>();
/**
* 多租户查询主表名称JCL_开放平台接口配置表
*/
Map<String, String> ebTablePzInfo = recruitModuleUtils.getEbTableInfo("uf_jcl_employee_information_apptag", "uf_jcl_kfptjkpzb_tag");
String objPzId = ebTablePzInfo.get("objId");
String ebTablePzName = ebTablePzInfo.get("table_name");
log.error("RemoveCache.objPzId:{},ebTablePzName:{}", objPzId,ebTablePzName);
/**
* 获取token系统参数信息查询
*/
Map<String, Object> apiInfo = getApiInfo(ebTablePzName);
String host = String.valueOf(apiInfo.get("ipdz"));
log.error("RemoveCache.apiInfo:{}", apiInfo);
/**
* 3.组装数据
*/
/***
* 数据规则
*/
JSONObject jsonObject = new JSONObject();
jsonObject.put("all",true);
log.error("RemoveCache.jsonObject:{}", jsonObject);
try {
String accessToken = syncDataUtils.getToken(apiInfo);
log.error("RemoveCache.accessToken:{}", accessToken);
if(StringUtils.isNotBlank(accessToken)){
jsonObject.put("access_token",accessToken);
log.error("RemoveCache.result:jsonObject{},path:{},host:{}", jsonObject,path,host);
result = syncDataUtils.doPostHttp(jsonObject, path,host);
log.error("RemoveCache.result:111{}", result);
// 获取 responseBody
String responseBody = String.valueOf(result.get("responseBody"));
log.error("RemoveCache.responseBody:{}", responseBody);
// // 获取 data 列表
// Gson gson = new Gson();
// Type type = new TypeToken<Map<String, Object>>() {}.getType();
// Map<String, Object> responseBodyNew = gson.fromJson(responseBody, type);
// log.error("RemoveCache.responseBodyNew:{}", responseBodyNew);
// // 获取 data 列表
// List<Map<String, Object>> data = (List<Map<String, Object>>) responseBodyNew.get("data");
// log.error("RemoveCache.data:{}", data);
// // 获取第一个元素的 keyValue
// if (!data.isEmpty()) {
// String keyValue = (String) data.get(0).get("keyValue");
// log.error("RemoveCache.keyValue:{}", keyValue);
// }
}else{
result.put("status2","fail");
}
log.error("RemoveCache.result:{}", result);
}catch (Exception e) {
result.put("status2","exception");
log.error("RemoveCache:"+e);
}
return WeaResult.success(result);
}
/**
* 根据接口标识查询开放平台接口参数
* @return
*/
public Map<String, Object> getApiInfo(String ebTablePzName){
Map<String, Object> map = new HashMap<>();
String sql = "select id,ipdz,jkbs,app_key,app_sec,corpid from "+ebTablePzName+" where DELETE_TYPE=0 and tenant_key = '"+RecruitModuleUtils.getCurrentTenantKey()+"' and jkbs ='syncExtra' ";
log.error("getApiInfo.sql:{}", sql);
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> recordList = databaseUtils.getDataSourceList(rs);
log.error("getApiInfo.recordList:{}", recordList);
if(CollectionUtils.isNotEmpty(recordList)){
map = recordList.get(0);
}
return map;
}
}

View File

@ -44,10 +44,11 @@ public class SyncDataUtils {
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
log.error("RemoveCache.request:"+request);
Response response = client.newCall(request).execute();
log.error("RemoveCache.response:"+response);
int code = response.code();
log.error("code:"+code);
log.error("RemoveCache.code:"+code);
returnMap.put("code",code+"");
if (code == 200) {
String responseBody = response.body().string();