diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index b9c0e32..f3568c3 100644 Binary files a/out/artifacts/hrm_attendance/hrm-attendance.jar and b/out/artifacts/hrm_attendance/hrm-attendance.jar differ diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java index c943274..6a1c09f 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java @@ -110,15 +110,19 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt }else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ //加班 + List> workTimeItems = Lists.newArrayList(); if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx)){ lateParams.put("workfor",WorkForTimeEnum.DELAY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(lateParams)); + workTimeItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx)){ lateParams.put("workfor",WorkForTimeEnum.EARLY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(lateParams)); + workTimeItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ lateParams.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); + workTimeItems = (List>)classInfo.get("attendanceItems"); } - Map result = commandExecutor.execute(new WorkOvertimeItemCmd(lateParams)); - List> workTimeItems = (List>)result.get("attendanceItems"); List> lateItems = getBeLateItems(lateParams); if (workTimeItems.size() > 0 && lateItems.size() >0){ double hsl = Double.valueOf(Util.null2String(lateItems.get(0).get("hsl"))); @@ -298,15 +302,19 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt }else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ //加班 + List> workTimeItems = Lists.newArrayList(); if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx)){ earlyParams.put("workfor",WorkForTimeEnum.DELAY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(earlyParams)); + workTimeItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx)){ earlyParams.put("workfor",WorkForTimeEnum.EARLY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(earlyParams)); + workTimeItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ earlyParams.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); + workTimeItems = (List>)classInfo.get("jblx"); } - Map result = commandExecutor.execute(new WorkOvertimeItemCmd(earlyParams)); - List> workTimeItems = (List>)result.get("attendanceItems"); List> beEarlyItems = getBeEarlyItems(earlyParams); if (workTimeItems.size() > 0 && beEarlyItems.size() >0){ String jbzzhlfzs = Util.null2String(workTimeItems.get(0).get("jbzzhlfzs")); diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java index 93633ab..eb07fec 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java @@ -43,7 +43,7 @@ public class UtilServiceImpl extends Service implements UtilService { schedulMap.put("schedulingMapBydate",schedulingMapBydate); Map>> resultMap = Maps.newHashMap(); - String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.btgz,a.fgsjd,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in ("; + String sql = "select a.id bcxx,a.edsc,a.zgzsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.btgz,a.fgsjd,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in ("; String bcxxIds = ""; for (Map.Entry>> entry :schedulingMap.entrySet()){ if (!entry.getKey().equals("")){ @@ -78,7 +78,7 @@ public class UtilServiceImpl extends Service implements UtilService { } /** 加班计划*/ - sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc from uf_jcl_kq_jbjh_dt1 where jbry=? and ksrq>=? and ksrq<=? and (jbcx=0 or jbcx is null)"; + sql = "select b.jbry,b.ksrq,b.kssj,a.jblx,b.jsrq,b.jssj,b.jbsc from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.ksrq>=? and b.ksrq<=? and (b.jbcx=0 or b.jbcx is null)"; Map>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq")))); //考勤项目 @@ -109,22 +109,8 @@ public class UtilServiceImpl extends Service implements UtilService { map.put("sfkt","0"); } //查找对应的考勤项目 - attendanceItems = attendanceItems.stream().filter(s->{ - //项目类型 - String xmlx = Util.null2String(s.get("xmlx")); - //作用时段 - String zysd = Util.null2String(s.get("zysd")); - //项目绑定的日期类型 - String bddrqlx = Util.null2String(s.get("bddrqlx")); - //日期类型 - String dateType = dateMap.get(e.getKey()); - - if (xmlx.equals(AttendanceItemTypeEnum.WORK_OVERTIME.getKey()) && (zysd.contains(WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()) || zysd.equals(WorkForTimeEnum.ALL_TIME.getKey())) && bddrqlx.contains(dateType)){ - return true; - }else { - return false; - } - }).collect(Collectors.toList()); + String querySql = "select id `key`,ksjbbxydk,jsjbbxydk,tqdkyxfzs,thdkyxfzs,jbwdhlfzs,jbzzhlfzs,tqdkjrjb,thdkjrjb,jbscbdccsqsc,zdkcjcxxsc,ccclfs,rzdjbxss,yzdjbxss,zzdjbxss,jbzdzjqye,jbqsfzs,ccqszhdhsfzs,hsl,hsdw from uf_jcl_kq_kqxm where id=?"; + attendanceItems = DbTools.getSqlToList(querySql,overtimePlan.get("jblx")); map.put("bcxx",schedulingdateMap.get(0) == null ? "0" :schedulingdateMap.get(0).get("bcxx")); @@ -149,6 +135,7 @@ public class UtilServiceImpl extends Service implements UtilService { map.put("thdkfzs","60"); map.put("rqlx",dateMap.get(e.getKey())); map.put("edxss",overtimePlan.get("jbsc")); + map.put("jblx",attendanceItems); if (attendanceItems.size() >0){ map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk")); map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk")); diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java index a443e4e..e794a5d 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java @@ -102,19 +102,25 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ getWorkOverTimeParam.put("attendanceItems",attendanceItems); getWorkOverTimeParam.put("rqlx",scheduleMap.get("rqlx")); + + List> workTimeBeLateItems = Lists.newArrayList(); + if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx)){ getWorkOverTimeParam.put("workfor", WorkForTimeEnum.DELAY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam)); + //加班项目 + workTimeBeLateItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx)){ getWorkOverTimeParam.put("workfor",WorkForTimeEnum.EARLY_TO_WORK_OVERTIME.getKey()); + Map result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam)); + workTimeBeLateItems = (List>)result.get("attendanceItems"); }else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ getWorkOverTimeParam.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); + workTimeBeLateItems = (List>)scheduleMap.get("jblx"); }else { continue; } - Map result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam)); - //加班项目 - List> workTimeBeLateItems = (List>)result.get("attendanceItems"); if (workTimeBeLateItems.size() == 0){ continue; } @@ -379,6 +385,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ insertParam.put("sjjssj",realityEndime.split(" ")[1]); insertParam.put("sjjbsc",itemduration); insertParam.put("jbjgly","4"); + insertParam.put("jblx",workTimeBeLateItems.get(0).get("id")); insertParam.put("lyid",userId+"-"+DateUtil.getCurrentDate()); insertParam.put("zt","1"); Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map)params.get("formmodeIdMap")); diff --git a/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index f49b3eb..57b2773 100644 --- a/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -98,27 +98,27 @@ public class AttendanceanalysisAction { String endDate = Util.null2String(paramMap.get("endDate")); String userIds = Util.null2String(paramMap.get("userIds")); - String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ?"; + String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime"; List> dataList = DbTools.getSqlToList(sql,startDate,endDate); Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); //请假记录 - sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null)"; + sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null) order by b.ksrq,b.kssj"; List> askforLeaveList = DbTools.getSqlToList(sql,startDate,endDate); Map>> askforLeavecollect = askforLeaveList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("qjry")))); //出差记录 - sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null)"; + sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null) order by b.ksrq,b.kssj"; List> evectionList = DbTools.getSqlToList(sql,startDate,endDate); Map>> evectioncollect = evectionList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ccr")))); //加班计划 - sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc from uf_jcl_kq_jbjh_dt1 where jbry in ("+userIds+") and ksrq>=? and ksrq<=? and (jbcx=0 or jbcx is null)"; + sql = "select b.jbry,b.ksrq,b.kssj,a.jblx,b.jsrq,b.jssj,b.jbsc from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.jbcx=0 or b.jbcx is null) order by b.ksrq,b.kssj"; List> overPlanDataList = DbTools.getSqlToList(sql,startDate,endDate); Map>> overPlancollect = overPlanDataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("jbry")))); //加班结果 - sql = "select szjg,jbry,sjksrq,sjjsrq,sjkssj,sjjssj,sjjbsc,zt from uf_jcl_kq_jbjg where jbry in ("+userIds+") and sjksrq>=? and sjjsrq<=?"; + sql = "select szjg,jbry,sjksrq,jbjgly,sjjsrq,sjkssj,sjjssj,sjjbsc,jblx,zt from uf_jcl_kq_jbjg where jbry in ("+userIds+") and sjksrq>=? and sjjsrq<=? order by sjksrq,sjkssj"; List> overPlanResultList = DbTools.getSqlToList(sql,startDate,endDate); Map>> overResultcollect = overPlanResultList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("jbry")))); diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class index be8a701..10678e5 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class index a4c50cf..03ddfd0 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class index 246590f..c2274c2 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class b/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class index 96b1065..946858f 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class and b/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class differ