多租户获取实例方式优化

This commit is contained in:
Administrator 2025-06-16 09:48:03 +08:00
parent f009c9625f
commit edd61e2e88
8 changed files with 178 additions and 27 deletions

View File

@ -345,7 +345,7 @@ public class EmployeeRelationController {
/**
* 在职员工时点花名册
* 系统打标签方式获取明细表
* @return
*/
@GetMapping("/getDetailTableNameByMasterId")
@ -358,4 +358,15 @@ public class EmployeeRelationController {
}
/**
* 系统表籍贯字符串同步到员工信息表id
* @return
*/
@GetMapping("/syncSysNativePlace")
@WeaPermission(publicPermission = true)
public List<Map<String, Object>> syncSysNativePlace(){
return employeeRelationService.syncSysNativePlace();
}
}

View File

@ -774,6 +774,8 @@ public class SyncAllYgxxInfoOfOrg implements EsbServerlessRpcRemoteInterface {
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"))) {
@ -782,6 +784,8 @@ public class SyncAllYgxxInfoOfOrg implements EsbServerlessRpcRemoteInterface {
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"))) {

View File

@ -77,17 +77,21 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
String yggh = "";
String ygxxid = null!=params.get("ygxxid")?String.valueOf(params.get("ygxxid").toString()):"";
String glzzyg = null!=params.get("glzzyg")?String.valueOf(params.get("glzzyg").toString()):"";
String form_id = null!=params.get("form_id")?String.valueOf(params.get("form_id").toString()):"";
String layout_id = null!=params.get("layout_id")?String.valueOf(params.get("layout_id").toString()):"";
String user_form_id = null!=params.get("user_form_id")?String.valueOf(params.get("user_form_id").toString()):"";
String user_layout_id = null!=params.get("user_layout_id")?String.valueOf(params.get("user_layout_id").toString()):"";
//String tenant_key = null!=params.get("tenant_key")?String.valueOf(params.get("tenant_key").toString()):"";
log.error("SyncOrganizationPersonInfo.ygxxid : [{}].glzzyg:[{}]",ygxxid,glzzyg);
log.error("SyncOrganizationPersonInfo.ygxxid : [{}].glzzyg:[{}],form_id:{},layout_id:{},user_form_id:{},user_layout_id:{}",ygxxid,glzzyg,form_id,layout_id,user_form_id,user_layout_id);
SimpleEmployee employee = new SimpleEmployee();
Map<String, Object> result = new HashMap<>();
String sql = "select form_id from form_table where table_name=? and delete_type='0'";
List<String> paramList = Lists.newArrayList();
paramList.add(Constants.EMPLOYEE_INFORMATION);
String employee_form_id = CommonUtils.null2String(databaseUtils.getSqlList(sql,paramList).get(0).get("form_id"));
log.error("employee_form_id : [{}]",employee_form_id);
// String sql = "select form_id from form_table where table_name=? and delete_type='0'";
// List<String> paramList = Lists.newArrayList();
// paramList.add(Constants.EMPLOYEE_INFORMATION);
// String employee_form_id = CommonUtils.null2String(databaseUtils.getSqlList(sql,paramList).get(0).get("form_id"));
// log.error("employee_form_id : [{}]",employee_form_id);
sql = "select id,module from FORM where (module='hrm' and ownership='personal') or module='hruserinfo' and delete_type='0'";
String sql = "select id,module from FORM where (module='hrm' and ownership='personal') or module='hruserinfo' and delete_type='0' and TENANT_KEY= '"+RecruitModuleUtils.getCurrentTenantKey()+"'";
Map<String, Object> rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql);
List<Map<String, Object>> personFormList = databaseUtils.getDataSourceList(rs);
log.error("getEmployeeColumns.personFormList:{}", personFormList);
@ -197,7 +201,9 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
}
}
//增加一个关联自定义表的formdata
employee_new.put("formdata",getIgnoreCase(employee_info, "id"));
// 生成随机 ID
long formdataid = IdGenerator.generate();
employee_new.put("formdata",formdataid);
employee_new.put("status","normal");
//状态字段换个对应
employee_new.put("personnel_status",getIgnoreCase(employee_info, "personnel_status_jcl"));
@ -246,8 +252,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
}
}
//组装几个必填字段
employeeCustomize_new.put("id",getIgnoreCase(employee_info, "id"));
employeeCustomize_new.put("FORM_DATA_ID",getIgnoreCase(employee_info, "id"));
employeeCustomize_new.put("id",formdataid);
employeeCustomize_new.put("FORM_DATA_ID",formdataid);
employeeCustomize_new.put("DATA_INDEX",0);
employeeCustomize_new.put("create_time",nowData);
employeeCustomize_new.put("TENANT_KEY",getIgnoreCase(employee_info, "TENANT_KEY"));
@ -258,6 +264,10 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
//插入数据到基础信息表的自定义表
log.error("SyncOrganizationPersonInfo.employeeCustomize_new:{}", employeeCustomize_new);
code2 = insert(tableName,employeeCustomize_new);
/**
* 写入表单引擎数据大表
*/
insertFormdata(employeeCustomize_new,form_id,layout_id,"hrm");
//3查询个人信息表
List<String> listOfUserInfoColumns = getTableColumnsOfTableName("hr_userinfo");
// 遍历并移除(不包含则移除掉)
@ -287,7 +297,9 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
}
//增加必填字段
userInfo_new.put("USER", getIgnoreCase(employee_info, "id"));
userInfo_new.put("FORM_DATA",getIgnoreCase(employee_info, "id"));
// 生成随机 ID
long formuserdataid = IdGenerator.generate();
userInfo_new.put("FORM_DATA",formuserdataid);
//学位字段
//userInfo_new.put("DEGREE",containsKeyIgnoreCase(employee_info,"degreename")?getIgnoreCase(employee_info, "degreename"):null);
//userInfo_new.put("CREATE_TIME",nowData);
@ -312,8 +324,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
}
}
//组装几个必填字段
userInfoCustomize_new.put("id",getIgnoreCase(employee_info, "id"));
userInfoCustomize_new.put("FORM_DATA_ID",getIgnoreCase(employee_info, "id"));
userInfoCustomize_new.put("id",formuserdataid);
userInfoCustomize_new.put("FORM_DATA_ID",formuserdataid);
userInfoCustomize_new.put("DATA_INDEX",0);
userInfoCustomize_new.put("create_time",nowData);
userInfoCustomize_new.put("TENANT_KEY",getIgnoreCase(employee_info, "TENANT_KEY"));
@ -323,6 +335,10 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
userInfoCustomize_new.entrySet().removeIf(entry -> entry.getValue() == null);
log.error("SyncOrganizationPersonInfo.userInfoCustomize_new:{}", userInfoCustomize_new);
code4 = insert(tableUserName,userInfoCustomize_new);
/**
* 写入表单引擎数据大表
*/
insertFormdata(userInfoCustomize_new,user_form_id,user_layout_id,"hruserinfo");
/**
* 账户信息部分同步直接写死
*/
@ -376,6 +392,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
}
//key为id的要移除掉防止串改组织人员id 导致对应不上员工关系表的:关联组织人员id
employee_new.remove("id");
//状态字段换个对应
employee_new.put("personnel_status",getIgnoreCase(employee_info, "personnel_status_jcl"));
employee_new.entrySet().removeIf(entry -> entry.getValue() == null);
log.error("SyncOrganizationPersonInfo3333.employee_info:{}", employee_info);
log.error("SyncOrganizationPersonInfo3333.employee_new:{}", employee_new);
@ -479,6 +497,22 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
return WeaResult.success(result);
}
/**
* 写入表单引擎数据大表
* @return
*/
public void insertFormdata(Map<String, Object> map,String form_id, String layout_id,String module){
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") + "','"+module+"','import','" + 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);
}
/**
* 数据同步处理明细表
* @return
@ -708,7 +742,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
gzllInfo_new.put("USER_ID",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
gzllInfo_new.put("ID",primarykey);
//插入组织工作履历表
@ -742,7 +777,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
jyjlInfo_new.put("employee_id",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
jyjlInfo_new.put("id",primarykey);
//插入教育经历表
@ -775,7 +811,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
jtxxInfo_new.put("employee_id",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
jtxxInfo_new.put("id",primarykey);
//插入家庭信息表
@ -809,7 +846,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
bzInfo_new.put("Employeeid",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
bzInfo_new.put("id",primarykey);
//插入家庭信息表
@ -843,7 +881,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
pxInfo_new.put("employee_id",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
pxInfo_new.put("id",primarykey);
//插入培训表
@ -877,7 +916,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
yyInfo_new.put("employee_id",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
yyInfo_new.put("id",primarykey);
//插入培训表
@ -911,7 +951,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
qwInfo_new.put("employee_id",ygxxid);
}
//跟换id值然后主键冲突
String primarykey = createPrimarykey();
//String primarykey = createPrimarykey();
long primarykey = IdGenerator.generate();
log.error("getYgxxDetailInfo.primarykey:{}", primarykey);
qwInfo_new.put("id",primarykey);
//插入权威机构表
@ -1157,6 +1198,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
Date date = new Date(create_time);
createDate = sdf.format(date);
//parsedDate1 = new Date(sdf.parse(createDate).getTime());
}else {
createDate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "update_time"))){
@ -1166,6 +1209,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
Date date = new Date(update_time);
updateDate = sdf.format(date);
//parsedDate2 = new Date(sdf.parse(updateDate).getTime());
}else {
updateDate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "hiredate"))){
@ -1175,7 +1220,8 @@ public class SyncOrganizationPersonInfo implements EsbServerlessRpcRemoteInterfa
Date date = new Date(hiredate_time);
hiredate = sdf2.format(date);
//parsedDate3 = new Date(sdf2.parse(hiredate).getTime());
}else {
hiredate = time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "ft_status"))){

View File

@ -404,6 +404,8 @@ public class SyncRzglPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(create_time);
createDate = sdf.format(date);
//parsedDate1 = new Date(sdf.parse(createDate).getTime());
}else{
createDate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "update_time"))){
@ -413,6 +415,8 @@ public class SyncRzglPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(update_time);
updateDate = sdf.format(date);
//parsedDate2 = new Date(sdf.parse(updateDate).getTime());
}else{
updateDate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "hiredate"))){
@ -422,7 +426,8 @@ public class SyncRzglPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(hiredate_time);
hiredate = sdf2.format(date);
//parsedDate3 = new Date(sdf2.parse(hiredate).getTime());
}else{
hiredate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "ft_status"))){
@ -555,7 +560,7 @@ public class SyncRzglPersonInfo implements EsbServerlessRpcRemoteInterface {
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 * from "+uf_jcl_rzgl0867+ "where FORM_DATA_ID = '" + ygxxid + "' and delete_type=0";
String jtxxsql = "select * from "+uf_jcl_rzgl0867+ " where FORM_DATA_ID = '" + ygxxid + "' and delete_type=0";
List<Map<String, Object>> jtxxInfo = getYgxxDetailInfo(jtxxsql);
log.error("getYgxxDetailInfo.jtxxInfo:{}", jtxxInfo);
if(CollectionUtils.isNotEmpty(jtxxInfo)){

View File

@ -295,6 +295,8 @@ public class SyncXxbgPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(create_time);
createDate = sdf.format(date);
//parsedDate1 = new Date(sdf.parse(createDate).getTime());
}else {
createDate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "update_time"))){
@ -304,6 +306,8 @@ public class SyncXxbgPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(update_time);
updateDate = sdf.format(date);
//parsedDate2 = new Date(sdf.parse(updateDate).getTime());
}else {
updateDate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "hiredate"))){
@ -313,7 +317,8 @@ public class SyncXxbgPersonInfo implements EsbServerlessRpcRemoteInterface {
Date date = new Date(hiredate_time);
hiredate = sdf2.format(date);
//parsedDate3 = new Date(sdf2.parse(hiredate).getTime());
}else {
hiredate=time;
}
}
if(StringUtils.isNotBlank(getIgnoreCase(employee_info, "ft_status"))){

View File

@ -32,4 +32,6 @@ public interface EmployeeRelationService {
List<Map<String, Object>> getRosterInfoByDateRange(String stratDate,String endDate,String subCompany,String department);
String getDetailTableNameByMasterId(long objId, String originTableName);
List<Map<String, Object>> syncSysNativePlace();
}

View File

@ -65,6 +65,8 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService {
private static String nowData;
@RpcReference(group = "ebuilderform")
RemoteEBObjService remoteEBObjService;
@Autowired
PublishKitRuntimeUtil publishKitRuntimeUtil;
@Override
@ -1318,6 +1320,25 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService {
return result.toString();
}
/**
* 字符串转化
*/
private String splitStrBySlash(String str){
// 使用 split 方法将字符串分割为数组
String[] parts = str.split("/");
// 使用 StringBuilder 构建结果字符串
StringBuilder result = new StringBuilder();
for (String part : parts) {
// 在每个部分前后添加单引号
result.append("'").append(part).append("',");
}
// 移除最后一个多余的逗号
if (result.length() > 0) {
result.setLength(result.length() - 1);
}
return result.toString();
}
/**
* 查询员工类型名称
*/
@ -1451,7 +1472,9 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService {
* @return
*/
public String getDetailTableNameByMasterId(long objId, String originTableName) {
List<Obj> detailForms = remoteEBObjService.getAllTablesByMasterId(objId, tenantKey);
RemoteEBObjService ebuilderform = publishKitRuntimeUtil.buildRpcService(RemoteEBObjService.class, "ebuilderform", "1109718089457483777");
log.info("getDetailTableNameByMasterId.ebuilderform:{}",ebuilderform);
List<Obj> detailForms = ebuilderform.getAllTablesByMasterId(objId, tenantKey);
log.info("getDetailTableNameByMasterId.detailForms:{}",detailForms);
if (CollectionUtils.isEmpty(detailForms)) {
return null;
@ -1471,4 +1494,53 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService {
return tableName;
}
@Override
public List<Map<String, Object>> syncSysNativePlace() {
List<Map<String, Object>> recordList3 = new ArrayList<>();
String sql = "select id,user,native_place from hr_userinfo where NATIVE_PLACE is not null and TENANT_KEY = '"+RecruitModuleUtils.getCurrentTenantKey()+"'";
List<Map<String, Object>> recordList = databaseUtils.getSqlList(sql);
log.info("syncSysNativePlace-recordList{}",recordList);
if(CollectionUtils.isNotEmpty(recordList)){
//2.拆分组装籍贯字段数据
for (Map<String, Object> map : recordList) {
String native_place = map.get("native_place")!=null?String.valueOf(map.get("native_place")):"";
String user = map.get("user")!=null?String.valueOf(map.get("user")):"";
if(StringUtils.isNotBlank(native_place)&&StringUtils.isNotBlank(user)){
String s = splitStrBySlash(native_place);
//3.根据组装好的name查询data_id
sql="select distinct data_id from eteams.administrative_area where name in (" + s + " ) ";
List<Map<String, Object>> recordList2 = databaseUtils.getSqlList(sql);
log.info("syncSysNativePlace-recordList2{}",recordList2);
List<String> listOfNativeId = recordList2.stream()
.map(map1 -> map1.get("data_id").toString())
.collect(Collectors.toList());
String dataId = joinStringsWithComma(listOfNativeId);
log.info("syncSysNativePlace-dataId{}",dataId);
//4.更新次id到员工信息表籍贯字段中根据userid对应
sql = "update uf_jcl_employee_information set native_place = '" + dataId + "' where id = '" + user + "' and TENANT_KEY = '"+RecruitModuleUtils.getCurrentTenantKey()+"'";
recordList3 = databaseUtils.getSqlList(sql);
log.info("syncSysNativePlace-recordList3{}",recordList3);
}
}
}
return recordList3;
}
public static String joinStringsWithComma(List<String> list) {
if (list == null || list.isEmpty()) {
return "";
}
StringBuilder joined = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
if (i > 0) {
joined.append(",");
}
joined.append(list.get(i));
}
return joined.toString();
}
}

View File

@ -13,6 +13,7 @@ import com.weaver.ebuilder.form.client.entity.obj.Obj;
import com.weaver.ebuilder.form.client.service.obj.RemoteEBObjService;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.framework.rpc.context.impl.TenantRpcContext;
import com.weaver.publishkit.api.util.PublishKitRuntimeUtil;
import com.weaver.seconddev.jcl.organization.controller.EmployeeRelationController;
import com.weaver.teams.api.tenant.Tenant;
import com.weaver.teams.domain.user.SimpleEmployee;
@ -58,6 +59,8 @@ public class RecruitModuleUtils {
}
@Autowired
private DatabaseUtils databaseUtils;
@Autowired
PublishKitRuntimeUtil publishKitRuntimeUtil;
private static final Logger LOGGER = LoggerFactory.getLogger(RecruitModuleUtils.class);
@ -302,7 +305,10 @@ public class RecruitModuleUtils {
* @return
*/
public String getDetailTableNameByMasterId(long objId, String originTableName) {
List<Obj> detailForms = remoteEBObjService.getAllTablesByMasterId(objId, RecruitModuleUtils.getCurrentTenantKey());
//List<Obj> detailForms = remoteEBObjService.getAllTablesByMasterId(objId, RecruitModuleUtils.getCurrentTenantKey());
RemoteEBObjService remoteEBService = publishKitRuntimeUtil.buildRpcService(RemoteEBObjService.class, "ebuilderform", getEbAppId("uf_jcl_employee_information_apptag"));
log.info("getDetailTableNameByMasterId.remoteEBService:{}",remoteEBService);
List<Obj> detailForms = remoteEBService.getAllTablesByMasterId(objId, RecruitModuleUtils.getCurrentTenantKey());
log.info("getDetailTableNameByMasterId.detailForms:{}",detailForms);
if (CollectionUtils.isEmpty(detailForms)) {
return null;