diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9ccbaf8..11213fb 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,37 +10,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + - @@ -608,7 +590,7 @@ - + diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index 7a638e2..9bab72c 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/workflow/action/EliminationsAskForLeaveAction.java b/src/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.java index eaf283c..4924c54 100644 --- a/src/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.java +++ b/src/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.java @@ -39,9 +39,23 @@ public class EliminationsAskForLeaveAction implements Action { params.put("userId",xjr); params.put("submitDate", DateUtil.getCurrentDate()); - Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); + detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); + List detailIds = detailTableData.stream().map(e->e.get("cxlyid")).collect(Collectors.toList()); + String sql = "select id,ksrq from uf_jcl_kq_qjjl_dt1 where (cxqj is null or cxqj <> '1') and id in ("+String.join(",",detailIds)+")"; + List> detailList = DbTools.getSqlToList(sql); - List> dateList = (List>)dataMap.get("data"); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailList); + + if (detailList == null || detailList.size() == 0){ + log.error("未撤销任何假期!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("未撤销任何假期!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); boolean status = (boolean)dataMap.get("status"); if (!status){ @@ -50,37 +64,20 @@ public class EliminationsAskForLeaveAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; + } requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); + requestInfo.getRequestManager().setMessagecontent(message); return Action.FAILURE_AND_CONTINUE; } - detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); - List detailIds = detailTableData.stream().map(e->e.get("cxlyid")).collect(Collectors.toList()); - String sql = "select id,ksrq from uf_jcl_kq_qjjl_dt1 where (cxqj is null or cxqj <> '1') and id in ("+String.join(",",detailIds)+")"; - List> detailList = DbTools.getSqlToList(sql); - for (Map detailTable:detailList){ - String bdkrq = Util.null2String(detailTable.get("ksrq")); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; - } - } - if (mark){ - //已关账 - log.error("销假日期:{},已关账无法销假",bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("销假日期:"+bdkrq+"不在当前月份对应考勤周期内无法再销假!"); - return Action.FAILURE_AND_CONTINUE; - } - } return Action.SUCCESS; } diff --git a/src/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.java b/src/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.java index 1878b34..4ed39ed 100644 --- a/src/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.java +++ b/src/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.java @@ -37,13 +37,31 @@ public class EliminationsEvctionCheckAction implements Action { //销差人 String xjr = mainTableData.get("xjr"); + /** + * 考勤周期检查 + */ Map params = Maps.newHashMap(); params.put("userId",xjr); params.put("submitDate", DateUtil.getCurrentDate()); - Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - List> dateList = (List>)dataMap.get("data"); + detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); + List detailIds = detailTableData.stream().map(e->e.get("cxlyid")).collect(Collectors.toList()); + String sql = "select id,ksrq from uf_jcl_kq_ccjl_dt1 where (cxcc is null or cxcc <> '1') and id in ("+String.join(",",detailIds)+")"; + List> detailList = DbTools.getSqlToList(sql); + + params.put("submitStr","ksrq"); + params.put("submitDataList",detailList); + + if (detailList == null || detailList.size() == 0){ + log.error("未撤销任何出差!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("未撤销任何出差!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); boolean status = (boolean)dataMap.get("status"); if (!status){ @@ -52,37 +70,20 @@ public class EliminationsEvctionCheckAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; + } requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); + requestInfo.getRequestManager().setMessagecontent(message); return Action.FAILURE_AND_CONTINUE; } - detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); - List detailIds = detailTableData.stream().map(e->e.get("cxlyid")).collect(Collectors.toList()); - String sql = "select id,ksrq from uf_jcl_kq_ccjl_dt1 where (cxcc is null or cxcc <> '1') and id in ("+String.join(",",detailIds)+")"; - List> detailList = DbTools.getSqlToList(sql); - for (Map detailTable:detailList){ - String bdkrq = Util.null2String(detailTable.get("ksrq")); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; - } - } - if (mark){ - //已关账 - log.error("销差日期:{},已关账无法销差",bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("销差日期:"+bdkrq+"不在当前月份对应考勤周期内无法再销差!"); - return Action.FAILURE_AND_CONTINUE; - } - } return Action.SUCCESS; } diff --git a/src/com/engine/attendance/workflow/action/EvctionCheckAction.java b/src/com/engine/attendance/workflow/action/EvctionCheckAction.java index b29932a..3ff6955 100644 --- a/src/com/engine/attendance/workflow/action/EvctionCheckAction.java +++ b/src/com/engine/attendance/workflow/action/EvctionCheckAction.java @@ -14,6 +14,7 @@ import weaver.soa.workflow.request.RequestInfo; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 出差流程提交检查 @@ -34,11 +35,23 @@ public class EvctionCheckAction implements Action { Map params = Maps.newHashMap(); params.put("userId",ccr); - params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailTableData); + /** + * 考勤周期校验 + */ + if (detailTableData == null || detailTableData.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - - List> dateList = (List>)dataMap.get("data"); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); boolean status = (boolean)dataMap.get("status"); if (!status){ @@ -47,34 +60,19 @@ public class EvctionCheckAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); - return Action.FAILURE_AND_CONTINUE; - } - - for (Map detailTable:detailTableData){ - String bdkrq = detailTable.get("ksrq"); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; - } + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; } - if (mark){ - //已关账 - log.error("出差日期:{},已关账无法提交出差",bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("出差日期:"+bdkrq+"不在当前月份对应考勤周期内无法再提交出差!"); - return Action.FAILURE_AND_CONTINUE; + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; } - return Action.SUCCESS; } } diff --git a/src/com/engine/attendance/workflow/action/MakeUpClockInAction.java b/src/com/engine/attendance/workflow/action/MakeUpClockInAction.java index 06444c6..041286d 100644 --- a/src/com/engine/attendance/workflow/action/MakeUpClockInAction.java +++ b/src/com/engine/attendance/workflow/action/MakeUpClockInAction.java @@ -42,12 +42,23 @@ public class MakeUpClockInAction implements Action { Map params = Maps.newHashMap(); params.put("userId",userId); params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","bdkrq"); + params.put("submitDataList",detailTableData); /** - * 补打卡日期是否关账 + * 考勤周期校验 */ + if (detailTableData == null || detailTableData.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - List> dateList = (List>)dataMap.get("data"); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + boolean status = (boolean)dataMap.get("status"); if (!status){ log.error("该人员没有考勤周期"); @@ -55,34 +66,23 @@ public class MakeUpClockInAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; + } requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); + requestInfo.getRequestManager().setMessagecontent(message); return Action.FAILURE_AND_CONTINUE; } + /** + * 补打卡项目校验 + */ try { - for (Map detailTable:detailTableData){ - String bdkrq = detailTable.get("bdkrq"); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; - } - } - if (mark){ - //已关账 - log.error("补打卡日期:{},已关账无法补打卡",bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("补打卡日期:"+bdkrq+"不在当前月份对应考勤周期内无法再补打卡!"); - return Action.FAILURE_AND_CONTINUE; - } - } - Map>> dataGroupByBdlxs = Maps.newHashMap(); //按照考勤周期对补打卡数据进行分类 diff --git a/src/com/engine/attendance/workflow/action/OvertimePlanCheckAction.java b/src/com/engine/attendance/workflow/action/OvertimePlanCheckAction.java index a607ec2..c093105 100644 --- a/src/com/engine/attendance/workflow/action/OvertimePlanCheckAction.java +++ b/src/com/engine/attendance/workflow/action/OvertimePlanCheckAction.java @@ -14,6 +14,7 @@ import weaver.soa.workflow.request.RequestInfo; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 加班计划流程提交检查 @@ -35,11 +36,23 @@ public class OvertimePlanCheckAction implements Action { Map params = Maps.newHashMap(); params.put("userId",jbry); - params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailTableData); + /** + * 考勤周期校验 + */ + if (detailTableData == null || detailTableData.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - - List> dateList = (List>)dataMap.get("data"); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); boolean status = (boolean)dataMap.get("status"); if (!status){ @@ -48,32 +61,18 @@ public class OvertimePlanCheckAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); - return Action.FAILURE_AND_CONTINUE; - } - - for (Map detailTable:detailTableData){ - String bdkrq = detailTable.get("ksrq"); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; - } + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; } - if (mark){ - //已关账 - log.error("加班计划日期:{},已关账无法提交",bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("加班计划日期:"+bdkrq+"不在当前月份对应考勤周期内无法再提交!"); - return Action.FAILURE_AND_CONTINUE; + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; } return Action.SUCCESS; diff --git a/src/com/engine/attendance/workflow/action/OvertimeResultCheckAction.java b/src/com/engine/attendance/workflow/action/OvertimeResultCheckAction.java index e5bc277..d564c35 100644 --- a/src/com/engine/attendance/workflow/action/OvertimeResultCheckAction.java +++ b/src/com/engine/attendance/workflow/action/OvertimeResultCheckAction.java @@ -5,6 +5,7 @@ import com.engine.attendance.workflow.service.impl.MakeUpClockInServiceImpl; import com.engine.common.util.CommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.ServiceUtil; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; @@ -14,6 +15,7 @@ import weaver.soa.workflow.request.RequestInfo; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 加班结果流程提交检查 @@ -30,13 +32,21 @@ public class OvertimeResultCheckAction implements Action { //加班人员 String jbry = mainTableData.get("jbry"); + /** + * 考勤周期校验 + */ + List> submitDataList = Lists.newArrayList(); + submitDataList.add(new HashMap(){{ + put("ksrq",mainTableData.get("ksrq")); + }}); Map params = Maps.newHashMap(); params.put("userId",jbry); - params.put("submitDate", DateUtil.getCurrentDate()); - + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",submitDataList); Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - - List> dateList = (List>)dataMap.get("data"); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); boolean status = (boolean)dataMap.get("status"); if (!status){ @@ -45,30 +55,17 @@ public class OvertimeResultCheckAction implements Action { requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size()==0){ - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); - return Action.FAILURE_AND_CONTINUE; - } - - - String bdkrq = mainTableData.get("ksrq"); - boolean mark = true; - for (Map date:dateList){ - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <=0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >=0){ - mark = false; + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; } - } - if (mark){ - //已关账 - log.error("加班结果日期:{},已关账无法补打卡",bdkrq); requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("加班结果日期:"+bdkrq+"不在当前月份对应考勤周期内无法再提交!"); + requestInfo.getRequestManager().setMessagecontent(message); return Action.FAILURE_AND_CONTINUE; } diff --git a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java index 393d7d5..9f0ca69 100644 --- a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java +++ b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java @@ -48,51 +48,45 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { List> detailTable2 = Lists.newArrayList(); + /** - * 考勤周期校验 + * 补打卡日期是否关账 */ - Map params = Maps.newHashMap(); - params.put("userId", qjry); - params.put("submitDate", DateUtil.getCurrentDate()); - - Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); - - List> dateList = (List>) dataMap.get("data"); - - boolean status = (boolean) dataMap.get("status"); - if (!status) { - log.error("该人员没有考勤周期"); + params.put("userId",qjry); + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailTableData); + if (detailTableData == null || detailTableData.size() == 0){ + log.error("明细表没有数据!"); requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); return Action.FAILURE_AND_CONTINUE; } - if (dateList.size() == 0) { - log.error("申请人员当前时间没有考勤周期,请联系管理员!"); + Map dataMap = makeUpClockInService.getKqCycleTimeIntervalCmd(params); + List> closeList = (List>)dataMap.get("closeList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("申请人员当前时间没有考勤周期,请联系管理员!"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); return Action.FAILURE_AND_CONTINUE; } - - for (Map detailTable : detailTableData) { - String bdkrq = detailTable.get("ksrq"); - boolean mark = true; - for (Map date : dateList) { - //存在考勤周期内 - String startDate = Util.null2String(date.get("startDate")); - String endDate = Util.null2String(date.get("endDate")); - if (DateUtil.getTime(startDate).compareTo(DateUtil.getTime(bdkrq)) <= 0 && - DateUtil.getTime(endDate).compareTo(DateUtil.getTime(bdkrq)) >= 0) { - mark = false; - } + if (closeList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; } - if (mark) { - //已关账 - log.error("请假日期:{},已关账无法提交", bdkrq); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent("请假日期:" + bdkrq + "不在当前月份对应考勤周期内无法再提交请假!"); - return Action.FAILURE_AND_CONTINUE; + if (closeList.size() > 0){ + List list = closeList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已关账"; } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; } /** * 假期校验及入库 diff --git a/src/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java b/src/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java index 0b0b3a9..106c05a 100644 --- a/src/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java +++ b/src/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java @@ -9,13 +9,13 @@ import com.engine.common.util.Utils; import com.engine.core.interceptor.CommandContext; 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.general.Util; import weaver.hrm.company.DepartmentComInfo; import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.time.ZoneOffset; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -33,8 +33,19 @@ public class GetKqCycleTimeIntervalCmd extends AbstractCommonCommand execute(CommandContext commandContext) { String userId = Util.null2String(params.get("userId")); - String submitDates = Util.null2String(params.get("submitDate")); - log.info("GetKqCycleTimeIntervalCmd userId:[{}],submitDates:[{}]",userId,submitDates); + List> submitDataList = (List>)params.get("submitDataList"); + String submitStr = Util.null2String(params.get("submitStr")); + //提交日期 + String submitDate = Util.null2String(params.get("submitDate")); + + Map resultMap = Maps.newHashMap(); + resultMap.put("status",true); + Set yearSet = Sets.newHashSet(); + for (Map map : submitDataList){ + yearSet.add(map.get(submitStr).toString().split("-")[0]); + } + + log.info("GetKqCycleTimeIntervalCmd userId:[{}],submitDateList:[{}],submitStr:[{}]",userId,submitDataList,submitStr); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqzqmc"); Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); @@ -45,60 +56,75 @@ public class GetKqCycleTimeIntervalCmd extends AbstractCommonCommand departMentMap = DbTools.getSqlToMap(sql,userId); String deptid = Util.null2String(departMentMap.get("departmentid")); String pdeptids = ""; - List> dateList = Lists.newArrayList(); - Map resultMap = Maps.newHashMap(); - resultMap.put("status",true); - resultMap.put("data",dateList); + List> closeList = Lists.newArrayList(); + List nocycleList = Lists.newArrayList(); + List> dataList = Lists.newArrayList(); + try { pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); pdeptids = deptid + pdeptids; log.info("pdeptids : [{}]",pdeptids); - LocalDateTime nowLocalDateTime = DateUtil.getTime(submitDates); - int nowyear = nowLocalDateTime.getYear(); - int nowMonth = nowLocalDateTime.getMonth().getValue(); - LocalDateTime beforeLocalDateTime = DateUtil.getTime(submitDates).minusMonths(1); - int beforeYear = beforeLocalDateTime.getYear(); - int beforeMonth = beforeLocalDateTime.getMonth().getValue(); - - sql = "select a.zt,a.ksrq,a.jsrq,a.gzrq,a.gzsj,b.zt dtzt,b.tsbm,b.gzrq dtgzrq,b.gzsj dtgzsj from uf_jcl_kq_kqzq a left join uf_jcl_kq_kqzq_dt1 b on a.id=b.mainid where a.mc=? and (a.nd=? and a.yf=? or a.nd=? and a.yf=?)"; + sql = "select a.zt,a.ksrq,a.jsrq,a.gzrq,a.gzsj,b.zt dtzt,b.tsbm,b.gzrq dtgzrq,b.gzsj dtgzsj from uf_jcl_kq_kqzq a left join uf_jcl_kq_kqzq_dt1 b on a.id=b.mainid where a.mc=? and a.nd in ("+String.join(",",yearSet)+")"; if (attendanceSetIdsSets.toArray().length == 0){ resultMap.put("status",false); return resultMap; } - List> list = DbTools.getSqlToList(sql,attendanceSetIdsSets.toArray()[0],nowyear,nowMonth,beforeYear,beforeMonth); - + List> list = DbTools.getSqlToList(sql,attendanceSetIdsSets.toArray()[0]); log.info("GetKqCycleTimeIntervalCmd list : [{}]",list); - for (Map dataMap : list){ - String tsbm = Util.null2String(dataMap.get("tsbm")); - if (!"".equals(tsbm) && CommonUtil.ifContainStr(pdeptids,tsbm,",")){ - //人员在特殊部门里 - String gzrq = Util.null2String(dataMap.get("dtgzrq")) +" "+Util.null2String(dataMap.get("dtgzsj")) +":00"; - if (DateUtil.getTime(submitDates).compareTo(DateUtil.getTime(gzrq))<=0){ - Map date = Maps.newHashMap(); - date.put("startDate",dataMap.get("ksrq")); - date.put("endDate",dataMap.get("jsrq")); - dateList.add(date); - } - } - } - - for (Map dataMap : list){ - String gzrq = Util.null2String(dataMap.get("gzrq")) +" "+Util.null2String(dataMap.get("gzsj")) +":00"; - if (DateUtil.getTime(submitDates).compareTo(DateUtil.getTime(gzrq))<=0){ + for (Map detailData:submitDataList){ + String ksrq = Util.null2String(detailData.get(submitStr)).split(" ")[0]; + List> cycleTime = list.stream().filter(e->DateUtil.getTime(e.get("ksrq").toString()).compareTo(DateUtil.getTime(ksrq)) <= 0 && + DateUtil.getTime(e.get("jsrq").toString()).compareTo(DateUtil.getTime(ksrq)) >=0).collect(Collectors.toList()); + log.info("数据业务日期:[{}],周期数据:[{}]",ksrq,cycleTime); + if (cycleTime.size() > 0){ Map date = Maps.newHashMap(); - List> filterDate = dateList.stream().filter(e->e.get("startDate").equals(dataMap.get("ksrq"))).collect(Collectors.toList()); - if (filterDate.size() == 0){ - date.put("startDate",dataMap.get("ksrq")); - date.put("endDate",dataMap.get("jsrq")); - dateList.add(date); + date.put("startDate",cycleTime.get(0).get("ksrq")); + date.put("endDate",cycleTime.get(0).get("jsrq")); + dataList.add(date); + + //0:待关账 1:已关账,2:已结账 + String zt = Util.null2String(cycleTime.get(0).get("zt")); + String gzrq = Util.null2String(cycleTime.get(0).get("gzrq")); + String gzsj = Util.null2String(cycleTime.get(0).get("gzsj")); + + String tsbm = Util.null2String(cycleTime.get(0).get("tsbm")); + String dtzt = Util.null2String(cycleTime.get(0).get("dtzt")); + String dtgzrq = Util.null2String(cycleTime.get(0).get("dtgzrq")); + String dtgzsj = Util.null2String(cycleTime.get(0).get("dtgzsj")); + + if (!"".equals(tsbm) && CommonUtil.ifContainStr(pdeptids,tsbm,",")){ + //人员在特殊部门里 + if ("1".equals(dtzt) || DateUtil.getTime(submitDate).compareTo(DateUtil.getTime(dtgzrq+" "+dtgzsj+":00")) >0){ + //处于关账状态或提交日期大于关账时间 + closeList.add(new HashMap(){{ + put("rq",detailData.get(submitStr)); + put("cycle",cycleTime); + }}); + } + }else { + if ("1".equals(zt) || "2".equals(zt) || DateUtil.getTime(submitDate).compareTo(DateUtil.getTime(gzrq+" "+gzsj+":00")) >0){ + //数据已关账或提交日期大于关账时间 + closeList.add(new HashMap(){{ + put("rq",detailData.get(submitStr)); + put("cycle",cycleTime); + }}); + } } + }else { + nocycleList.add(detailData.get(submitStr).toString()); } } }catch (Exception e){ log.error("catch error :{}",e); } - log.info("GetKqCycleTimeIntervalCmd dateList : [{}]",dateList); + log.info("GetKqCycleTimeIntervalCmd closeList : [{}]",closeList); + log.info("GetKqCycleTimeIntervalCmd nocycleList : [{}]",nocycleList); + + resultMap.put("closeList",closeList); + resultMap.put("nocycleList",nocycleList); + resultMap.put("dataList",dataList); + return resultMap; } diff --git a/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class b/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class index 63aa215..ab8c8e7 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class and b/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class b/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class index b4d55d0..70fb9ba 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class and b/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/EvctionCheckAction.class b/target/classes/com/engine/attendance/workflow/action/EvctionCheckAction.class index 1bf92fe..561f2be 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/EvctionCheckAction.class and b/target/classes/com/engine/attendance/workflow/action/EvctionCheckAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class b/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class index c44d1e1..005fc5d 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class and b/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/OvertimePlanCheckAction.class b/target/classes/com/engine/attendance/workflow/action/OvertimePlanCheckAction.class index f3c8e59..623583b 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/OvertimePlanCheckAction.class and b/target/classes/com/engine/attendance/workflow/action/OvertimePlanCheckAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction$1.class b/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction$1.class new file mode 100644 index 0000000..3502a52 Binary files /dev/null and b/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction$1.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction.class b/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction.class index 79293ef..6248769 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction.class and b/target/classes/com/engine/attendance/workflow/action/OvertimeResultCheckAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class b/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class index 1585a72..e12f5e0 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class and b/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class b/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class index 0601e78..48d7792 100644 Binary files a/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class and b/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class differ diff --git a/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$1.class b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$1.class new file mode 100644 index 0000000..8840c71 Binary files /dev/null and b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$1.class differ diff --git a/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$2.class b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$2.class new file mode 100644 index 0000000..3ed690c Binary files /dev/null and b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd$2.class differ diff --git a/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class index cdf0f8f..5828c40 100644 Binary files a/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class and b/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class differ diff --git a/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class b/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class index eac5796..c6058b5 100644 Binary files a/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class and b/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class b/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class index 02177e6..9c73487 100644 Binary files a/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class and b/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class differ diff --git a/target/classes/com/engine/common/util/CommonUtil.class b/target/classes/com/engine/common/util/CommonUtil.class index 7cba74e..d17a64d 100644 Binary files a/target/classes/com/engine/common/util/CommonUtil.class and b/target/classes/com/engine/common/util/CommonUtil.class differ diff --git a/target/test-classes/TestMethod.class b/target/test-classes/TestMethod.class index 880ae52..b1f678d 100644 Binary files a/target/test-classes/TestMethod.class and b/target/test-classes/TestMethod.class differ diff --git a/test/TestMethod.java b/test/TestMethod.java index f44b929..1779f9e 100644 --- a/test/TestMethod.java +++ b/test/TestMethod.java @@ -1,7 +1,9 @@ import com.engine.common.util.DateUtil; +import com.engine.common.util.Utils; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import java.time.ZoneOffset; import java.util.Comparator; @@ -26,8 +28,21 @@ public class TestMethod { // System.out.println(detailTableData); List> list = Lists.newArrayList(); - //double totalUnearnedLeave = list.stream().mapToDouble(e->Double.valueOf(e.get("wxsc").toString())).sum(); + Map map1 = Maps.newHashMap(); + map1.put("ksrq","2024-04-20"); + Map map2 = Maps.newHashMap(); + map2.put("ksrq","2024-04-21"); + Map map3 = Maps.newHashMap(); + map3.put("ksrq","2024-04-15"); + Map map4 = Maps.newHashMap(); + map4.put("ksrq","2024-04-14"); + list.add(map1); + list.add(map2); + list.add(map3); + list.add(map4); + list = list.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("ksrq").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + // System.out.println(DateUtil.getTime("2024-04-14").toInstant(ZoneOffset.of("+8")).toEpochMilli()); - System.out.println(list.addAll(null)); + System.out.println(list); } }