@ -2,6 +2,8 @@ package com.engine.organization.service.impl;
import com.api.browser.bean.SearchConditionGroup ;
import com.api.browser.bean.SearchConditionItem ;
import com.api.browser.bean.SearchConditionOption ;
import com.api.browser.util.ConditionType ;
import com.api.hrm.bean.HrmFieldBean ;
import com.api.hrm.util.HrmFieldSearchConditionComInfo ;
import com.cloudstore.eccom.result.WeaResultMsg ;
@ -13,10 +15,8 @@ import com.engine.organization.entity.company.bo.CompBO;
import com.engine.organization.entity.company.po.CompPO ;
import com.engine.organization.entity.department.bo.DepartmentBO ;
import com.engine.organization.entity.department.po.DepartmentPO ;
import com.engine.organization.entity.fieldset.param.TransferDataParam ;
import com.engine.organization.entity.hrmresource.bo.HrmRelationBO ;
import com.engine.organization.entity.hrmresource.param.HrmRelationSaveParam ;
import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam ;
import com.engine.organization.entity.hrmresource.param.SearchTemplateParam ;
import com.engine.organization.entity.hrmresource.po.HrmRelationPO ;
import com.engine.organization.entity.hrmresource.po.SearchTemplatePO ;
@ -26,6 +26,7 @@ import com.engine.organization.entity.job.bo.JobBO;
import com.engine.organization.entity.job.po.JobPO ;
import com.engine.organization.entity.searchtree.SearchTree ;
import com.engine.organization.entity.searchtree.SearchTreeParams ;
import com.engine.organization.enums.HrmGroupEnum ;
import com.engine.organization.mapper.comp.CompMapper ;
import com.engine.organization.mapper.department.DepartmentMapper ;
import com.engine.organization.mapper.hrmresource.HrmRelationMapper ;
@ -49,7 +50,6 @@ import weaver.conn.RecordSet;
import weaver.general.StringUtil ;
import weaver.general.Util ;
import weaver.hrm.definedfield.HrmFieldManager ;
import weaver.systeminfo.SystemEnv ;
import java.util.* ;
import java.util.stream.Collectors ;
@ -109,10 +109,9 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
}
@Override
public Map < String , Object > listPage ( HrmResourceSearchParam params ) {
public Map < String , Object > listPage ( Map< String , Object > params ) {
OrganizationWeaTable < HrmResourceVO > table = new OrganizationWeaTable < > ( user , HrmResourceVO . class ) ;
Map < String , Object > searchParams = new HashMap < > ( ) ;
String sqlWhere = buildSqlWhere ( searchParams ) ;
String sqlWhere = buildSqlWhere ( params ) ;
table . setSqlwhere ( sqlWhere ) ;
WeaResultMsg result = new WeaResultMsg ( false ) ;
result . putAll ( table . makeDataResult ( ) ) ;
@ -151,11 +150,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List < String > personalFieldsBuilder = new ArrayList < > ( ) ;
List < String > workFieldsBuilder = new ArrayList < > ( ) ;
for ( String fieldName : split ) {
if ( fieldName . startsWith ( " -1 " ) ) {
if ( fieldName . startsWith ( HrmGroupEnum . HRM_BASIC . getGroupType ( ) . toString ( ) ) ) {
basicFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
} else if ( fieldName . startsWith ( " 1 " ) ) {
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) . toString ( ) ) ) {
personalFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
} else if ( fieldName . startsWith ( " 3 " ) ) {
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_WORK . getGroupType ( ) . toString ( ) ) ) {
workFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
}
}
@ -173,6 +172,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
@Override
public Map < String , Object > getSearchCondition ( Map < String , Object > params ) {
String templateId = Util . null2String ( params . get ( " templateId " ) ) ;
String selectKeys = Util . null2String ( params . get ( " selectKeys " ) ) ;
if ( StringUtils . isBlank ( templateId ) ) {
templateId = " -1 " ;
}
@ -182,30 +182,19 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
/ / 穿梭框ID , 展示所选字段信息
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo ( ) ;
if ( " -1 " . equals ( templateId ) ) {
/ / 未选择模板展示默认模板搜索条件
List < SearchConditionItem > searchConditionItems = new ArrayList < > ( ) ;
List < CusFormFieldPO > hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( " -1 " ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , searchConditionItems ) ;
if ( CollectionUtils . isNotEmpty ( searchConditionItems ) ) {
addGroups . add ( new SearchConditionGroup ( " 基本信息 " , true , searchConditionItems ) ) ;
if ( StringUtils . isNotBlank ( selectKeys ) ) {
SearchTemplatePO templatePO = buildSearchTemplateByFields ( selectKeys ) ;
buildSearchConditionGroup ( templatePO , hrmFieldSearchConditionComInfo , addGroups ) ;
} else {
/ / 未选择模板展示默认模板搜索条件
if ( CollectionUtils . isNotEmpty ( allConditions ) ) {
addGroups . add ( allConditions . get ( 0 ) ) ;
}
}
} else {
/ / 选择模板则遍历所选模板所选字段
SearchTemplatePO searchTemplateById = getHrmResourceMapper ( ) . getSearchTemplateById ( templateId ) ;
String [ ] basicFields = Util . null2String ( searchTemplateById . getBasicFields ( ) ) . split ( " , " ) ;
if ( basicFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 基本信息 " , - 1 , basicFields ) ;
}
String [ ] personalFields = Util . null2String ( searchTemplateById . getPersonalFields ( ) ) . split ( " , " ) ;
if ( personalFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 个人信息 " , 1 , personalFields ) ;
}
String [ ] workFields = Util . null2String ( searchTemplateById . getWorkFields ( ) ) . split ( " , " ) ;
if ( workFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 工作信息 " , 3 , workFields ) ;
}
buildSearchConditionGroup ( searchTemplateById , hrmFieldSearchConditionComInfo , addGroups ) ;
}
apiDatas . put ( " defaultcondition " , addGroups ) ;
apiDatas . put ( " conditions " , allConditions ) ;
@ -342,61 +331,39 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* @return
* /
private String buildSqlWhere ( Map < String , Object > params ) {
DBType dbType = DBType . get ( new RecordSet ( ) . getDBType ( ) ) ;
String sqlWhere = " where 1=1 " ;
for ( Map . Entry < String , Object > entry : params . entrySet ( ) ) {
String key = entry . getKey ( ) ;
Object value = entry . getValue ( ) ;
}
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo ( ) ;
List < SearchConditionItem > conditionItems = new ArrayList < > ( ) ;
List < CusFormFieldPO > hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_BASIC . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , conditionItems ) ;
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , conditionItems ) ;
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_WORK . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , conditionItems ) ;
Map < String , SearchConditionItem > allFieldsMap = conditionItems . stream ( ) . collect ( Collectors . toMap ( item - > item . getDomkey ( ) [ 0 ] , item - > item , ( k1 , k2 ) - > k1 ) ) ;
/ / String lastName = params . getLastName ( ) ;
/ / if ( StringUtils . isNotBlank ( lastName ) ) {
/ / sqlWhere + = " AND t.lastname " + dbType . like ( lastName ) ;
/ / }
/ / Long companyId = params . getCompanyId ( ) ;
/ / if ( null ! = companyId ) {
/ / sqlWhere + = " AND t.subcompanyid1 = ' " + companyId + " ' " ;
/ / }
/ / Long departmentId = params . getDepartmentId ( ) ;
/ / if ( null ! = departmentId ) {
/ / sqlWhere + = " AND t.departmentid = ' " + departmentId + " ' " ;
/ / }
/ / Long ecCompany = params . getEcCompany ( ) ;
/ / if ( null ! = ecCompany ) {
/ / sqlWhere + = " AND t.subcompanyid1 = ' " + ecCompany + " ' " ;
/ / }
/ / Long ecDepartment = params . getEcDepartment ( ) ;
/ / if ( null ! = ecDepartment ) {
/ / sqlWhere + = " AND t.departmentid = ' " + ecDepartment + " ' " ;
/ / }
/ / String telephone = params . getTelephone ( ) ;
/ / if ( StringUtils . isNotBlank ( telephone ) ) {
/ / sqlWhere + = " AND t.telephone " + dbType . like ( telephone ) ;
/ / }
/ / String mobile = params . getMobile ( ) ;
/ / if ( StringUtils . isNotBlank ( mobile ) ) {
/ / sqlWhere + = " AND t.mobile " + dbType . like ( mobile ) ;
/ / }
/ / Long jobTitle = params . getJobTitle ( ) ;
/ / if ( null ! = jobTitle ) {
/ / JobPO ecJobTitleByJobId = JobBO . getEcJobTitleByJobId ( jobTitle ) ;
/ / if ( null ! = ecJobTitleByJobId ) {
/ / sqlWhere + = " AND t.subcompanyid1 = ' " + ecJobTitleByJobId . getEcCompany ( ) + " ' " ;
/ / sqlWhere + = " AND t.departmentid = ' " + ecJobTitleByJobId . getEcDepartment ( ) + " ' " ;
/ / sqlWhere + = " AND t.jobtitle = ' " + ecJobTitleByJobId . getEcJobTitle ( ) + " ' " ;
/ / } else {
/ / sqlWhere = " where 1 = 2 " ;
/ / }
/ / }
DBType dbType = DBType . get ( new RecordSet ( ) . getDBType ( ) ) ;
/ / String sqlWhere = " " ;
StringBuilder sb = new StringBuilder ( " where 1=1 " ) ;
for ( Map . Entry < String , Object > entry : params . entrySet ( ) ) {
String value = Util . null2String ( entry . getValue ( ) ) ;
if ( StringUtils . isBlank ( value ) ) {
continue ;
}
String key = entry . getKey ( ) ;
SearchConditionItem searchConditionItem = allFieldsMap . get ( key ) ;
buildDynamicSql ( searchConditionItem , key , value , sb , dbType ) ;
/ / 根据不同的类型 , 不同的查询方式
}
/ / 分权查询
DetachUtil detachUtil = new DetachUtil ( user ) ;
String parentCompanyIds = detachUtil . getJclRoleLevels ( ) ;
if ( detachUtil . isDETACH ( ) ) {
s qlWhere + = " And t.subcompanyid1 in( " + parentCompanyIds + " ) " ;
sb . append ( " And t.subcompanyid1 in( " ) . append ( parentCompanyIds ) . append ( " ) " ) ;
}
return s qlWhere ;
return sb . toString ( ) ;
}
public List < SearchTree > getFilterCompany ( String id , String type , String keyword ) {
@ -588,6 +555,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
return templates ;
}
/ * *
* 获取所有搜索字段信息构建的高级搜索表单
*
* @return
* /
public List < SearchConditionGroup > getAllConditions ( ) {
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo ( ) ;
List < SearchConditionGroup > addGroups = new ArrayList < > ( ) ;
@ -596,21 +568,21 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List < SearchConditionItem > workConditionItems = new ArrayList < > ( ) ;
/ / 基本信息 : - 1
List < CusFormFieldPO > hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( " -1 " ) ;
List < CusFormFieldPO > hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_BASIC . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , basicConditionItems ) ;
if ( CollectionUtils . isNotEmpty ( basicConditionItems ) ) {
addGroups . add ( new SearchConditionGroup ( " 基本信息 " , true , basicConditionItems ) ) ;
}
/ / 个人信息 : 1
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( " 1 " ) ;
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , personalConditionItems ) ;
if ( CollectionUtils . isNotEmpty ( personalConditionItems ) ) {
addGroups . add ( new SearchConditionGroup ( " 个人信息 " , true , personalConditionItems ) ) ;
}
/ / 工作信息 : 3
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( " 3 " ) ;
hrmFieldsByScopeId = getSystemDataMapper ( ) . getHrmFieldsByScopeId ( HrmGroupEnum . HRM_WORK . getGroupType ( ) . toString ( ) ) ;
createConditionItems ( hrmFieldSearchConditionComInfo , hrmFieldsByScopeId , workConditionItems ) ;
if ( CollectionUtils . isNotEmpty ( workConditionItems ) ) {
addGroups . add ( new SearchConditionGroup ( " 工作信息 " , true , workConditionItems ) ) ;
@ -640,21 +612,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
hrmFieldBean . setIsFormField ( true ) ;
SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo . getSearchConditionItem ( hrmFieldBean , user ) ;
conditionItems . add ( searchConditionItem ) ;
}
}
/ / 如果为下拉框 , 添加一条空选项
if ( searchConditionItem . getConditionType ( ) . equals ( ConditionType . SELECT ) ) {
addEmptyForSelect ( searchConditionItem ) ;
}
/ * *
* 构建穿梭框字段
*
* @param formFields
* @param dataParamList
* @param title
* /
private void createTransferData ( List < CusFormFieldPO > formFields , List < TransferDataParam > dataParamList , String title ) {
for ( CusFormFieldPO cusFormFieldPO : formFields ) {
String id = cusFormFieldPO . getTableName ( ) + " _ " + cusFormFieldPO . getScopeId ( ) + " _ " + cusFormFieldPO . getFieldId ( ) ;
String label = Util . toScreen ( SystemEnv . getHtmlLabelName ( Integer . parseInt ( cusFormFieldPO . getFieldLabel ( ) ) , user . getLanguage ( ) ) , user . getLanguage ( ) ) ;
dataParamList . add ( TransferDataParam . builder ( ) . id ( id ) . label ( label ) . title ( title ) . build ( ) ) ;
}
}
@ -691,6 +653,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
hrmFieldBean . setIsScope ( false ) ;
SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo . getSearchConditionItem ( hrmFieldBean , user ) ;
conditionItems . add ( searchConditionItem ) ;
/ / 如果为下拉框 , 添加一条空选项
if ( searchConditionItem . getConditionType ( ) . equals ( ConditionType . SELECT ) ) {
addEmptyForSelect ( searchConditionItem ) ;
}
}
if ( CollectionUtils . isNotEmpty ( conditionItems ) ) {
addGroups . add ( new SearchConditionGroup ( title , true , conditionItems ) ) ;
@ -699,4 +665,153 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
throw new RuntimeException ( e ) ;
}
}
/ * *
* 根据所选字段信息 , 构建搜素模板对象
*
* @param fields
* @return
* /
private SearchTemplatePO buildSearchTemplateByFields ( String fields ) {
SearchTemplatePO templatePO = new SearchTemplatePO ( ) ;
String [ ] split = fields . split ( " , " ) ;
if ( split . length > 0 ) {
List < String > basicFieldsBuilder = new ArrayList < > ( ) ;
List < String > personalFieldsBuilder = new ArrayList < > ( ) ;
List < String > workFieldsBuilder = new ArrayList < > ( ) ;
for ( String fieldName : split ) {
if ( fieldName . startsWith ( HrmGroupEnum . HRM_BASIC . getGroupType ( ) . toString ( ) ) ) {
basicFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) . toString ( ) ) ) {
personalFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_WORK . getGroupType ( ) . toString ( ) ) ) {
workFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( " _ " ) + 1 ) ) ;
}
}
templatePO . setBasicFields ( basicFieldsBuilder . toString ( ) ) ;
templatePO . setPersonalFields ( personalFieldsBuilder . toString ( ) ) ;
templatePO . setWorkFields ( workFieldsBuilder . toString ( ) ) ;
}
return templatePO ;
}
/ * *
* 根据搜索模板对象 , 构建搜索条件表单
*
* @param templatePO
* @param hrmFieldSearchConditionComInfo
* @param addGroups
* /
private void buildSearchConditionGroup ( SearchTemplatePO templatePO , HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo , List < SearchConditionGroup > addGroups ) {
String [ ] basicFields = Util . null2String ( templatePO . getBasicFields ( ) ) . split ( " , " ) ;
if ( basicFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 基本信息 " , HrmGroupEnum . HRM_BASIC . getGroupType ( ) , basicFields ) ;
}
String [ ] personalFields = Util . null2String ( templatePO . getPersonalFields ( ) ) . split ( " , " ) ;
if ( personalFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 个人信息 " , HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) , personalFields ) ;
}
String [ ] workFields = Util . null2String ( templatePO . getWorkFields ( ) ) . split ( " , " ) ;
if ( workFields . length > 0 ) {
getTemplateItems ( hrmFieldSearchConditionComInfo , addGroups , " 工作信息 " , HrmGroupEnum . HRM_WORK . getGroupType ( ) , workFields ) ;
}
}
/ * *
* 根据字段信息 , 动态拼接where条件SQL
*
* @param conditionItem
* @param key
* @param value
* @param sb
* @param dbType
* /
private void buildDynamicSql ( SearchConditionItem conditionItem , String key , String value , StringBuilder sb , DBType dbType ) {
if ( null = = conditionItem ) {
return ;
}
if ( key . endsWith ( " workyear " ) | | key . endsWith ( " companyworkyear " ) ) {
conditionItem . setConditionType ( ConditionType . INPUTNUMBER ) ;
}
String tableSql = buildTableSql ( key ) ;
if ( StringUtils . isBlank ( tableSql ) ) {
return ;
}
switch ( conditionItem . getConditionType ( ) ) {
case INPUT : / / 单行文本框
case TEXTAREA : / / 多行文本框
sb . append ( " and " ) . append ( tableSql ) . append ( dbType . like ( value ) ) ;
/ / 模糊搜索
break ;
case INPUTNUMBER : / / 数字
case SELECT : / / 选择框
case BROWSER : / / 浏览按钮
case CHECKBOX :
case SWITCH :
sb . append ( " and " ) . append ( dbType . ifNull ( tableSql , " 0 " ) ) . append ( " = ' " ) . append ( value ) . append ( " ' " ) ;
break ;
case DATE :
case DATEPICKER :
case TIMEPICKER :
case RANGEPICKER :
/ / 精准搜索
sb . append ( " and " ) . append ( tableSql ) . append ( " = ' " ) . append ( value ) . append ( " ' " ) ;
break ;
default :
break ;
}
}
/ * *
* 处理当前字段所在表关系
*
* @param key
* @return
* /
private String buildTableSql ( String key ) {
StringBuilder sb = new StringBuilder ( ) ;
String [ ] s = key . split ( " _ " ) ;
if ( s . length < 3 ) {
return " " ;
}
String scopeId = s [ 0 ] ;
String tableName = s [ 1 ] ;
String fieldName = s [ 2 ] ;
if ( " hrm " . equals ( tableName ) ) {
sb . append ( " t. " ) . append ( fieldName ) ;
} else {
switch ( scopeId ) {
case " -1 " :
sb . append ( " t0. " ) . append ( fieldName ) ;
break ;
case " 1 " :
sb . append ( " t1. " ) . append ( fieldName ) ;
break ;
case " 3 " :
sb . append ( " t2. " ) . append ( fieldName ) ;
break ;
default :
return " " ;
}
}
return sb . toString ( ) ;
}
private void addEmptyForSelect ( SearchConditionItem searchConditionItem ) {
searchConditionItem . setValue ( " " ) ;
List < SearchConditionOption > options = searchConditionItem . getOptions ( ) ;
options . forEach ( item - > {
item . setSelected ( false ) ;
} ) ;
SearchConditionOption searchConditionOption = new SearchConditionOption ( ) ;
searchConditionOption . setSelected ( true ) ;
searchConditionOption . setKey ( " " ) ;
options . add ( 0 , searchConditionOption ) ;
}
}