@ -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 ;
@ -98,6 +98,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
return MapperProxyFactory . getProxy ( SystemDataMapper . class ) ;
}
// 所有满足条件的岗位ID
private List < String > jobTitleList = new ArrayList < > ( ) ;
// 是否
boolean searchJobTitle = false ;
@Override
public Map < String , Object > getSearchTree ( SearchTreeParams params ) {
@ -109,10 +114,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 ( ) ) ;
@ -144,25 +148,17 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
}
@Override
public void saveSearchTemplate ( SearchTemplateParam params ) {
String [ ] split = params . getFields ( ) . 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 ( "-1" ) ) {
basicFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( "_" ) + 1 ) ) ;
} else if ( fieldName . startsWith ( "1" ) ) {
personalFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( "_" ) + 1 ) ) ;
} else if ( fieldName . startsWith ( "3" ) ) {
workFieldsBuilder . add ( fieldName . substring ( fieldName . lastIndexOf ( "_" ) + 1 ) ) ;
}
}
SearchTemplatePO searchTemplatePO = SearchTemplatePO . builder ( ) . name ( params . getShowname ( ) ) . basicFields ( StringUtils . join ( basicFieldsBuilder , "," ) ) . personalFields ( StringUtils . join ( personalFieldsBuilder , "," ) ) . workFields ( StringUtils . join ( workFieldsBuilder , "," ) ) . creator ( user . getUID ( ) ) . createTime ( new Date ( ) ) . updateTime ( new Date ( ) ) . build ( ) ;
getHrmResourceMapper ( ) . insertSearchTemplate ( searchTemplatePO ) ;
// 保存模板
public Integer saveSearchTemplate ( SearchTemplateParam params ) {
SearchTemplatePO templatePO = buildSearchTemplateByFields ( params . getFields ( ) ) ;
if ( null = = templatePO ) {
return - 1 ;
}
templatePO . setName ( params . getShowname ( ) ) ;
templatePO . setCreator ( user . getUID ( ) ) ;
templatePO . setCreateTime ( new Date ( ) ) ;
templatePO . setUpdateTime ( new Date ( ) ) ;
getHrmResourceMapper ( ) . insertSearchTemplate ( templatePO ) ;
return templatePO . getId ( ) ;
}
@Override
@ -170,9 +166,71 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
getHrmResourceMapper ( ) . deleteSearchTemplate ( id , user . getUID ( ) ) ;
}
@Override
public String getTemplateSelectKeys ( Map < String , Object > params ) {
String templateId = Util . null2String ( params . get ( "templateId" ) ) ;
String column = Util . null2String ( params . get ( "column" ) ) ;
OrganizationAssert . isTrue ( StringUtils . isNotBlank ( templateId ) , "数据有误,未找到对应数据" ) ;
// 判断是否为搜索模板
if ( StringUtils . isBlank ( column ) ) {
SearchTemplatePO searchTemplateById = getHrmResourceMapper ( ) . getSearchTemplateById ( templateId ) ;
String basicFields = searchTemplateById . getBasicFields ( ) ;
String personalFields = searchTemplateById . getPersonalFields ( ) ;
String workflowFields = searchTemplateById . getWorkFields ( ) ;
List < String > selectKeys = new ArrayList < > ( ) ;
if ( StringUtils . isNotBlank ( basicFields ) ) {
selectKeys . addAll ( Arrays . asList ( basicFields . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( personalFields ) ) {
selectKeys . addAll ( Arrays . asList ( personalFields . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( workflowFields ) ) {
selectKeys . addAll ( Arrays . asList ( workflowFields . split ( "," ) ) ) ;
}
return StringUtils . join ( selectKeys , "," ) ;
}
return "" ;
}
@Override
public List < SearchTemplateParam > getSearchTemplate ( Map < String , Object > params ) {
String templateId = StringUtils . isNotBlank ( Util . null2String ( params . get ( "templateId" ) ) ) ? Util . null2String ( params . get ( "templateId" ) ) : "-1" ;
int userUID = user . getUID ( ) ;
// 根据ID查询所存储的模板
List < SearchTemplateParam > templates = getHrmResourceMapper ( ) . getSearchTemplatesByUser ( userUID ) ;
templates . add ( 0 , SearchTemplateParam . builder ( ) . key ( "-1" ) . selected ( false ) . showname ( "默认模板" ) . build ( ) ) ;
templates . forEach ( item - > {
if ( templateId . equals ( item . getKey ( ) ) ) {
item . setSelected ( true ) ;
}
} ) ;
return templates ;
}
@Override
public Integer saveCustomTemplate ( SearchTemplateParam params ) {
SearchTemplatePO templatePO = buildSearchTemplateByFields ( params . getFields ( ) ) ;
if ( null = = templatePO ) {
return - 1 ;
}
templatePO . setName ( params . getShowname ( ) ) ;
templatePO . setCreator ( user . getUID ( ) ) ;
templatePO . setCreateTime ( new Date ( ) ) ;
templatePO . setUpdateTime ( new Date ( ) ) ;
getHrmResourceMapper ( ) . insertCustomTemplate ( templatePO ) ;
return templatePO . getId ( ) ;
}
@Override
public void deleteCustomTemplate ( Integer id ) {
getHrmResourceMapper ( ) . deleteCustomTemplate ( id , user . getUID ( ) ) ;
}
@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,41 +240,24 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
// 穿梭框ID, 展示所选字段信息
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo ( ) ;
if ( "-1" . equals ( templateId ) ) {
if ( StringUtils . isNotBlank ( selectKeys ) ) {
SearchTemplatePO templatePO = buildSearchTemplateByFields ( selectKeys ) ;
if ( null ! = templatePO ) {
buildSearchConditionGroup ( templatePO , hrmFieldSearchConditionComInfo , addGroups ) ;
}
} else {
// 未选择模板展示默认模板搜索条件
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 ( 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 ) ;
List < SearchTemplateParam > searchTemplate = getSearchTemplate ( ) ;
String finalTemplateId = templateId ;
searchTemplate . forEach ( item - > {
if ( finalTemplateId . equals ( item . getKey ( ) ) ) {
item . setSelected ( true ) ;
}
} ) ;
apiDatas . put ( "templates" , searchTemplate ) ;
return apiDatas ;
}
@ -227,6 +268,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
ArrayList < MenuBtn > topMenuList = new ArrayList < > ( ) ;
ArrayList < MenuBtn > rightMenuList = new ArrayList < > ( ) ;
topMenuList . add ( MenuBtn . builder ( ) . isBatch ( "1" ) . isTop ( "1" ) . menuFun ( "new" ) . menuIcon ( "icon-coms-New-Flow" ) . menuName ( "新建人员" ) . type ( "BTN_Addnew" ) . build ( ) ) ;
topMenuList . add ( MenuBtn . builder ( ) . isBatch ( "1" ) . isTop ( "1" ) . menuFun ( "customization" ) . menuIcon ( "icon-coms-task-list" ) . menuName ( "列定制" ) . type ( "BTN_COLUMN" ) . build ( ) ) ;
btnDatas . put ( "topMenu" , topMenuList ) ;
rightMenuList . add ( MenuBtn . builder ( ) . isBatch ( "1" ) . isTop ( "1" ) . menuFun ( "new" ) . menuIcon ( "icon-coms-New-Flow" ) . menuName ( "新建人员" ) . type ( "BTN_Addnew" ) . build ( ) ) ;
rightMenuList . add ( MenuBtn . builder ( ) . isBatch ( "0" ) . isTop ( "0" ) . menuFun ( "custom" ) . menuIcon ( "icon-coms-task-list" ) . menuName ( "显示列定制" ) . type ( "BTN_COLUMN" ) . build ( ) ) ;
@ -341,61 +383,39 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* @return
* /
private String buildSqlWhere ( Map < String , Object > params ) {
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 ) ) ;
DBType dbType = DBType . get ( new RecordSet ( ) . getDBType ( ) ) ;
String sqlWhere = " where 1=1 " ;
//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 ( ) ;
Object value = entry . getValue ( ) ;
SearchConditionItem searchConditionItem = allFieldsMap . get ( key ) ;
buildDynamicSql ( searchConditionItem , key , value , sb , dbType ) ;
// 根据不同的类型,不同的查询方式
}
//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 ";
// }
//}
// 分权查询
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 ) {
@ -575,18 +595,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
/ * *
* 获 取 当前 人 员 所 有 的 模 板 信 息
* 获 取 所有 搜 索 字 段 信 息 构 建 的 高 级 搜 索 表 单
*
* @return
* /
public List < SearchTemplateParam > getSearchTemplate ( ) {
int userUID = user . getUID ( ) ;
// 根据ID查询所存储的模板
List < SearchTemplateParam > templates = getHrmResourceMapper ( ) . getSearchTemplatesByUser ( userUID ) ;
templates . add ( 0 , SearchTemplateParam . builder ( ) . key ( "-1" ) . selected ( false ) . showname ( "默认模板" ) . build ( ) ) ;
return templates ;
}
public List < SearchConditionGroup > getAllConditions ( ) {
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo ( ) ;
List < SearchConditionGroup > addGroups = new ArrayList < > ( ) ;
@ -595,21 +607,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 ) ) ;
@ -626,6 +638,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* /
private void createConditionItems ( HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo , List < CusFormFieldPO > formFields , List < SearchConditionItem > conditionItems ) {
for ( CusFormFieldPO cusFormFieldPO : formFields ) {
if ( "jobactivity" . equals ( cusFormFieldPO . getFieldName ( ) ) ) {
// 职务: 282
cusFormFieldPO . setType ( "282" ) ;
}
HrmFieldBean hrmFieldBean = new HrmFieldBean ( ) ;
hrmFieldBean . setFieldid ( Util . null2String ( cusFormFieldPO . getFieldId ( ) ) ) ;
hrmFieldBean . setFieldname ( cusFormFieldPO . getScopeId ( ) + "_" + cusFormFieldPO . getTableName ( ) + "_" + cusFormFieldPO . getFieldName ( ) ) ;
@ -639,21 +655,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 ( ) ) ;
}
}
@ -671,7 +677,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
HrmFieldManager hfm = new HrmFieldManager ( "HrmCustomFieldByInfoType" , scopeid ) ;
List < SearchConditionItem > conditionItems = new ArrayList < > ( ) ;
for ( String fieldName : fieldNames ) {
for ( String field : fieldNames ) {
String fieldName = field . substring ( field . lastIndexOf ( "_" ) + 1 ) ;
JSONObject hrmFieldConf = hfm . getHrmFieldConf ( fieldName ) ;
if ( null = = hrmFieldConf ) {
continue ;
@ -688,8 +695,16 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
hrmFieldBean . setIsFormField ( true ) ;
hrmFieldBean . setIsQuickSearch ( false ) ;
hrmFieldBean . setIsScope ( false ) ;
if ( "jobactivity" . equals ( fieldName ) ) {
// 职务: 282
hrmFieldBean . setType ( "282" ) ;
}
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 ) ) ;
@ -698,4 +713,160 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
throw new RuntimeException ( e ) ;
}
}
/ * *
* 根 据 所 选 字 段 信 息 , 构 建 搜 素 模 板 对 象
*
* @param fields
* @return
* /
private SearchTemplatePO buildSearchTemplateByFields ( String fields ) {
String [ ] split = fields . split ( "," ) ;
if ( split . length > 0 ) {
List < String > basicFields = new ArrayList < > ( ) ;
List < String > personalFields = new ArrayList < > ( ) ;
List < String > workFields = new ArrayList < > ( ) ;
for ( String fieldName : split ) {
if ( fieldName . startsWith ( HrmGroupEnum . HRM_BASIC . getGroupType ( ) . toString ( ) ) ) {
basicFields . add ( fieldName ) ;
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_PERSONAL . getGroupType ( ) . toString ( ) ) ) {
personalFields . add ( fieldName ) ;
} else if ( fieldName . startsWith ( HrmGroupEnum . HRM_WORK . getGroupType ( ) . toString ( ) ) ) {
workFields . add ( fieldName ) ;
}
}
return SearchTemplatePO . builder ( ) . basicFields ( StringUtils . join ( basicFields , "," ) ) . personalFields ( StringUtils . join ( personalFields , "," ) ) . workFields ( StringUtils . join ( workFields , "," ) ) . build ( ) ;
}
return null ;
}
/ * *
* 根 据 搜 索 模 板 对 象 , 构 建 搜 索 条 件 表 单
*
* @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 ) ;
}
//
if ( key . endsWith ( "jobactivity" ) ) {
searchJobTitle = true ;
}
if ( key . endsWith ( "jobGroupId" ) ) {
searchJobTitle = true ;
}
if ( key . endsWith ( "jobtitle" ) ) {
searchJobTitle = true ;
}
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 ) ;
}
}