@ -19,38 +19,60 @@ import java.util.stream.Collectors;
* /
public class DanikorSyncUserJob extends BaseCronJob {
// select * into hrmresource_back FROM hrmresource where 1=2;
// alter table hrmresource_back add sync_date date null;
// alter table hrmresource_back add default getdate() for sync_date;
// alter table hrmresource_back add sync_id int identity(1,1);
// select * into hrmresource_back FROM hrmresource where 1=2;
// alter table hrmresource_back add sync_date date null;
// alter table hrmresource_back add default getdate() for sync_date;
// alter table hrmresource_back add sync_id int identity(1,1);
private static final String RESOURCE_MAIN = "hrmresource" ;
private static final String RESOURCE_BACK = "hrmresource_back" ;
// CREATE TABLE cus_fielddata_back (
// seqorder int NOT NULL,
// [scope] varchar(1000) NULL,
// scopeid int NOT NULL,
// id int NOT NULL,
// sync_date date null,
// sync_id int identity(1,1)
// );
// alter table cus_fielddata_back add default getdate() for sync_date;
// CREATE TABLE cus_fielddata_back (
// seqorder int NOT NULL,
// [scope] varchar(1000) NULL,
// scopeid int NOT NULL,
// id int NOT NULL,
// sync_date date null,
// sync_id int identity(1,1)
// );
// alter table cus_fielddata_back add default getdate() for sync_date;
private static final String CUS_MAIN = "cus_fielddata" ;
private static final String CUS_BACK = "cus_fielddata_back" ;
// select * into hrmsubcompany_back FROM hrmsubcompany where 1=2;
// alter table hrmsubcompany_back add sync_date date null;
// alter table hrmsubcompany_back add default getdate() for sync_date;
// alter table hrmsubcompany_back add sync_id int identity(1,1);
//select * into hrmsubcompany_back FROM hrmsubcompany where 1=2;
//alter table hrmsubcompany_back add sync_date date null;
//alter table hrmsubcompany_back add default getdate() for sync_date;
//alter table hrmsubcompany_back drop column id;
//alter table hrmsubcompany_back add id int not null;
//alter table hrmsubcompany_back add sync_id int identity(1,1);
private static final String COMPANY_MAIN = "hrmsubcompany" ;
private static final String COMPANY_BACK = "hrmsubcompany_back" ;
//CREATE TABLE hrmsubcompanydefined_back (
//id int NOT NULL,
//subcomid int NOT NULL,
//sync_date date null,
//sync_id int identity(1,1)
//);
//alter table hrmsubcompanydefined_back add default getdate() for sync_date;
private static final String COMPANY_DEFINED_MAIN = "hrmsubcompanydefined" ;
private static final String COMPANY_DEFINED_BACK = "hrmsubcompanydefined_back" ;
//select * into hrmdepartment_back FROM hrmdepartment where 1=2;
//alter table hrmdepartment_back add sync_date date null;
//alter table hrmdepartment_back add default getdate() for sync_date;
//alter table hrmdepartment_back drop column id;
//alter table hrmdepartment_back add id int not null;
//alter table hrmdepartment_back add sync_id int identity(1,1);
private static final String DEPARTMENT_MAIN = "hrmdepartment" ;
private static final String DEPARTMENT_BACK = "hrmdepartment_back" ;
//CREATE TABLE hrmdepartmentdefined_back (
//id int NOT NULL,
//deptid int NOT NULL,
//sync_date date null,
//sync_id int identity(1,1)
//);
//alter table hrmdepartmentdefined_back add default getdate() for sync_date;
private static final String DEPARTMENT_DEFINED_MAIN = "hrmdepartmentdefined" ;
private static final String DEPARTMENT_DEFINED_BACK = "hrmdepartmentdefined_back" ;
@ -60,26 +82,44 @@ public class DanikorSyncUserJob extends BaseCronJob {
@Override
public void execute ( ) {
// 比较两张表的表结构
List < TableColumnPO > cusFieldDataList = getDanikorResourceMapper ( ) . getColumnInfoByTableName ( CUS_MAIN ) ;
List < TableColumnPO > cusFieldDataBackList = getDanikorResourceMapper ( ) . getColumnInfoByTableName ( CUS_BACK ) ;
List < TableColumnPO > resourceDataList = getDanikorResourceMapper ( ) . getColumnInfoByTableName ( RESOURCE_MAIN ) ;
for ( TableColumnPO tableColumnPO : cusFieldDataList ) {
if ( ! cusFieldDataBackList . contains ( tableColumnPO ) ) {
// 比较两张表的表结构,同步表结构、表数据
syncTableFields ( RESOURCE_MAIN , RESOURCE_BACK ) ;
syncTableFields ( CUS_MAIN , CUS_BACK ) ;
syncTableFields ( COMPANY_MAIN , COMPANY_BACK ) ;
syncTableFields ( COMPANY_DEFINED_MAIN , COMPANY_DEFINED_BACK ) ;
syncTableFields ( DEPARTMENT_MAIN , DEPARTMENT_BACK ) ;
syncTableFields ( DEPARTMENT_DEFINED_MAIN , DEPARTMENT_DEFINED_BACK ) ;
}
/ * *
* 同 步 表 字 段
*
* @param mainTableName
* @param backTableName
* /
private void syncTableFields ( String mainTableName , String backTableName ) {
List < TableColumnPO > mainTableFields ;
List < TableColumnPO > backTableFields ;
if ( CUS_MAIN . equals ( mainTableName ) ) {
mainTableFields = getDanikorResourceMapper ( ) . getCusColumnByTableName ( mainTableName ) ;
backTableFields = getDanikorResourceMapper ( ) . getCusColumnByTableName ( backTableName ) ;
} else {
mainTableFields = getDanikorResourceMapper ( ) . getHrmColumnByTableName ( mainTableName ) ;
backTableFields = getDanikorResourceMapper ( ) . getHrmColumnByTableName ( backTableName ) ;
}
for ( TableColumnPO tableColumnPO : mainTableFields ) {
if ( ! backTableFields . contains ( tableColumnPO ) ) {
// 为回溯表创建字段
MapperProxyFactory . getProxy ( ExtendInfoMapper . class ) . addTableColumn ( CUS_BACK , tableColumnPO . getColumnName ( ) , tableColumnPO . getColumnType ( ) ) ;
MapperProxyFactory . getProxy ( ExtendInfoMapper . class ) . addTableColumn ( backTableName , tableColumnPO . getColumnName ( ) , tableColumnPO . getColumnType ( ) ) ;
}
}
// 同步表数据
RecordSet rs = new RecordSet ( ) ;
String resourceColumns = resourceDataList . stream ( ) . map ( TableColumnPO : : getColumnName ) . collect ( Collectors . joining ( "," ) ) ;
String customColumns = cusFieldDataList . stream ( ) . map ( TableColumnPO : : getColumnName ) . collect ( Collectors . joining ( "," ) ) ;
String mainTableColumns = mainTableFields . stream ( ) . map ( TableColumnPO : : getColumnName ) . collect ( Collectors . joining ( "," ) ) ;
// 同步主表数据
String sql = "insert into " + RESOURCE_BACK + "(" + resourceColumns + ") select " + resourceColumns + " from " + RESOURCE_MAIN ;
String sql = "insert into " + backTableName + "(" + mainTableColumns + ") select " + mainTableColumns + " from " + mainTableName ;
rs . execute ( sql ) ;
// 同步明细表数据
sql = "insert into " + CUS_BACK + "(" + customColumns + ") select " + customColumns + " from " + CUS_MAIN ;
rs . execute ( sql ) ;
}
}