@ -1,13 +1,14 @@
package com.engine.attendance. workflow .service.impl;
package com.engine.attendance. attendanceanalysis .service.impl;
import com.alibaba.fastjson.JSON ;
import com.alibaba.fastjson.JSON ;
import com.alibaba.fastjson.JSONObject ;
import com.alibaba.fastjson.JSONObject ;
import com.engine.attendance.workflow.cmd.GetCqSummarySearchConditionCmd ;
import com.engine.attendance.workflow.cmd.GetCqSummarySearchConditionCmd ;
import com.engine.attendance. workflow .service.AttendanceSummaryService;
import com.engine.attendance. attendanceanalysis .service.AttendanceSummaryService;
import com.engine.common.util.DbTools ;
import com.engine.common.util.DbTools ;
import com.engine.core.impl.Service ;
import com.engine.core.impl.Service ;
import com.engine.kq.biz.KQHolidaySetBiz ;
import com.engine.kq.biz.KQHolidaySetBiz ;
import com.engine.kq.biz.KQReportBiz ;
import com.engine.kq.biz.KQReportBiz ;
import com.engine.kq.util.ExcelUtil ;
import com.engine.kq.util.PageUidFactory ;
import com.engine.kq.util.PageUidFactory ;
import weaver.conn.RecordSet ;
import weaver.conn.RecordSet ;
import weaver.general.BaseBean ;
import weaver.general.BaseBean ;
@ -19,6 +20,8 @@ import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo ;
import weaver.hrm.resource.ResourceComInfo ;
import weaver.systeminfo.SystemEnv ;
import weaver.systeminfo.SystemEnv ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import java.time.LocalDate ;
import java.time.LocalDate ;
import java.util.* ;
import java.util.* ;
@ -293,33 +296,41 @@ public class AttendanceSummaryServiceImpl extends Service implements AttendanceS
}
}
} ) ;
} ) ;
//分页处理
String exportSign = Util . null2String ( params . get ( "exportSign" ) ) ;
int start = ( pageIndex - 1 ) * pageSize ;
if ( exportSign . equals ( "1" ) ) {
int end = Math . min ( pageIndex * pageSize , dataList . size ( ) ) ;
//导出时,不做分页处理
List < Map < String , String > > resultList = new ArrayList < > ( ) ;
retmap . put ( "columns" , columns ) ;
if ( start < = dataList . size ( ) ) {
retmap . put ( "datas" , dataList ) ;
resultList = dataList . subList ( start , end ) ;
}
count = dataList . size ( ) ;
if ( count < = 0 ) {
pageCount = 0 ;
} else {
} else {
pageCount = count / pageSize + ( ( count % pageSize > 0 ) ? 1 : 0 ) ;
//分页处理
int start = ( pageIndex - 1 ) * pageSize ;
int end = Math . min ( pageIndex * pageSize , dataList . size ( ) ) ;
List < Map < String , String > > resultList = new ArrayList < > ( ) ;
if ( start < = dataList . size ( ) ) {
resultList = dataList . subList ( start , end ) ;
}
count = dataList . size ( ) ;
if ( count < = 0 ) {
pageCount = 0 ;
} else {
pageCount = count / pageSize + ( ( count % pageSize > 0 ) ? 1 : 0 ) ;
}
isHaveNext = ( pageIndex < = pageCount ) ? 1 : 0 ;
isHavePre = ( pageIndex > = 1 ) ? 1 : 0 ;
List < Object > lsHolidays = KQHolidaySetBiz . getHolidaySetListByScope ( "" + user . getUID ( ) , fromDate , toDate ) ;
retmap . put ( "holidays" , lsHolidays ) ;
retmap . put ( "columns" , columns ) ;
retmap . put ( "datas" , resultList ) ;
retmap . put ( "pagesize" , pageSize ) ;
retmap . put ( "pageindex" , pageIndex ) ;
retmap . put ( "count" , count ) ;
retmap . put ( "pagecount" , pageCount ) ;
retmap . put ( "ishavepre" , isHavePre ) ;
retmap . put ( "ishavenext" , isHaveNext ) ;
}
}
isHaveNext = ( pageIndex < = pageCount ) ? 1 : 0 ;
isHavePre = ( pageIndex > = 1 ) ? 1 : 0 ;
List < Object > lsHolidays = KQHolidaySetBiz . getHolidaySetListByScope ( "" + user . getUID ( ) , fromDate , toDate ) ;
retmap . put ( "holidays" , lsHolidays ) ;
retmap . put ( "columns" , columns ) ;
retmap . put ( "datas" , resultList ) ;
retmap . put ( "pagesize" , pageSize ) ;
retmap . put ( "pageindex" , pageIndex ) ;
retmap . put ( "count" , count ) ;
retmap . put ( "pagecount" , pageCount ) ;
retmap . put ( "ishavepre" , isHavePre ) ;
retmap . put ( "ishavenext" , isHaveNext ) ;
} catch ( Exception e ) {
} catch ( Exception e ) {
bs . writeLog ( e ) ;
bs . writeLog ( e ) ;
}
}
@ -331,6 +342,215 @@ public class AttendanceSummaryServiceImpl extends Service implements AttendanceS
return this . commandExecutor . execute ( new GetCqSummarySearchConditionCmd ( params , user ) ) ;
return this . commandExecutor . execute ( new GetCqSummarySearchConditionCmd ( params , user ) ) ;
}
}
@Override
public Map < String , Object > exportCqSummaryReport ( Map < String , Object > params , HttpServletRequest request , HttpServletResponse response ) {
Map < String , Object > retmap = null ;
try {
retmap = new HashMap < String , Object > ( ) ;
params . put ( "exportSign" , "1" ) ;
Map < String , Object > cqSummaryReportResult = getCqSummaryReport ( params ) ;
List < Map < String , String > > resultList = ( List < Map < String , String > > ) cqSummaryReportResult . get ( "datas" ) ;
List < Map < String , Object > > columns = ( List < Map < String , Object > > ) cqSummaryReportResult . get ( "columns" ) ;
JSONObject jsonObj = JSON . parseObject ( Util . null2String ( params . get ( "data" ) ) ) ;
String showColumns = Util . null2String ( jsonObj . get ( "showColumns" ) ) ;
List < String > showColumnKeyList = new ArrayList < > ( ) ;
showColumnKeyList . add ( "lastname" ) ;
if ( ! showColumns . equals ( "" ) ) {
showColumnKeyList . addAll ( Arrays . asList ( showColumns . split ( "," ) ) ) ;
}
//组装导出数据
List < List < Object > > dataList = new ArrayList < > ( ) ;
List < Object > data = null ;
for ( Map < String , String > dataItem : resultList ) {
data = new ArrayList < > ( ) ;
for ( String columnKey : showColumnKeyList ) {
data . add ( Util . null2String ( dataItem . get ( columnKey ) ) ) ;
}
dataList . add ( data ) ;
}
//获取列头key和value映射
Map < String , String > columnValueMap = new HashMap < > ( ) ;
for ( Map < String , Object > columnItem : columns ) {
String title = Util . null2String ( columnItem . get ( "title" ) ) ;
String unit = Util . null2String ( columnItem . get ( "unit" ) ) ;
if ( ! "" . equals ( title ) & & ! "" . equals ( unit ) ) {
title = title + "(" + unit + ")" ;
}
columnValueMap . put ( columnItem . get ( "key" ) . toString ( ) , title ) ;
}
//组装导出列头
List < Object > titleList = new ArrayList < > ( ) ;
Map < String , Object > title = null ;
for ( String columnKey : showColumnKeyList ) {
title = new HashMap < > ( ) ;
title . put ( "title" , columnValueMap . get ( columnKey ) ) ;
title . put ( "width" , 30 * 256 ) ;
titleList . add ( title ) ;
}
//组装页标签
Map < String , Object > sheet = new HashMap < > ( ) ;
sheet . put ( "sheetName" , SystemEnv . getHtmlLabelName ( 390351 , user . getLanguage ( ) ) ) ;
sheet . put ( "sheetTitle" , SystemEnv . getHtmlLabelName ( 390351 , user . getLanguage ( ) ) ) ;
sheet . put ( "dataList" , dataList ) ;
sheet . put ( "titleList" , titleList ) ;
List < Object > lsSheet = new ArrayList < > ( ) ;
lsSheet . add ( sheet ) ;
LinkedHashMap < String , Object > workbook = new LinkedHashMap < > ( ) ;
workbook . put ( "sheet" , lsSheet ) ;
workbook . put ( "fileName" , SystemEnv . getHtmlLabelName ( 390351 , user . getLanguage ( ) ) ) ;
ExcelUtil ExcelUtil = new ExcelUtil ( ) ;
Map < String , Object > exportMap = ExcelUtil . export ( workbook , request , response ) ;
retmap . putAll ( exportMap ) ;
retmap . put ( "status" , "1" ) ;
} catch ( Exception e ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 382661 , user . getLanguage ( ) ) ) ;
bs . writeLog ( e . getMessage ( ) ) ;
}
return retmap ;
}
@Override
public Map < String , Object > refreshViewAttendanceDaily ( ) {
Map < String , Object > retmap = new HashMap < > ( ) ;
String sql = "" ;
String viewName = "v_attdaily" ;
//判断视图v_attdaily是否存在
RecordSet rs = new RecordSet ( ) ;
String dbType = rs . getDBType ( ) ;
if ( "mysql" . equals ( dbType ) | | "postgresql" . equals ( dbType ) | | "sqlserver" . equals ( dbType ) | | "dm" . equals ( dbType ) | | "st" . equals ( dbType ) ) {
sql = "SELECT * FROM information_schema.views WHERE table_name = '" + viewName + "'" ;
} else if ( "oracle" . equals ( dbType ) ) {
sql = "SELECT * FROM ALL_VIEWS WHERE VIEW_NAME = '" + viewName + "'" ;
} else if ( "jc" . equals ( dbType ) ) {
sql = "SELECT * FROM sys.views WHERE viewname = '" + viewName + "'" ;
} else {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , "不支持的数据库类型,无法查询试图是否存在!" ) ;
return retmap ;
}
Map < String , Object > viewInfo = DbTools . getSqlToMap ( sql ) ;
//存在则删除
if ( viewInfo . size ( ) > 0 ) {
sql = "DROP VIEW " + viewName ;
boolean dropSign = DbTools . update ( sql ) ;
bs . writeLog ( "删除视图结果:" + dropSign ) ;
}
//收集考勤项目
String kqxmSql = "select * from uf_jcl_kq_kqxm" ;
List < Map < String , Object > > kqxmList = DbTools . getSqlToList ( kqxmSql ) ;
//收集视图列头
StringBuilder viewColumn = new StringBuilder ( "id,ygid,rq,fbid,bm,zw" ) ;
//拼接视图内容sql
StringBuilder viewResourceSql = new StringBuilder ( "SELECT ta.id AS id,ta.ygid AS ygid,ta.rq AS rq,ta.fbid AS fbid,ta.bm AS bm,ta.zw AS zw" ) ;
//考勤项目核算单位、id、名称
String hsdw = "" ;
String kqxmId = "" ;
String mc = "" ;
for ( Map < String , Object > kqxmInfo : kqxmList ) {
hsdw = Util . null2String ( kqxmInfo . get ( "hsdw" ) ) ;
kqxmId = Util . null2String ( kqxmInfo . get ( "id" ) ) ;
mc = Util . null2String ( kqxmInfo . get ( "mc" ) ) ;
int mcLength = mc . getBytes ( ) . length ;
if ( "oracle" . equals ( dbType ) & & mcLength > 28 ) {
mc = mc . substring ( 0 , 9 ) ;
}
if ( "0" . equals ( hsdw ) ) {
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_t\"" ) ;
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_c\"" ) ;
viewColumn . append ( "," ) . append ( mc ) . append ( "_t" ) . append ( "," ) . append ( mc ) . append ( "_c" ) ;
} else if ( "1" . equals ( hsdw ) ) {
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_s\"" ) ;
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_c\"" ) ;
viewColumn . append ( "," ) . append ( mc ) . append ( "_s" ) . append ( "," ) . append ( mc ) . append ( "_c" ) ;
} else if ( "2" . equals ( hsdw ) ) {
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_f\"" ) ;
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_c\"" ) ;
viewColumn . append ( "," ) . append ( mc ) . append ( "_f" ) . append ( "," ) . append ( mc ) . append ( "_c" ) ;
} else {
viewResourceSql . append ( ", SUM(CASE WHEN ta.xm = " ) . append ( kqxmId ) . append ( " THEN ta.sc ELSE 0 END) AS \"" ) . append ( mc ) . append ( "_c\"" ) ;
viewColumn . append ( "," ) . append ( mc ) . append ( "_c" ) ;
}
}
//ifnull函数的适配
String ifNullFunction = "" ;
if ( "mysql" . equals ( dbType ) | | "dm" . equals ( dbType ) | | "jc" . equals ( dbType ) | | "st" . equals ( dbType ) ) {
ifNullFunction = "IFNULL" ;
} else if ( "oracle" . equals ( dbType ) ) {
ifNullFunction = "NVL" ;
} else if ( "sqlserver" . equals ( dbType ) ) {
ifNullFunction = "ISNULL" ;
} else if ( "postgresql" . equals ( dbType ) ) {
ifNullFunction = "COALESCE" ;
}
//创建新的视图
String createViewSql = "CREATE VIEW " + viewName ;
createViewSql = createViewSql + " AS " + viewResourceSql . toString ( ) ;
createViewSql = createViewSql + " FROM (" +
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm1 AS xm," + ifNullFunction + "(uf_jcl_kq_cqjg.sc1,0) AS sc " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm1 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm2 AS xm2," + ifNullFunction + "(uf_jcl_kq_cqjg.sc2,0) AS sc2 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm2 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm3 AS xm3," + ifNullFunction + "(uf_jcl_kq_cqjg.sc3,0) AS sc3 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm3 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm4 AS xm4," + ifNullFunction + "(uf_jcl_kq_cqjg.sc4,0) AS sc4 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm4 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm5 AS xm5," + ifNullFunction + "(uf_jcl_kq_cqjg.sc5,0) AS sc5 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm5 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm6 AS xm6," + ifNullFunction + "(uf_jcl_kq_cqjg.sc6,0) AS sc6 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm6 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm7 AS xm7," + ifNullFunction + "(uf_jcl_kq_cqjg.sc7,0) AS sc7 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm7 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw," +
"uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq,uf_jcl_kq_cqjg.xm8 AS xm8," + ifNullFunction + "(uf_jcl_kq_cqjg.sc8,0) AS sc8 " +
"FROM uf_jcl_kq_cqjg WHERE (uf_jcl_kq_cqjg.xm8 IS NOT NULL) UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw,uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq," +
"(CASE WHEN (uf_jcl_kq_cqjg.cqzt = 0) THEN '1' ELSE '5' END) AS cqzt," +
"(CASE WHEN (uf_jcl_kq_cqjg.cqzt = 0) THEN uf_jcl_kq_cqjg.cqsc ELSE 0 END) AS cqsc " +
"FROM uf_jcl_kq_cqjg UNION ALL "
+
"SELECT uf_jcl_kq_cqjg.id AS id,uf_jcl_kq_cqjg.fbid AS fbid,uf_jcl_kq_cqjg.bm AS bm,uf_jcl_kq_cqjg.zw AS zw,uf_jcl_kq_cqjg.ygid AS ygid,uf_jcl_kq_cqjg.rq AS rq, " +
"(CASE WHEN ((uf_jcl_kq_cqjg.rqlx = 0) OR (uf_jcl_kq_cqjg.rqlx = 4)) THEN '2' " +
"WHEN ((uf_jcl_kq_cqjg.rqlx = 2) OR (uf_jcl_kq_cqjg.rqlx = 3)) THEN '3' " +
"WHEN (uf_jcl_kq_cqjg.rqlx = 1) THEN '4' ELSE '0' END) " +
"AS rqlx, " +
"uf_jcl_kq_cqjg.cqsc AS cqsc " +
"FROM uf_jcl_kq_cqjg " +
") ta GROUP BY ta.id,ta.ygid,ta.rq,ta.fbid,ta.bm,ta.zw" ;
boolean createSign = DbTools . update ( createViewSql ) ;
bs . writeLog ( "创建视图结果:" + createSign ) ;
if ( createSign ) {
retmap . put ( "status" , "1" ) ;
retmap . put ( "message" , "考勤日报相关视图刷新成功!" ) ;
} else {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , "考勤日报相关视图刷新失败!" ) ;
bs . writeLog ( "创建视图sql: [===" + createViewSql + "===]" ) ;
}
return retmap ;
}
private String getKqxmUnit ( String hsdw ) {
private String getKqxmUnit ( String hsdw ) {
if ( hsdw . equals ( "0" ) ) {
if ( hsdw . equals ( "0" ) ) {
return SystemEnv . getHtmlLabelName ( 518514 , user . getLanguage ( ) ) ; //天
return SystemEnv . getHtmlLabelName ( 518514 , user . getLanguage ( ) ) ; //天