新增初始化动作流
This commit is contained in:
parent
19c5e0336d
commit
d33ae54e23
|
|
@ -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; // 或者抛出异常,取决于你的需求
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue