package com.engine.jucailinkq.attendance.attendanceplan.cmd ;
import com.engine.common.biz.AbstractCommonCommand ;
import com.engine.common.entity.BizLogContext ;
import com.engine.core.interceptor.CommandContext ;
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum ;
import com.engine.jucailinkq.common.util.DbTools ;
import com.google.common.collect.Maps ;
import weaver.general.Util ;
import java.util.List ;
import java.util.Map ;
import java.util.stream.Collectors ;
public class GetAttendanceItemsGroupByAttendancePlanDataCmd extends AbstractCommonCommand < Map < String , Object > > {
@Override
public BizLogContext getLogContext ( ) {
return null ;
}
@Override
public Map < String , Object > execute ( CommandContext commandContext ) {
Map < String , Object > resultMap = Maps . newHashMap ( ) ;
String sql = "select c.id planid,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" ;
List < Map < String , Object > > attendanceItems = DbTools . getSqlToList ( sql ) ;
List < String > fatherItems = attendanceItems . stream ( ) . filter ( e - > Util . null2String ( e . get ( "sffzcx" ) ) . equals ( CheckBoxEnum . CHECKED . getKey ( ) ) ) . map ( e - > e . get ( "keyid" ) . toString ( ) ) . collect ( Collectors . toList ( ) ) ;
if ( fatherItems . size ( ) > 0 ) {
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where (xmzt is null or xmzt <> '0') and a.sjxm in (" + String . join ( "," , fatherItems ) + ")" ;
List < Map < String , Object > > sonItemList = DbTools . getSqlToList ( sql ) ;
Map < String , List < Map < String , Object > > > sonGroupMap = sonItemList . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "sjxm" ) . toString ( ) ) ) ;
for ( Map < String , Object > attendanceItem : attendanceItems ) {
if ( CheckBoxEnum . CHECKED . getKey ( ) . equals ( attendanceItem . get ( "sffzcx" ) ) ) {
attendanceItem . put ( "sonItems" , sonGroupMap . get ( attendanceItem . get ( "keyid" ) ) ) ;
}
}
}
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 > > generalAttendanceItems = DbTools . getSqlToList ( sql ) ;
fatherItems = generalAttendanceItems . stream ( ) . filter ( e - > Util . null2String ( e . get ( "sffzcx" ) ) . equals ( CheckBoxEnum . CHECKED . getKey ( ) ) ) . map ( e - > e . get ( "keyid" ) . toString ( ) ) . collect ( Collectors . toList ( ) ) ;
if ( fatherItems . size ( ) > 0 ) {
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where (xmzt is null or xmzt <> '0') and a.sjxm in (" + String . join ( "," , fatherItems ) + ")" ;
List < Map < String , Object > > sonItemList = DbTools . getSqlToList ( sql ) ;
Map < String , List < Map < String , Object > > > sonGroupMap = sonItemList . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "sjxm" ) . toString ( ) ) ) ;
for ( Map < String , Object > attendanceItem : generalAttendanceItems ) {
if ( CheckBoxEnum . CHECKED . getKey ( ) . equals ( attendanceItem . get ( "sffzcx" ) ) ) {
attendanceItem . put ( "sonItems" , sonGroupMap . get ( attendanceItem . get ( "keyid" ) ) ) ;
}
}
}
Map < String , List < Map < String , Object > > > attendanceItemGroupByPlan = attendanceItems . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "planid" ) . toString ( ) ) ) ;
resultMap . put ( "generalAttendanceItems" , generalAttendanceItems ) ;
resultMap . put ( "attendanceItemGroupByPlan" , attendanceItemGroupByPlan ) ;
return resultMap ;
}
}