package com.engine.jucailinkq.common.util ;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.biz.AbstractAdjustClockPointAction ;
import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil ;
import com.engine.jucailinkq.attendance.enums.ApplicableOrganizationEnum ;
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum ;
import com.engine.jucailinkq.attendance.enums.PersonGroupListTypeEnum ;
import com.engine.jucailinkq.common.exception.AttendanceRunTimeException ;
import com.google.common.collect.Lists ;
import com.google.common.collect.Maps ;
import com.google.common.collect.Sets ;
import lombok.extern.slf4j.Slf4j ;
import weaver.conn.RecordSetTrans ;
import weaver.general.Util ;
import weaver.hrm.company.DepartmentComInfo ;
import weaver.soa.workflow.request.* ;
import java.util.* ;
import java.util.stream.Collectors ;
@Slf4j
public class CommonUtil {
/ * *
* 组 装 insert 的 sql 语 句
* @param tableName 表 名
* @param map 列 名 及 对 应 值
* @return
* /
public static boolean makeInsertSql ( String tableName , Map < String , Object > map ) {
String insertSql = "insert into " + tableName ;
String key = "(" ;
String value = "(" ;
List < Object > dataList = Lists . newArrayList ( ) ;
for ( Map . Entry < String , Object > e : map . entrySet ( ) ) {
if ( e . getValue ( ) ! = null & & ! "" . equals ( e . getValue ( ) ) ) {
key = key + e . getKey ( ) + "," ;
value = value + "?" + "," ;
// if (e.getKey().endsWith("date")){
// LocalDateTime localDateTime = DateUtil.getTime(String.valueOf(e.getValue()));
// long datelong = localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
// dataList.add(new Date(datelong));
// }else {
dataList . add ( e . getValue ( ) ) ;
// }
}
}
key = key . substring ( 0 , key . length ( ) - 1 ) + ")" ;
value = value . substring ( 0 , value . length ( ) - 1 ) + ")" ;
insertSql = insertSql + key + " values " + value ;
log . debug ( "makeInsertSql : [{}]" , insertSql ) ;
log . debug ( "needInsertDate: [{}]" , dataList ) ;
return DbTools . update ( insertSql , dataList ) ;
}
/ * *
* 组 装 update 的 sql 语 句
* @param tableName 表 名
* @param map 列 名 及 对 应 值
* @param condition 条 件
* @return
* /
public static String makeUpdateSql ( String tableName , Map < String , Object > map , Map < String , Object > condition ) {
String updateSql = "update " + tableName + " set " ;
for ( Map . Entry < String , Object > e : map . entrySet ( ) ) {
if ( e . getValue ( ) ! = null & & ! "" . equals ( e . getValue ( ) ) ) {
updateSql = updateSql + e . getKey ( ) + "='" + e . getValue ( ) . toString ( ) + "'," ;
}
}
updateSql = updateSql . substring ( 0 , updateSql . length ( ) - 1 ) + " where 1=1" ;
for ( Map . Entry < String , Object > e : condition . entrySet ( ) ) {
updateSql = updateSql + " and " + e . getKey ( ) + "='" + e . getValue ( ) + "'" ;
}
log . debug ( "makeUpdateSql : [{}]" , updateSql ) ;
return updateSql ;
}
/ * *
* 批 量 插 入
* @param dataList
* @param tableName
* @return
* /
public static boolean insertBatch ( List < Map < String , Object > > dataList , String tableName ) {
String sql = "insert into " + tableName ;
String key = "(" ;
String value = "(" ;
for ( Map . Entry < String , Object > data : dataList . get ( 0 ) . entrySet ( ) ) {
key = key + data . getKey ( ) + "," ;
value = value + "?," ;
}
key = key . substring ( 0 , key . length ( ) - 1 ) + ")" ;
value = value . substring ( 0 , value . length ( ) - 1 ) + ")" ;
sql = sql + key + " values " + value ;
log . debug ( "insertBatch sql :" + sql ) ;
List < List > insertDataList = Lists . newArrayList ( ) ;
for ( Map < String , Object > dataMap : dataList ) {
ArrayList < Object > list = new ArrayList < > ( ) ;
for ( Map . Entry < String , Object > entry : dataMap . entrySet ( ) ) {
list . add ( entry . getValue ( ) ) ;
}
insertDataList . add ( list ) ;
}
log . debug ( "insertBatch : [{}]" , insertDataList ) ;
return DbTools . updateBatch ( sql , insertDataList ) ;
}
/ * *
* 获 得 包 含 该 人 员 的 适 用 范 围 的 模 块 的 数 据 id , 按 照 人 员 - 人 员 分 组 - 部 门 - 分 部 优 先 级 取 到 最 优 先 的
* @param resourceId
* @param modeId
* @param startDate
* @param endDate
* @return
* /
public static Set < String > getDataIds ( String resourceId , String modeId , String startDate , String endDate ) {
String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?" ;
List < Map < String , Object > > organizationList = DbTools . getSqlToList ( sql , modeId ) ;
sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , resourceId ) ;
Set < String > dataIds = Sets . newHashSet ( ) ;
Map < String , List < Map < String , Object > > > organizationListGroupBydxlx = organizationList . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "dxlx" ) . toString ( ) ) ) ;
//对象类型为人员
List < Map < String , Object > > personOrganizationList = organizationListGroupBydxlx . get ( "0" ) ;
//对象类型为人员组织
List < Map < String , Object > > personGroupOrganizationList = organizationListGroupBydxlx . get ( "1" ) ;
//对象类型为部门
List < Map < String , Object > > departmentOrganizationList = organizationListGroupBydxlx . get ( "2" ) ;
//对象类型为分部
List < Map < String , Object > > subCompanyOrganizationList = organizationListGroupBydxlx . get ( "3" ) ;
if ( personOrganizationList ! = null ) {
for ( Map < String , Object > personOrganization : personOrganizationList ) {
String dx = Util . null2String ( personOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( resourceId ) ) {
dataIds . add ( Util . null2String ( personOrganization . get ( "dataid" ) ) ) ;
}
}
}
if ( personGroupOrganizationList ! = null & & dataIds . size ( ) = = 0 ) {
Set < String > personGroupIds = personGroupOrganizationList . stream ( ) . map ( e - > Util . null2String ( e . get ( "dx" ) ) . split ( "-" ) [ 0 ] ) . collect ( Collectors . toSet ( ) ) ;
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in (" + String . join ( "," , personGroupIds ) + ")" ;
log . debug ( "query personGroupData : {}" , sql ) ;
List < Map < String , Object > > personGroupData = DbTools . getSqlToList ( sql ) ;
Set < String > personnelGroupIds = PersongroupCommonUtil . getPersonnelGroupingByPerson ( personGroupData , resourceId , startDate , endDate ) ;
log . debug ( "personnelGroupIds : {}" , personnelGroupIds ) ;
for ( Map < String , Object > personGroupOrganization : personGroupOrganizationList ) {
String personnelGroupId = Util . null2String ( personGroupOrganization . get ( "dx" ) ) . split ( "-" ) [ 0 ] ;
if ( personnelGroupIds . contains ( personnelGroupId ) ) {
dataIds . add ( Util . null2String ( personGroupOrganization . get ( "dataid" ) ) ) ;
}
}
}
try {
if ( departmentOrganizationList ! = null & & dataIds . size ( ) = = 0 ) {
String deptid = Util . null2String ( departMentMap . get ( "departmentid" ) ) ;
String pdeptids = "" ;
pdeptids = new DepartmentComInfo ( ) . getAllParentDepartId ( Util . null2String ( departMentMap . get ( "departmentid" ) ) , pdeptids ) ;
pdeptids = deptid + pdeptids ;
log . debug ( "pdeptids : [{}]" , pdeptids ) ;
for ( Map < String , Object > departmentOrganization : departmentOrganizationList ) {
String dx = Util . null2String ( departmentOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
for ( String pdeptid : pdeptids . split ( "," ) ) {
if ( pdeptid . equals ( ids ) ) {
dataIds . add ( Util . null2String ( departmentOrganization . get ( "dataid" ) ) ) ;
}
}
}
}
} catch ( Exception e ) {
log . error ( "catch error :{}" , e ) ;
}
if ( subCompanyOrganizationList ! = null & & dataIds . size ( ) = = 0 ) {
String subCompanyId = Util . null2String ( departMentMap . get ( "subcompanyid1" ) ) ;
for ( Map < String , Object > subCompanyOrganization : subCompanyOrganizationList ) {
String dx = Util . null2String ( subCompanyOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( subCompanyId ) ) {
dataIds . add ( Util . null2String ( subCompanyOrganization . get ( "dataid" ) ) ) ;
}
}
}
log . debug ( "dataIds : {}" , dataIds ) ;
return dataIds ;
}
/ * *
* 获 得 包 含 该 人 员 的 适 用 范 围 的 模 块 的 所 有 数 据 id , 给 班 次 适 用 范 围 用
* @param resourceId
* @param modeId
* @param startDate
* @param endDate
* @return
* /
public static Set < String > getAllDataIds ( String resourceId , String modeId , String startDate , String endDate ) {
String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?" ;
List < Map < String , Object > > organizationList = DbTools . getSqlToList ( sql , modeId ) ;
sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , resourceId ) ;
Set < String > dataIds = Sets . newHashSet ( ) ;
Map < String , List < Map < String , Object > > > organizationListGroupBydxlx = organizationList . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "dxlx" ) . toString ( ) ) ) ;
//对象类型为人员
List < Map < String , Object > > personOrganizationList = organizationListGroupBydxlx . get ( "0" ) ;
//对象类型为人员组织
List < Map < String , Object > > personGroupOrganizationList = organizationListGroupBydxlx . get ( "1" ) ;
//对象类型为部门
List < Map < String , Object > > departmentOrganizationList = organizationListGroupBydxlx . get ( "2" ) ;
//对象类型为分部
List < Map < String , Object > > subCompanyOrganizationList = organizationListGroupBydxlx . get ( "3" ) ;
if ( personOrganizationList ! = null ) {
for ( Map < String , Object > personOrganization : personOrganizationList ) {
String dx = Util . null2String ( personOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( resourceId ) ) {
dataIds . add ( Util . null2String ( personOrganization . get ( "dataid" ) ) ) ;
}
}
}
if ( personGroupOrganizationList ! = null ) {
Set < String > personGroupIds = personGroupOrganizationList . stream ( ) . map ( e - > Util . null2String ( e . get ( "dx" ) ) . split ( "-" ) [ 0 ] ) . collect ( Collectors . toSet ( ) ) ;
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in (" + String . join ( "," , personGroupIds ) + ")" ;
log . debug ( "query personGroupData : {}" , sql ) ;
List < Map < String , Object > > personGroupData = DbTools . getSqlToList ( sql ) ;
Set < String > personnelGroupIds = PersongroupCommonUtil . getPersonnelGroupingByPerson ( personGroupData , resourceId , startDate , endDate ) ;
log . debug ( "personnelGroupIds : {}" , personnelGroupIds ) ;
for ( Map < String , Object > personGroupOrganization : personGroupOrganizationList ) {
String personnelGroupId = Util . null2String ( personGroupOrganization . get ( "dx" ) ) . split ( "-" ) [ 0 ] ;
if ( personnelGroupIds . contains ( personnelGroupId ) ) {
dataIds . add ( Util . null2String ( personGroupOrganization . get ( "dataid" ) ) ) ;
}
}
}
try {
if ( departmentOrganizationList ! = null ) {
String deptid = Util . null2String ( departMentMap . get ( "departmentid" ) ) ;
String pdeptids = "" ;
pdeptids = new DepartmentComInfo ( ) . getAllParentDepartId ( Util . null2String ( departMentMap . get ( "departmentid" ) ) , pdeptids ) ;
pdeptids = deptid + pdeptids ;
log . debug ( "pdeptids : [{}]" , pdeptids ) ;
for ( Map < String , Object > departmentOrganization : departmentOrganizationList ) {
String dx = Util . null2String ( departmentOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
for ( String pdeptid : pdeptids . split ( "," ) ) {
if ( pdeptid . equals ( ids ) ) {
dataIds . add ( Util . null2String ( departmentOrganization . get ( "dataid" ) ) ) ;
}
}
}
}
} catch ( Exception e ) {
log . error ( "catch error :{}" , e ) ;
}
if ( subCompanyOrganizationList ! = null ) {
String subCompanyId = Util . null2String ( departMentMap . get ( "subcompanyid1" ) ) ;
for ( Map < String , Object > subCompanyOrganization : subCompanyOrganizationList ) {
String dx = Util . null2String ( subCompanyOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( subCompanyId ) ) {
dataIds . add ( Util . null2String ( subCompanyOrganization . get ( "dataid" ) ) ) ;
}
}
}
log . debug ( "dataIds : {}" , dataIds ) ;
return dataIds ;
}
public static boolean ifContainStr ( String fatherStr , String sonStr , String mark ) {
for ( String pdeptid : fatherStr . split ( mark ) ) {
if ( pdeptid . equals ( sonStr ) ) {
return true ;
}
}
return false ;
}
/ * *
* 根 据 流 程 requestInfo 消 息 对 象 获 取 流 程 主 表 字 段 的 信 息 的 map 集 合
* @param requestInfo
* @return
* /
public static HashMap < String , String > getMainTableInfo ( RequestInfo requestInfo ) {
HashMap < String , String > mainMap = new HashMap < String , String > ( ) ;
Property [ ] properties = requestInfo . getMainTableInfo ( ) . getProperty ( ) ; // 获取表单主字段信息
for ( int i = 0 ; i < properties . length ; i + + ) {
String name = properties [ i ] . getName ( ) ; // 主字段名称
String value = Util . null2String ( properties [ i ] . getValue ( ) ) ; // 主字段对应的值
mainMap . put ( name , value ) ;
}
mainMap . put ( "id" , String . valueOf ( requestInfo . getRequestManager ( ) . getBillid ( ) ) ) ;
return mainMap ;
}
/ * *
* 明 细
* @param request
* @return
* /
public static List < Map < String , String > > getDetailTableInfo ( RequestInfo request , int index ) {
// 获取明细的信息
List < Map < String , String > > list = new ArrayList < Map < String , String > > ( ) ;
DetailTable [ ] detailtables = request . getDetailTableInfo ( ) . getDetailTable ( ) ; // 获取明细表数据
if ( detailtables . length > index ) {
DetailTable dt = detailtables [ index ] ; // 获取明细表 0代表明细表1
log . debug ( "getDetailTableInfo :[{}]" , dt . getTableDBName ( ) ) ;
Row [ ] rows = dt . getRow ( ) ; // 获取明细表中所有行的信息
for ( int i = 0 ; i < rows . length ; i + + ) {
Row row = rows [ i ] ; // 获取具体行信息
Cell [ ] cells = row . getCell ( ) ; // 获取具体行所有列的信息
Map < String , String > map = new HashMap < String , String > ( ) ;
for ( int j = 0 ; j < cells . length ; j + + ) {
Cell cell = cells [ j ] ;
String name = cell . getName ( ) . toLowerCase ( ) ; // 获取字段名
String value = cell . getValue ( ) ; // 获取具体的值
map . put ( name , value ) ;
}
map . put ( "id" , row . getId ( ) ) ;
list . add ( map ) ;
}
}
return list ;
}
/ * *
* 获 取 适 用 范 围 对 应 的 人 员 id 列 表 , 适 用 范 围 由 dataId 和 modeId 获 得
* @param dataId
* @param modeId
* @return
* /
public static List < String > getEmpIds ( String dataId , String modeId ) {
List < String > empIdList = new ArrayList < > ( ) ;
String sql = "select dxlx,aqjb,dx from uf_jcl_syzz where modeid=? and dataid = ?" ;
//适用组织所有值集合
List < Map < String , Object > > organizationList = DbTools . getSqlToListKeySmallLetter ( sql , modeId , dataId ) ;
//分组
List < Map < String , String > > empIdInfos = new ArrayList < > ( ) ;
List < Map < String , String > > empGroupIdInfos = new ArrayList < > ( ) ;
List < Map < String , String > > depIdInfos = new ArrayList < > ( ) ;
List < Map < String , String > > subCompanyIdInfos = new ArrayList < > ( ) ;
for ( Map < String , Object > organization : organizationList ) {
String id = Util . null2String ( organization . get ( "dx" ) ) . split ( "-" ) [ 0 ] ;
String securityLevel = Util . null2String ( organization . get ( "aqjb" ) ) ;
String [ ] securityLevelArr = securityLevel . split ( "-" ) ;
String minSecurityLevel = securityLevel . substring ( 0 , 1 ) . equals ( "-" ) ? "" : securityLevelArr [ 0 ] ;
String maxSecurityLevel = "" ;
if ( securityLevelArr . length = = 1 & & ! securityLevelArr [ 0 ] . equals ( minSecurityLevel ) ) {
maxSecurityLevel = securityLevelArr [ 0 ] ;
} else if ( securityLevelArr . length = = 2 ) {
maxSecurityLevel = securityLevelArr [ 1 ] ;
}
if ( ApplicableOrganizationEnum . PERSONNEL . getKey ( ) . equals ( organization . get ( "dxlx" ) ) ) {
Map < String , String > infoItem = new HashMap < > ( ) ;
infoItem . put ( "id" , id ) ;
infoItem . put ( "minSecurityLevel" , minSecurityLevel ) ;
infoItem . put ( "maxSecurityLevel" , maxSecurityLevel ) ;
empIdInfos . add ( infoItem ) ;
} else if ( ApplicableOrganizationEnum . PERSONNEL_GROUP . getKey ( ) . equals ( organization . get ( "dxlx" ) ) ) {
Map < String , String > infoItem = new HashMap < > ( ) ;
infoItem . put ( "id" , id ) ;
infoItem . put ( "minSecurityLevel" , minSecurityLevel ) ;
infoItem . put ( "maxSecurityLevel" , maxSecurityLevel ) ;
empGroupIdInfos . add ( infoItem ) ;
} else if ( ApplicableOrganizationEnum . DEPARTMENT . getKey ( ) . equals ( organization . get ( "dxlx" ) ) ) {
Map < String , String > infoItem = new HashMap < > ( ) ;
infoItem . put ( "id" , id ) ;
infoItem . put ( "minSecurityLevel" , minSecurityLevel ) ;
infoItem . put ( "maxSecurityLevel" , maxSecurityLevel ) ;
depIdInfos . add ( infoItem ) ;
} else if ( ApplicableOrganizationEnum . SUBCOMPANY . getKey ( ) . equals ( organization . get ( "dxlx" ) ) ) {
Map < String , String > infoItem = new HashMap < > ( ) ;
infoItem . put ( "id" , id ) ;
infoItem . put ( "minSecurityLevel" , minSecurityLevel ) ;
infoItem . put ( "maxSecurityLevel" , maxSecurityLevel ) ;
subCompanyIdInfos . add ( infoItem ) ;
}
}
//人员类型
log . debug ( "empIdInfos : " + empIdInfos ) ;
for ( Map < String , String > map : empIdInfos ) {
String id = map . get ( "id" ) ;
String minSecurityLevel = map . get ( "minSecurityLevel" ) ;
String maxSecurityLevel = map . get ( "maxSecurityLevel" ) ;
//查询目标人员信息
String querySql = "select * from hrmresource where id = " + id ;
if ( ! minSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel >= " + minSecurityLevel ;
}
if ( ! maxSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel <= " + maxSecurityLevel ;
}
Map < String , Object > data = DbTools . getSqlToMap ( querySql ) ;
log . debug ( "querySql : " + querySql ) ;
if ( data . size ( ) > 0 ) {
empIdList . add ( id ) ;
}
}
//人员分组类型
log . debug ( "empGroupIdInfos : " + empGroupIdInfos ) ;
for ( Map < String , String > map : empGroupIdInfos ) {
String id = map . get ( "id" ) ;
String minSecurityLevel = map . get ( "minSecurityLevel" ) ;
String maxSecurityLevel = map . get ( "maxSecurityLevel" ) ;
//获取分组包含人员id
Set < String > empIdsByGroup = getEmpGroupUserIds ( id ) ;
log . debug ( "empGroupId : " + id + ", empIdsByGroup : " + empIdsByGroup ) ;
//查询目标人员信息
if ( empIdsByGroup . size ( ) > 0 ) {
String querySql = "select * from hrmresource where id in (" + String . join ( "," , empIdsByGroup ) + ")" ;
if ( ! minSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel >= " + minSecurityLevel ;
}
if ( ! maxSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel <= " + maxSecurityLevel ;
}
List < Map < String , Object > > datas = DbTools . getSqlToListKeySmallLetter ( querySql ) ;
log . debug ( "querySql : " + querySql ) ;
if ( datas . size ( ) > 0 ) {
log . debug ( "datas.size : " + datas . size ( ) ) ;
datas . forEach ( f - > empIdList . add ( f . get ( "id" ) . toString ( ) ) ) ;
}
}
}
//部门类型
log . debug ( "depIdInfos : " + depIdInfos ) ;
for ( Map < String , String > map : depIdInfos ) {
String id = map . get ( "id" ) ;
String minSecurityLevel = map . get ( "minSecurityLevel" ) ;
String maxSecurityLevel = map . get ( "maxSecurityLevel" ) ;
//查询目标人员信息
String querySql = "select * from hrmresource where departmentid = " + id ;
if ( ! minSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel >= " + minSecurityLevel ;
}
if ( ! maxSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel <= " + maxSecurityLevel ;
}
List < Map < String , Object > > datas = DbTools . getSqlToListKeySmallLetter ( querySql ) ;
log . debug ( "querySql : " + querySql ) ;
if ( datas . size ( ) > 0 ) {
log . debug ( "datas.size : " + datas . size ( ) ) ;
datas . forEach ( f - > empIdList . add ( f . get ( "id" ) . toString ( ) ) ) ;
}
}
//分部类型
log . debug ( "subCompanyIdInfos : " + subCompanyIdInfos ) ;
for ( Map < String , String > map : subCompanyIdInfos ) {
String id = map . get ( "id" ) ;
String minSecurityLevel = map . get ( "minSecurityLevel" ) ;
String maxSecurityLevel = map . get ( "maxSecurityLevel" ) ;
//查询目标人员信息
String querySql = "select * from hrmresource where subcompanyid1 = " + id ;
if ( ! minSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel >= " + minSecurityLevel ;
}
if ( ! maxSecurityLevel . equals ( "" ) ) {
querySql = querySql + " and seclevel <= " + maxSecurityLevel ;
}
List < Map < String , Object > > datas = DbTools . getSqlToListKeySmallLetter ( querySql ) ;
log . debug ( "querySql : " + querySql ) ;
if ( datas . size ( ) > 0 ) {
log . debug ( "datas.size : " + datas . size ( ) ) ;
datas . forEach ( f - > empIdList . add ( f . get ( "id" ) . toString ( ) ) ) ;
}
}
return empIdList ;
}
/ * *
* 获 得 人 员 分 组 下 面 的 人 员 集 合
* @param empGroupId
* @return 人 员 id 集 合
* /
public static Set < String > getEmpGroupUserIds ( String empGroupId ) {
String sql = "select b.mainid,b.empid,b.filters,b.bdate,b.edate,a.list_type,b.sqltj from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where mainid = " + empGroupId ;
List < Map < String , Object > > personGroupDataList = DbTools . getSqlToListKeySmallLetter ( sql ) ;
Set < String > empIdList = Sets . newHashSet ( ) ;
for ( Map < String , Object > personGroupData : personGroupDataList ) {
String id = Util . null2String ( personGroupData . get ( "mainid" ) ) ;
String empid = Util . null2String ( personGroupData . get ( "empid" ) ) ;
String filters = Util . null2String ( personGroupData . get ( "filters" ) ) ;
String list_type = Util . null2String ( personGroupData . get ( "list_type" ) ) ;
String sqltj = Util . null2String ( personGroupData . get ( "sqltj" ) ) ;
if ( "0" . equals ( list_type ) & & ! "" . equals ( empid ) ) {
//人员清单
empIdList . add ( empid ) ;
} else if ( "1" . equals ( list_type ) & & ! "" . equals ( filters ) ) {
//条件清单
sql = "select id,seclevel from hrmresource where 1=1 " ;
filters = filters . replace ( "a n d " , "and" ) ;
filters = filters . replace ( "o r " , "or" ) ;
if ( filters . contains ( "field" ) ) {
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and " + filters ;
} else {
sql = sql + " and " + filters ;
}
log . debug ( "getPersonnelGroupingByPerson filter sql : {}" , sql ) ;
List < Map < String , Object > > dataList = DbTools . getSqlToListKeySmallLetter ( sql ) ;
for ( Map < String , Object > dataMap : dataList ) {
String hrmId = Util . null2String ( dataMap . get ( "id" ) ) ;
String seclevel = Util . null2String ( dataMap . get ( "seclevel" ) ) ;
empIdList . add ( hrmId ) ;
}
} else if ( "2" . equals ( list_type ) & & ! "" . equals ( sqltj ) ) {
sqltj = sqltj . replace ( "s e l e c t " , "select" ) ;
sqltj = sqltj . replace ( "a n d " , "and" ) ;
sqltj = sqltj . replace ( "o r " , "or" ) ;
sqltj = sqltj . replace ( "j o i n " , "join" ) ;
log . info ( "getPersonnelGroupingByPerson sqltj : [{}]" , sqltj ) ;
List < Map < String , Object > > dataList = DbTools . getSqlToList ( sqltj ) ;
for ( Map < String , Object > dataMap : dataList ) {
String hrmId = Util . null2String ( dataMap . get ( "id" ) ) ;
empIdList . add ( hrmId ) ;
}
}
}
return empIdList ;
}
/ * *
* 获 得 人 员 分 组 下 面 的 人 员 信 息 映 射 , 人 员 id - 起 始 生 效 期 、 结 束 生 效 期 信 息
* @param empGroupId 分 组 id
* @return
* /
public static Map < String , Object > getEmpGroupUserInfo ( String empGroupId ) {
String sql = "select b.mainid,b.empid,b.filters,b.bdate,b.edate,a.list_type,b.sqltj from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where mainid = " + empGroupId ;
List < Map < String , Object > > personGroupDataList = DbTools . getSqlToListKeySmallLetter ( sql ) ;
Map < String , Object > empGroupUserInfo = new HashMap < > ( ) ;
Map < String , Object > forceTimeItem = null ;
List < Map < String , Object > > forceTimeItemList = null ;
for ( Map < String , Object > personGroupData : personGroupDataList ) {
String id = Util . null2String ( personGroupData . get ( "mainid" ) ) ;
String empid = Util . null2String ( personGroupData . get ( "empid" ) ) ;
String bdate = Util . null2String ( personGroupData . get ( "bdate" ) ) ;
String edate = Util . null2String ( personGroupData . get ( "edate" ) ) ;
String filters = Util . null2String ( personGroupData . get ( "filters" ) ) ;
String list_type = Util . null2String ( personGroupData . get ( "list_type" ) ) ;
String sqltj = Util . null2String ( personGroupData . get ( "sqltj" ) ) ;
if ( "0" . equals ( list_type ) & & ! "" . equals ( empid ) ) {
//人员清单
empGroupUserInfo . put ( "listType" , PersonGroupListTypeEnum . PERSON . getKey ( ) ) ;
forceTimeItem = new HashMap < > ( ) ;
forceTimeItem . put ( "startDate" , bdate ) ;
forceTimeItem . put ( "endDate" , edate ) ;
empGroupUserInfo . put ( empid , forceTimeItem ) ;
} else if ( "1" . equals ( list_type ) & & ! "" . equals ( filters ) ) {
empGroupUserInfo . put ( "listType" , PersonGroupListTypeEnum . CONDITION . getKey ( ) ) ;
//条件清单
sql = "select id,seclevel from hrmresource where 1=1 " ;
filters = filters . replace ( "a n d " , "and" ) ;
filters = filters . replace ( "o r " , "or" ) ;
if ( filters . contains ( "field" ) ) {
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and " + filters ;
} else {
sql = sql + " and " + filters ;
}
log . debug ( "getPersonnelGroupingByPerson filter sql : {}" , sql ) ;
List < Map < String , Object > > dataList = DbTools . getSqlToListKeySmallLetter ( sql ) ;
for ( Map < String , Object > dataMap : dataList ) {
String hrmId = Util . null2String ( dataMap . get ( "id" ) ) ;
String seclevel = Util . null2String ( dataMap . get ( "seclevel" ) ) ;
if ( empGroupUserInfo . get ( hrmId ) = = null ) {
forceTimeItemList = new ArrayList < > ( ) ;
forceTimeItem = new HashMap < > ( ) ;
forceTimeItem . put ( "startDate" , bdate ) ;
forceTimeItem . put ( "endDate" , edate ) ;
forceTimeItemList . add ( forceTimeItem ) ;
empGroupUserInfo . put ( hrmId , forceTimeItemList ) ;
} else {
List < Map < String , Object > > existForceTimeItemList = ( List < Map < String , Object > > ) empGroupUserInfo . get ( hrmId ) ;
forceTimeItem = new HashMap < > ( ) ;
forceTimeItem . put ( "startDate" , bdate ) ;
forceTimeItem . put ( "endDate" , edate ) ;
existForceTimeItemList . add ( forceTimeItem ) ;
empGroupUserInfo . put ( hrmId , existForceTimeItemList ) ;
}
}
} else if ( "2" . equals ( list_type ) & & ! "" . equals ( sqltj ) ) {
sqltj = sqltj . replace ( "s e l e c t " , "select" ) ;
sqltj = sqltj . replace ( "a n d " , "and" ) ;
sqltj = sqltj . replace ( "o r " , "or" ) ;
sqltj = sqltj . replace ( "j o i n " , "join" ) ;
log . info ( "getPersonnelGroupingByPerson sqltj : [{}]" , sqltj ) ;
List < Map < String , Object > > dataList = DbTools . getSqlToList ( sqltj ) ;
for ( Map < String , Object > dataMap : dataList ) {
String hrmId = Util . null2String ( dataMap . get ( "id" ) ) ;
if ( empGroupUserInfo . get ( hrmId ) = = null ) {
forceTimeItemList = new ArrayList < > ( ) ;
forceTimeItem = new HashMap < > ( ) ;
forceTimeItem . put ( "startDate" , bdate ) ;
forceTimeItem . put ( "endDate" , edate ) ;
forceTimeItemList . add ( forceTimeItem ) ;
empGroupUserInfo . put ( hrmId , forceTimeItemList ) ;
} else {
List < Map < String , Object > > existForceTimeItemList = ( List < Map < String , Object > > ) empGroupUserInfo . get ( hrmId ) ;
forceTimeItem = new HashMap < > ( ) ;
forceTimeItem . put ( "startDate" , bdate ) ;
forceTimeItem . put ( "endDate" , edate ) ;
existForceTimeItemList . add ( forceTimeItem ) ;
empGroupUserInfo . put ( hrmId , existForceTimeItemList ) ;
}
}
}
}
return empGroupUserInfo ;
}
/ * *
* 获 取 附 带 假 期 使 用 额 度 概 念 的 假 期 类 型 列 表
* @return
* /
public static List < String > getJqInfoWithAmount ( ) {
List < String > jqIdList = new ArrayList < > ( ) ;
//来自假期额度
String sql1 = "select * from uf_jcl_kq_jqed" ;
List < Map < String , Object > > data1 = DbTools . getSqlToList ( sql1 ) ;
for ( Map < String , Object > map : data1 ) {
jqIdList . add ( Util . null2String ( map . get ( "jb" ) ) ) ;
}
//来自加班类型的考勤项目中关联的假期类型
String sql2 = "select * from uf_jcl_kq_kqxm where xmlx = 4 and jbzdzjqye = 1" ;
List < Map < String , Object > > data2 = DbTools . getSqlToList ( sql2 ) ;
for ( Map < String , Object > map : data2 ) {
String jqId = Util . null2String ( map . get ( "zrdjb" ) ) ;
if ( ! "" . equals ( jqId ) ) {
jqIdList . add ( jqId ) ;
}
}
jqIdList = jqIdList . stream ( ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
return jqIdList ;
}
/ * *
* 获 得 人 员 对 应 日 期 所 属 的 日 期 类 型
* @param userId
* @param date
* @return
* /
public static String getRqlx ( String userId , String date ) {
String modeId = Utils . getFormmodeIdMap ( ) . get ( "uf_jcl_kq_rlmc" ) ;
Set < String > calendarSetIdsSets = CommonUtil . getDataIds ( userId , modeId , DateUtil . getCurrentDate ( ) , DateUtil . getCurrentDate ( ) ) ;
log . debug ( "getRqlx calendarSetIdsSets : [{}]" , calendarSetIdsSets ) ;
String rqlx = "" ;
if ( calendarSetIdsSets . size ( ) > 0 ) {
String sql = "select rqlx from uf_jcl_kq_rlxx where rlmc=? and rq=?" ;
List < Map < String , Object > > dataList = DbTools . getSqlToList ( sql , calendarSetIdsSets . toArray ( ) [ 0 ] , date ) ;
if ( dataList . size ( ) > 0 ) {
rqlx = dataList . get ( 0 ) . get ( "rqlx" ) . toString ( ) ;
} else {
sql = "select subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , userId ) ;
String subcompanyid1 = departMentMap . get ( "subcompanyid1" ) . toString ( ) ;
rqlx = Utils . getDefaultDateType ( subcompanyid1 , date ) ;
}
} else {
String sql = "select subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , userId ) ;
String subcompanyid1 = departMentMap . get ( "subcompanyid1" ) . toString ( ) ;
rqlx = Utils . getDefaultDateType ( subcompanyid1 , date ) ;
}
return rqlx ;
}
/ * *
* 获 得 人 员 对 应 年 份 所 属 的 日 期 类 型 集 合
* @param userId
* @param year
* @return
* /
public static List < Map < String , Object > > getYearCalendarList ( String userId , String year ) {
String modeId = Utils . getFormmodeIdMap ( ) . get ( "uf_jcl_kq_rlmc" ) ;
Set < String > calendarSetIdsSets = CommonUtil . getDataIds ( userId , modeId , DateUtil . getCurrentDate ( ) , DateUtil . getCurrentDate ( ) ) ;
log . debug ( "getRqlx calendarSetIdsSets : [{}]" , calendarSetIdsSets ) ;
List < Map < String , Object > > resultList = Lists . newArrayList ( ) ;
if ( calendarSetIdsSets . size ( ) > 0 ) {
String sql = "select rqlx,rq from uf_jcl_kq_rlxx where rlmc=? and nd=?" ;
resultList = DbTools . getSqlToList ( sql , calendarSetIdsSets . toArray ( ) [ 0 ] , year ) ;
if ( resultList . size ( ) = = 0 ) {
sql = "select subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , userId ) ;
String subcompanyid1 = departMentMap . get ( "subcompanyid1" ) . toString ( ) ;
resultList = Utils . getDefaultDateList ( subcompanyid1 , year ) ;
}
} else {
String sql = "select subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , userId ) ;
String subcompanyid1 = departMentMap . get ( "subcompanyid1" ) . toString ( ) ;
resultList = Utils . getDefaultDateList ( subcompanyid1 , year ) ;
}
return resultList ;
}
/ * *
* 获 得 该 班 次 是 否 休 息
* @param classId
* @return
* /
public static String ifrestByClass ( String classId ) {
String sql = "select id,sfxx from uf_jcl_kq_bcxx where id = ?" ;
List < Map < String , Object > > list = DbTools . getSqlToList ( sql , classId ) ;
if ( list . size ( ) > 0 ) {
return Util . null2String ( list . get ( 0 ) . get ( "sfxx" ) ) . equals ( "" ) ? CheckBoxEnum . UNCHECKED . getValue ( ) : Util . null2String ( list . get ( 0 ) . get ( "sfxx" ) ) ;
} else {
return CheckBoxEnum . UNCHECKED . getKey ( ) ;
}
}
/ * *
* 获 取 人 员 id 和 姓 名 的 映 射
* @return
* /
public static Map < String , String > empIdToNameInfo ( List < String > empIds ) {
Map < String , String > resultMap = new HashMap < > ( ) ;
String sql = "select id,lastname from hrmresource" ;
if ( empIds ! = null & & empIds . size ( ) > 0 ) {
sql = sql + " where id in (" + String . join ( "," , empIds ) + ")" ;
}
List < Map < String , Object > > list = DbTools . getSqlToList ( sql ) ;
for ( Map < String , Object > map : list ) {
resultMap . put ( map . get ( "id" ) . toString ( ) , Util . null2String ( map . get ( "lastname" ) ) ) ;
}
return resultMap ;
}
/ * *
* 获 取 分 部 id 和 名 称 的 映 射
* @return
* /
public static Map < String , String > subCompanyIdToNameInfo ( ) {
Map < String , String > resultMap = new HashMap < > ( ) ;
String sql = "select id,subcompanyname from hrmsubcompany" ;
List < Map < String , Object > > list = DbTools . getSqlToList ( sql ) ;
for ( Map < String , Object > map : list ) {
resultMap . put ( map . get ( "id" ) . toString ( ) , Util . null2String ( map . get ( "subcompanyname" ) ) ) ;
}
return resultMap ;
}
/ * *
* 获 取 部 门 id 和 名 称 的 映 射
* @return
* /
public static Map < String , String > depIdToNameInfo ( ) {
Map < String , String > resultMap = new HashMap < > ( ) ;
String sql = "select id,departmentname from hrmdepartment" ;
List < Map < String , Object > > list = DbTools . getSqlToList ( sql ) ;
for ( Map < String , Object > map : list ) {
resultMap . put ( map . get ( "id" ) . toString ( ) , Util . null2String ( map . get ( "departmentname" ) ) ) ;
}
return resultMap ;
}
/ * *
* 获 取 考 勤 项 目 id 和 名 称 的 映 射
* @return
* /
public static Map < String , String > kqxmIdToNameInfo ( ) {
Map < String , String > resultMap = new HashMap < > ( ) ;
String sql = "select id,mc from uf_jcl_kq_kqxm" ;
List < Map < String , Object > > list = DbTools . getSqlToList ( sql ) ;
for ( Map < String , Object > map : list ) {
resultMap . put ( map . get ( "id" ) . toString ( ) , Util . null2String ( map . get ( "mc" ) ) ) ;
}
return resultMap ;
}
/ * *
* 初 始 化 扩 展 类
* /
public static void initExtensionClassHolder ( ) {
String sql = "select id,jkdzlwj,jkdzsxlx,zt,zhsx,jkdzdybc from uf_jcl_kq_ywdmjc where zt=0" ;
List < Map < String , Object > > dataList = DbTools . getSqlToList ( sql ) ;
sql = "select a.id,b.csmc,b.csz from uf_jcl_kq_ywdmjc a left join uf_jcl_kq_ywdmjc_dt1 b on a.id=b.mainid where a.zt=0" ;
Map < String , List < Map < String , Object > > > detailDataGroupMap = DbTools . getSqlToList ( sql ) . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "id" ) . toString ( ) ) ) ;
try {
//打卡卡点扩展类
List < AbstractAdjustClockPointAction > adjustClockPointAction = Lists . newArrayList ( ) ;
List < Map < String , Object > > adjustClockPointActionResultList = dataList . stream ( ) . filter ( e - > "0" . equals ( e . get ( "jkdzsxlx" ) ) ) . sorted ( Comparator . comparing ( e - > Integer . valueOf ( e . get ( "zhsx" ) . toString ( ) ) ) ) . collect ( Collectors . toList ( ) ) ;
for ( Map < String , Object > adjustClockPointActionMap : adjustClockPointActionResultList ) {
String classPath = adjustClockPointActionMap . get ( "jkdzlwj" ) . toString ( ) ;
AbstractAdjustClockPointAction action = ( AbstractAdjustClockPointAction ) Class . forName ( classPath ) . newInstance ( ) ;
action . setApplyClasses ( Util . null2String ( adjustClockPointActionMap . get ( "jkdzdybc" ) ) ) ;
List < Map < String , Object > > detailDataList = detailDataGroupMap . get ( adjustClockPointActionMap . get ( "id" ) ) ;
if ( detailDataList ! = null & & detailDataList . size ( ) > 0 ) {
Map < String , String > paramMap = Maps . newHashMap ( ) ;
for ( Map < String , Object > detailData : detailDataList ) {
paramMap . put ( Util . null2String ( detailData . get ( "csmc" ) ) , Util . null2String ( detailData . get ( "csz" ) ) ) ;
}
action . setParams ( paramMap ) ;
}
adjustClockPointAction . add ( action ) ;
}
ExtensionClassHolder . setAdjustClockPointAction ( adjustClockPointAction ) ;
} catch ( Exception e ) {
log . error ( "initExtensionClassHolder fail" ) ;
throw new AttendanceRunTimeException ( "初始化扩展类失败" ) ;
}
}
/ * *
* 根 据 班 段 类 型 获 得 对 应 的 子 项 目
* @param itemMap
* @param bdlx
* @return
* /
public static Map < String , Object > assembleAskForOrEvectionItem ( Map < String , Object > itemMap , String bdlx ) {
List < Map < String , Object > > sonItems = ( List < Map < String , Object > > ) itemMap . get ( "sonItems" ) ;
String workfor = Utils . getWorkFor ( bdlx ) ;
if ( sonItems ! = null & & sonItems . size ( ) > 0 ) {
for ( Map < String , Object > sonItem : sonItems ) {
String zysd = Util . null2String ( sonItem . get ( "zysd" ) ) ;
if ( zysd . equals ( workfor ) ) {
return sonItem ;
}
}
}
return null ;
}
/ * *
* @param empId 人 员 id
* @param date 日 期
* @return 返 回 人 员 在 指 定 日 期 在 考 勤 方 案 和 通 用 中 被 设 置 的 考 勤 项 目 集 合
* /
public static List < Map < String , Object > > getAttendanceItemsByEmpIdDate ( String empId , String date ) {
String modeId = Utils . getFormmodeIdMap ( ) . get ( "uf_jcl_kq_kqfa" ) ;
Map < String , Object > resultMap = Maps . newHashMap ( ) ;
String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?" ;
List < Map < String , Object > > organizationList = DbTools . getSqlToList ( sql , modeId ) ;
sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?" ;
Map < String , Object > departMentMap = DbTools . getSqlToMap ( sql , empId ) ;
Set < String > dataIds = Sets . newHashSet ( ) ;
Map < String , List < Map < String , Object > > > organizationListGroupBydxlx = organizationList . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "dxlx" ) . toString ( ) ) ) ;
//对象类型为人员
List < Map < String , Object > > personOrganizationList = organizationListGroupBydxlx . get ( "0" ) ;
//对象类型为人员组织
List < Map < String , Object > > personGroupOrganizationList = organizationListGroupBydxlx . get ( "1" ) ;
//对象类型为部门
List < Map < String , Object > > departmentOrganizationList = organizationListGroupBydxlx . get ( "2" ) ;
//对象类型为分部
List < Map < String , Object > > subCompanyOrganizationList = organizationListGroupBydxlx . get ( "3" ) ;
if ( personOrganizationList ! = null ) {
for ( Map < String , Object > personOrganization : personOrganizationList ) {
String dx = Util . null2String ( personOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( empId ) ) {
dataIds . add ( Util . null2String ( personOrganization . get ( "dataid" ) ) ) ;
}
}
}
try {
if ( departmentOrganizationList ! = null ) {
String deptid = Util . null2String ( departMentMap . get ( "departmentid" ) ) ;
String pdeptids = "" ;
pdeptids = new DepartmentComInfo ( ) . getAllParentDepartId ( Util . null2String ( departMentMap . get ( "departmentid" ) ) , pdeptids ) ;
pdeptids = deptid + pdeptids ;
for ( Map < String , Object > departmentOrganization : departmentOrganizationList ) {
String dx = Util . null2String ( departmentOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
for ( String pdeptid : pdeptids . split ( "," ) ) {
if ( pdeptid . equals ( ids ) ) {
dataIds . add ( Util . null2String ( departmentOrganization . get ( "dataid" ) ) ) ;
}
}
}
}
} catch ( Exception e ) {
log . error ( "catch error :{}" , e ) ;
}
if ( subCompanyOrganizationList ! = null ) {
String subCompanyId = Util . null2String ( departMentMap . get ( "subcompanyid1" ) ) ;
for ( Map < String , Object > subCompanyOrganization : subCompanyOrganizationList ) {
String dx = Util . null2String ( subCompanyOrganization . get ( "dx" ) ) ;
String ids = dx . split ( "-" ) [ 0 ] ;
if ( ids . equals ( subCompanyId ) ) {
dataIds . add ( Util . null2String ( subCompanyOrganization . get ( "dataid" ) ) ) ;
}
}
}
if ( personGroupOrganizationList ! = null ) {
Set < String > personGroupIds = personGroupOrganizationList . stream ( ) . map ( e - > Util . null2String ( e . get ( "dx" ) ) . split ( "-" ) [ 0 ] ) . collect ( Collectors . toSet ( ) ) ;
sql = "select mainid,empid,filters,sqltj,bdate,edate from uf_ryqz_dt1 where mainid in (" + String . join ( "," , personGroupIds ) + ")" ;
List < Map < String , Object > > personGroupData = DbTools . getSqlToList ( sql ) ;
Set < String > personnelGroupIds = PersongroupCommonUtil . getPersonnelGroupingByPerson ( personGroupData , empId , date , date ) ;
for ( Map < String , Object > personGroupOrganization : personGroupOrganizationList ) {
String personnelGroupId = Util . null2String ( personGroupOrganization . get ( "dx" ) ) . split ( "-" ) [ 0 ] ;
if ( personnelGroupIds . contains ( personnelGroupId ) ) {
dataIds . add ( Util . null2String ( personGroupOrganization . get ( "dataid" ) ) ) ;
}
}
}
//收集通用考勤项目
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where tyxm=1 and (xmzt is null or xmzt <> '0')" ;
List < Map < String , Object > > attendanceItems = DbTools . getSqlToList ( sql ) ;
//收集目标人员适用考勤方案中的考勤项目
if ( dataIds . size ( ) > 0 ) {
sql = "select b.id keyid,b.mc kqxm,c.mc famc,b.* from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on a.kqxm=b.id left join uf_jcl_kq_kqfa c on a.mainid=c.id " +
"where mainid in (" + String . join ( "," , dataIds ) + ") and (b.xmzt is null or b.xmzt <> '0') " +
"and c.zt = 0 and (c.sxrq0 is null or c.sxrq0 >= ?) and (c.sxrq1 is null or c.sxrq1 <= ?)" ;
attendanceItems . addAll ( DbTools . getSqlToList ( sql , date , date ) ) ;
}
return attendanceItems ;
}
}