From cc6ea39d4f77597022fd775158e8b0ef9099d686 Mon Sep 17 00:00:00 2001 From: zhangming <965499528@qq.com> Date: Wed, 7 Aug 2024 10:44:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=E6=97=A5=E6=8A=A5=E5=8F=8A?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E8=A1=A8=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kq/cmd/report/ExportDailyExcelCmd.java | 23 ++++++++++++++-- .../engine/kq/cmd/report/ExportExcelCmd.java | 27 ++++++++++++++++--- .../kq/cmd/report/GetKQDailyReportCmd.java | 23 ++++++++++++++-- .../engine/kq/cmd/report/GetKQReportCmd.java | 27 ++++++++++++++++--- 4 files changed, 88 insertions(+), 12 deletions(-) diff --git a/src/com/engine/kq/cmd/report/ExportDailyExcelCmd.java b/src/com/engine/kq/cmd/report/ExportDailyExcelCmd.java index 0aa27f9..c0476be 100644 --- a/src/com/engine/kq/cmd/report/ExportDailyExcelCmd.java +++ b/src/com/engine/kq/cmd/report/ExportDailyExcelCmd.java @@ -11,6 +11,7 @@ import com.engine.kq.util.ExcelUtil; import com.engine.kq.util.KQDurationCalculatorUtil; import weaver.common.DateUtil; import weaver.conn.RecordSet; +import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; @@ -194,12 +195,29 @@ public class ExportDailyExcelCmd extends AbstractCommonCommand 0 and b.belatemins <= 10 and b.leaveearlymins > 0 and b.leaveearlymins <= 10 then 2 when b.belatemins > 0 and b.belatemins <= 10 and (b.leaveearlymins <= 0 or b.leaveearlymins > 10) then 1 when b.leaveearlymins > 0 and b.leaveearlymins <= 10 and (b.belatemins <= 0 or b.belatemins > 10) then 1 else 0 end as cdztten,\n" + + "case when b.belatemins > 10 and b.belatemins <= 30 and b.leaveearlymins > 10 and b.leaveearlymins <= 30 then 2 when b.belatemins > 10 and b.belatemins <= 30 and (b.leaveearlymins <= 10 or b.leaveearlymins > 30) then 1 when b.leaveearlymins > 10 and b.leaveearlymins <= 30 and (b.belatemins <= 10 or b.belatemins > 30) then 1 else 0 end as cdzttentothirty,\n" + + "case when b.belatemins > 30 and b.belatemins <= 60 and b.leaveearlymins > 30 and b.leaveearlymins <= 60 then 2 when b.belatemins > 30 and b.belatemins <= 60 and (b.leaveearlymins <= 30 or b.leaveearlymins > 60) then 1 when b.leaveearlymins > 30 and b.leaveearlymins <= 60 and (b.belatemins <= 30 or b.belatemins > 60) then 1 else 0 end as cdztthirtytosixty,\n" + + "case when b.belatemins > 60 and b.leaveearlymins > 60 then 2 when b.belatemins > 60 and b.leaveearlymins <= 60 then 1 when b.leaveearlymins > 60 and b.belatemins <= 60 then 1 else 0 end as cdztsixty," + + " a.id,a.lastname,a.subcompanyid1 as subcompanyid,a.departmentid, a.workcode,b.jobtitle,a.dsporder," + " b.kqdate, b.workdays,b.workMins,b.serialid, b.attendancedays,b.attendanceMins,b.beLate," + " b.beLateMins,b.graveBeLate,b.graveBeLateMins,b.leaveEearly,b.leaveEarlyMins,b.graveLeaveEarly," + " b.graveLeaveEarlyMins,b.absenteeism,b.signdays,b.signmins, "+ " b.absenteeismMins ,(b.forgotCheck+"+forgotBeginWorkCheck_field+") forgotCheck "; - String sqlFrom = " from hrmresource a, kq_format_total b where a.id= b.resourceid and b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'"; + String sqlFrom = " from hrmresource a join kq_format_total b on a.id= b.resourceid " + + "left join (select a1.id,h1.departmentmark as zwyjbm\n" + + ",h2.departmentmark as zwejbm\n" + + ",h3.departmentmark as zwsjbm\n" + + ",h4.departmentmark as zwsijbm\n" + + " from cus_fielddata a1 \n" + + "left join hrmdepartment h1 on a1.field40 = h1.id\n" + + "left join hrmdepartment h2 on a1.field41 = h2.id\n" + + "left join hrmdepartment h3 on a1.field42 = h3.id\n" + + "left join hrmdepartment h4 on a1.field43 = h4.id\n" + + "where a1.scope = 'HrmCustomFieldByInfoType'\n" + + " and a1.scopeid = -1) a2 on a2.id = a.id " + + " where b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'"; String sqlWhere = rightSql; if(subCompanyId.length()>0){ sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") "; @@ -236,6 +254,7 @@ public class ExportDailyExcelCmd extends AbstractCommonCommand> { Map definedFieldInfo = new KQFormatBiz().getDefinedField(); String definedFieldSum = Util.null2String(definedFieldInfo.get("definedFieldSum")); - String backFields = " a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle," + + String backFields = " a2.zwyjbm, a2.zwejbm, a2.zwsjbm, a2.zwsijbm, count(k1.id) as cdztten, count(k2.id) as cdzttentothirty, " + + " count(k3.id) as cdztthirtytosixty, count(k4.id) as cdztsixty," + + " a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle," + " sum(b.workdays) as workdays,sum(b.workMins) as workMins,sum(b.attendancedays) as attendancedays," + " sum(b.attendanceMins) as attendanceMins,sum(b.beLate) as beLate,sum(b.beLateMins) as beLateMins, " + " sum(b.graveBeLate) as graveBeLate, sum(b.graveBeLateMins) as graveBeLateMins,sum(b.leaveEearly) as leaveEearly," + @@ -227,9 +230,25 @@ public class ExportExcelCmd extends AbstractCommonCommand> { if(rs.getDBType().equals("oracle")){ backFields = "/*+ index(kq_format_total IDX_KQ_FORMAT_TOTAL_KQDATE) */ "+backFields; } - String sqlFrom = " from hrmresource a, kq_format_total b where a.id= b.resourceid and b.kqdate >='" + fromDate + "' and b.kqdate <='" + toDate + "'"; + String sqlFrom = " from hrmresource a join kq_format_total b on a.id = b.resourceid " + + "left join (select a1.id,h1.departmentmark as zwyjbm\n" + + ",h2.departmentmark as zwejbm\n" + + ",h3.departmentmark as zwsjbm\n" + + ",h4.departmentmark as zwsijbm\n" + + " from cus_fielddata a1 \n" + + "left join hrmdepartment h1 on a1.field40 = h1.id\n" + + "left join hrmdepartment h2 on a1.field41 = h2.id\n" + + "left join hrmdepartment h3 on a1.field42 = h3.id\n" + + "left join hrmdepartment h4 on a1.field43 = h4.id\n" + + "where a1.scope = 'HrmCustomFieldByInfoType'\n" + + " and a1.scopeid = -1) a2 on a2.id = a.id " + + " left join kq_format_total k1 on a.id = k1.resourceid and k1.kqdate = b.kqdate and ((k1.belatemins is not null and k1.belatemins > 0 and k1.belatemins <= 10) or (k1.leaveearlymins is not null and k1.leaveearlymins > 0 and k1.leaveearlymins <= 10))" + + " left join kq_format_total k2 on a.id = k2.resourceid and k2.kqdate = b.kqdate and ((k2.belatemins is not null and k2.belatemins > 10 and k2.belatemins <= 30) or (k2.leaveearlymins is not null and k2.leaveearlymins > 10 and k2.leaveearlymins <= 30))" + + " left join kq_format_total k3 on a.id = k3.resourceid and k3.kqdate = b.kqdate and ((k3.belatemins is not null and k3.belatemins > 30 and k3.belatemins <= 60) or (k3.leaveearlymins is not null and k3.leaveearlymins > 30 and k3.leaveearlymins <= 60))" + + " left join kq_format_total k4 on a.id = k4.resourceid and k4.kqdate = b.kqdate and ((k4.belatemins is not null and k4.belatemins > 60) or (k4.leaveearlymins is not null and k4.leaveearlymins > 60))" + + "where b.kqdate >='" + fromDate + "' and b.kqdate <='" + toDate + "'"; String sqlWhere = rightSql; - String groupBy = " group by a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1,a.departmentid,a.jobtitle "; + String groupBy = " group by a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1,a.departmentid,a.jobtitle,a2.zwyjbm, a2.zwejbm, a2.zwsjbm, a2.zwsijbm "; if (subCompanyId.length() > 0) { sqlWhere += " and a.subcompanyid1 in(" + subCompanyId + ") "; } @@ -282,7 +301,7 @@ public class ExportExcelCmd extends AbstractCommonCommand> { String fullPathMainKey = "show_full_path"; String isShowFullPath = Util.null2String(kqSettingsComInfo.getMain_val(fullPathMainKey),"0"); - + new BaseBean().writeLog("ExportExcelCmd sql:" + sql); rs.execute(sql); int calIndex = -1; while (rs.next()) { diff --git a/src/com/engine/kq/cmd/report/GetKQDailyReportCmd.java b/src/com/engine/kq/cmd/report/GetKQDailyReportCmd.java index ad8ef1e..557045e 100644 --- a/src/com/engine/kq/cmd/report/GetKQDailyReportCmd.java +++ b/src/com/engine/kq/cmd/report/GetKQDailyReportCmd.java @@ -12,6 +12,7 @@ import com.engine.kq.log.KQLog; import com.engine.kq.util.KQDurationCalculatorUtil; import com.engine.kq.util.PageUidFactory; import weaver.conn.RecordSet; +import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; @@ -141,12 +142,29 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand 0 and b.belatemins <= 10 and b.leaveearlymins > 0 and b.leaveearlymins <= 10 then 2 when b.belatemins > 0 and b.belatemins <= 10 and (b.leaveearlymins <= 0 or b.leaveearlymins > 10) then 1 when b.leaveearlymins > 0 and b.leaveearlymins <= 10 and (b.belatemins <= 0 or b.belatemins > 10) then 1 else 0 end as cdztten,\n" + + "case when b.belatemins > 10 and b.belatemins <= 30 and b.leaveearlymins > 10 and b.leaveearlymins <= 30 then 2 when b.belatemins > 10 and b.belatemins <= 30 and (b.leaveearlymins <= 10 or b.leaveearlymins > 30) then 1 when b.leaveearlymins > 10 and b.leaveearlymins <= 30 and (b.belatemins <= 10 or b.belatemins > 30) then 1 else 0 end as cdzttentothirty,\n" + + "case when b.belatemins > 30 and b.belatemins <= 60 and b.leaveearlymins > 30 and b.leaveearlymins <= 60 then 2 when b.belatemins > 30 and b.belatemins <= 60 and (b.leaveearlymins <= 30 or b.leaveearlymins > 60) then 1 when b.leaveearlymins > 30 and b.leaveearlymins <= 60 and (b.belatemins <= 30 or b.belatemins > 60) then 1 else 0 end as cdztthirtytosixty,\n" + + "case when b.belatemins > 60 and b.leaveearlymins > 60 then 2 when b.belatemins > 60 and b.leaveearlymins <= 60 then 1 when b.leaveearlymins > 60 and b.belatemins <= 60 then 1 else 0 end as cdztsixty," + + " a.id,a.lastname,a.subcompanyid1 as subcompanyid,a.departmentid, a.workcode,b.jobtitle,a.dsporder," + " b.kqdate, b.workdays,b.workMins,b.serialid, b.attendancedays,b.attendanceMins," + " b.beLate,b.beLateMins,b.graveBeLate,b.graveBeLateMins,b.leaveEearly,b.leaveEarlyMins," + " b.signdays,b.signmins, "+ " b.graveLeaveEarly,b.graveLeaveEarlyMins,b.absenteeism ,b.absenteeismMins ,(b.forgotCheck+"+forgotBeginWorkCheck_field+") forgotCheck "; - String sqlFrom = " from hrmresource a, kq_format_total b where a.id= b.resourceid and b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'"; + String sqlFrom = " from hrmresource a join kq_format_total b on a.id= b.resourceid " + + "left join (select a1.id,h1.departmentmark as zwyjbm\n" + + ",h2.departmentmark as zwejbm\n" + + ",h3.departmentmark as zwsjbm\n" + + ",h4.departmentmark as zwsijbm\n" + + " from cus_fielddata a1 \n" + + "left join hrmdepartment h1 on a1.field40 = h1.id\n" + + "left join hrmdepartment h2 on a1.field41 = h2.id\n" + + "left join hrmdepartment h3 on a1.field42 = h3.id\n" + + "left join hrmdepartment h4 on a1.field43 = h4.id\n" + + "where a1.scope = 'HrmCustomFieldByInfoType'\n" + + " and a1.scopeid = -1) a2 on a2.id = a.id " + + " where b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'"; String sqlWhere = rightSql; if(subCompanyId.length()>0){ sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") "; @@ -238,6 +256,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand> { Map definedFieldInfo = new KQFormatBiz().getDefinedField(); String definedFieldSum = Util.null2String(definedFieldInfo.get("definedFieldSum")); - String backFields = " a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle," + + String backFields = " a2.zwyjbm, a2.zwejbm, a2.zwsjbm, a2.zwsijbm, count(k1.resourceid) as cdztten, count(k2.resourceid) as cdzttentothirty, " + + " count(k3.resourceid) as cdztthirtytosixty, count(k4.resourceid) as cdztsixty," + + " a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle," + " sum(b.workdays) as workdays,sum(b.workMins) as workMins,sum(b.attendancedays) as attendancedays," + " sum(b.attendanceMins) as attendanceMins,sum(b.beLate) as beLate,sum(b.beLateMins) as beLateMins, " + " sum(b.graveBeLate) as graveBeLate, sum(b.graveBeLateMins) as graveBeLateMins,sum(b.leaveEearly) as leaveEearly," + @@ -194,9 +197,25 @@ public class GetKQReportCmd extends AbstractCommonCommand> { if(rs.getDBType().equals("oracle")){ backFields = "/*+ index(kq_format_total IDX_KQ_FORMAT_TOTAL_KQDATE) */ "+backFields; } - String sqlFrom = " from hrmresource a, kq_format_total b where a.id= b.resourceid and b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'"; + String sqlFrom = " from hrmresource a join kq_format_total b on a.id = b.resourceid " + + "left join (select a1.id,h1.departmentmark as zwyjbm\n" + + ",h2.departmentmark as zwejbm\n" + + ",h3.departmentmark as zwsjbm\n" + + ",h4.departmentmark as zwsijbm\n" + + " from cus_fielddata a1 \n" + + "left join hrmdepartment h1 on a1.field40 = h1.id\n" + + "left join hrmdepartment h2 on a1.field41 = h2.id\n" + + "left join hrmdepartment h3 on a1.field42 = h3.id\n" + + "left join hrmdepartment h4 on a1.field43 = h4.id\n" + + "where a1.scope = 'HrmCustomFieldByInfoType'\n" + + " and a1.scopeid = -1) a2 on a2.id = a.id " + + " left join kq_format_total k1 on a.id = k1.resourceid and k1.kqdate = b.kqdate and ((k1.belatemins is not null and k1.belatemins > 0 and k1.belatemins <= 10) or (k1.leaveearlymins is not null and k1.leaveearlymins > 0 and k1.leaveearlymins <= 10))" + + " left join kq_format_total k2 on a.id = k2.resourceid and k2.kqdate = b.kqdate and ((k2.belatemins is not null and k2.belatemins > 10 and k2.belatemins <= 30) or (k2.leaveearlymins is not null and k2.leaveearlymins > 10 and k2.leaveearlymins <= 30))" + + " left join kq_format_total k3 on a.id = k3.resourceid and k3.kqdate = b.kqdate and ((k3.belatemins is not null and k3.belatemins > 30 and k3.belatemins <= 60) or (k3.leaveearlymins is not null and k3.leaveearlymins > 30 and k3.leaveearlymins <= 60))" + + " left join kq_format_total k4 on a.id = k4.resourceid and k4.kqdate = b.kqdate and ((k4.belatemins is not null and k4.belatemins > 60) or (k4.leaveearlymins is not null and k4.leaveearlymins > 60))" + + "where b.kqdate >='" + fromDate + "' and b.kqdate <='" + toDate + "'"; String sqlWhere = rightSql; - String groupBy = " group by a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1,a.departmentid,a.jobtitle "; + String groupBy = " group by a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1,a.departmentid,a.jobtitle,a2.zwyjbm, a2.zwejbm, a2.zwsjbm, a2.zwsijbm "; if(subCompanyId.length()>0){ sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") "; } @@ -329,7 +348,7 @@ public class GetKQReportCmd extends AbstractCommonCommand> { params.put("hoursToDay",hoursToDay); Map flowData = kqReportBiz.getFlowData(params,user); - + new BaseBean().writeLog("GetKQReportCmd sql:" + sql); rs.execute(sql); while (rs.next()) { data = new HashMap<>();