离职人员校验、弹性时段

zm_dev
liuliang 8 months ago
parent 333bbf1ac4
commit 697b9a4287

@ -6,10 +6,7 @@ import com.engine.jucailinkq.attendance.enums.ClassBelongToEnum;
import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum; import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum;
import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext; import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.*;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.interceptor.CommandContext; import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -174,10 +171,11 @@ public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>>
put("dtjssj",askForLeaveData.get("jsrq")+" "+askForLeaveData.get("jssj")); put("dtjssj",askForLeaveData.get("jsrq")+" "+askForLeaveData.get("jssj"));
put("ksdk",askForLeaveItem.get("lgsbxydk")); put("ksdk",askForLeaveItem.get("lgsbxydk"));
put("jsdk",askForLeaveItem.get("fgsbxydk")); put("jsdk",askForLeaveItem.get("fgsbxydk"));
put("tqdkfzs","60"); put("tqdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
put("thdkfzs","60"); put("thdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs")); put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs"));
put("thfghlfzs",askForLeaveItem.get("thfghlfzs")); put("thfghlfzs",askForLeaveItem.get("thfghlfzs"));
put("zysd",askForLeaveItem.get("zysd"));
}}; }};
askForLeaveSchedule.add(askForLeaveMap); askForLeaveSchedule.add(askForLeaveMap);
} }

@ -33,7 +33,7 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
@Override @Override
public Map<String, Object> execute(CommandContext commandContext) { public Map<String, Object> execute(CommandContext commandContext) {
//打卡日期 //分析日期
String needGetDate = Util.null2String(params.get("date")); String needGetDate = Util.null2String(params.get("date"));
//打卡数据 //打卡数据
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>)params.get("clockInTimeList"); List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>)params.get("clockInTimeList");
@ -121,9 +121,9 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
} }
boolean mark = false; boolean mark = false;
if (DateUtil.getTime(earliestTime).compareTo(DateUtil.getTime(needGetDate+" 00:00:00")) < 0){ // if (DateUtil.getTime(earliestTime).compareTo(DateUtil.getTime(needGetDate+" 00:00:00")) < 0){
//当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据 //当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据
String earliestDate = earliestTime.split(" ")[0]; String earliestDate = DateUtil.beforeDay(needGetDate,1);
Map<String,Object> clockIntime = clockInTimeMap.get(earliestDate); Map<String,Object> clockIntime = clockInTimeMap.get(earliestDate);
if (clockIntime == null || clockIntime.size()==0){ if (clockIntime == null || clockIntime.size()==0){
String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?"; String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?";
@ -154,7 +154,7 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
} }
} }
} }
} // }
if (mark){ if (mark){
earliestTime = DateUtil.AfterSeconds(earliestTime,1); earliestTime = DateUtil.AfterSeconds(earliestTime,1);
} }

@ -6,10 +6,7 @@ import com.engine.jucailinkq.attendance.enums.ClassBelongToEnum;
import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum; import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum;
import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext; import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.*;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.interceptor.CommandContext; import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -171,10 +168,11 @@ public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
put("dtjssj",evectionData.get("jsrq")+" "+evectionData.get("jssj")); put("dtjssj",evectionData.get("jsrq")+" "+evectionData.get("jssj"));
put("ksdk",evectionItem.get("lgsbxydk")); put("ksdk",evectionItem.get("lgsbxydk"));
put("jsdk",evectionItem.get("fgsbxydk")); put("jsdk",evectionItem.get("fgsbxydk"));
put("tqdkfzs","60"); put("tqdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
put("thdkfzs","60"); put("thdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange")== null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
put("tqlghlfzs",evectionItem.get("tqlghlfzs")); put("tqlghlfzs",evectionItem.get("tqlghlfzs"));
put("thfghlfzs",evectionItem.get("thfghlfzs")); put("thfghlfzs",evectionItem.get("thfghlfzs"));
put("zysd",evectionItem.get("zysd"));
}}; }};
evectionSchedule.add(evectioneMap); evectionSchedule.add(evectioneMap);
} }

@ -11,6 +11,7 @@ import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.DbTools;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils; import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.interceptor.CommandContext; import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -93,7 +94,9 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
Map<String,Object> newMap = Maps.newHashMap(); Map<String,Object> newMap = Maps.newHashMap();
newMap.putAll(map); newMap.putAll(map);
newMap.put("rqlx",rqlx); newMap.put("rqlx",rqlx);
if (!newMap.get("sfxx").equals(CheckBoxEnum.CHECKED.getKey())){
newMap.put("sfxx",sfxx); newMap.put("sfxx",sfxx);
}
adjustWorkOverTimeClass(newMap, finalAttendanceItems,commandContext); adjustWorkOverTimeClass(newMap, finalAttendanceItems,commandContext);
classs.add(newMap); classs.add(newMap);
} }
@ -116,7 +119,7 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
} }
/** 加班计划*/ /** 加班计划*/
sql = "select b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.gsrq>=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1"; sql = "select a.id,b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.gsrq>=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1";
Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq")))); Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
//考勤项目 //考勤项目
@ -143,8 +146,12 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
map.put("bcsdxx",resultList == null || resultList.size()==0 || resultList.get(0) ==null ? "":resultList.get(0).get("bcsdxx")); map.put("bcsdxx",resultList == null || resultList.size()==0 || resultList.get(0) ==null ? "":resultList.get(0).get("bcsdxx"));
if (resultList.size()>0){ if (resultList.size()>0){
map.putAll(resultList.get(0)); map.putAll(resultList.get(0));
map.put("sfxx",Util.null2String(resultList.get(0).get("sfxx")));
}else { }else {
map.put("edsc","0"); map.put("edsc","0");
if (schedulingdateMap != null && schedulingdateMap.size()>0){
map.put("sfxx",Util.null2String(schedulingdateMap.get(0).get("sfxx")));
}
} }
map.put("edts","0"); map.put("edts","0");
map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey()); map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey());
@ -152,11 +159,9 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
map.put("dtjssj",overtimePlan.get("jssj")); map.put("dtjssj",overtimePlan.get("jssj"));
map.put("ksdk","0"); map.put("ksdk","0");
map.put("jsdk","0"); map.put("jsdk","0");
if (schedulingdateMap != null && schedulingdateMap.size()>0){ map.put("overtimePlanId",overtimePlan.get("id"));
map.put("sfxx",Util.null2String(schedulingdateMap.get(0).get("sfxx"))); map.put("tqdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
} map.put("thdkfzs",ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
map.put("tqdkfzs","60");
map.put("thdkfzs","60");
map.put("rqlx",dateMap.get(e.getKey())); map.put("rqlx",dateMap.get(e.getKey()));
map.put("edxss",overtimePlan.get("jbsc")); map.put("edxss",overtimePlan.get("jbsc"));
map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60); map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60);

@ -123,13 +123,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
String evctionksdk = Util.null2String(askForLeaveAndEvctionMap.get("ksdk")); String evctionksdk = Util.null2String(askForLeaveAndEvctionMap.get("ksdk"));
String evctiondtjssj = Utils.getjssjTime(askForLeaveAndEvctionMap,analysisDate); String evctiondtjssj = Utils.getjssjTime(askForLeaveAndEvctionMap,analysisDate);
String evctionjsdk = Util.null2String(askForLeaveAndEvctionMap.get("jsdk")); String evctionjsdk = Util.null2String(askForLeaveAndEvctionMap.get("jsdk"));
String zysd = Util.null2String(askForLeaveAndEvctionMap.get("zysd"));
List<String> lists = Lists.newArrayList(); List<String> lists = Lists.newArrayList();
for (int i=0;i<scheduleResult.size();i++){ for (int i=0;i<scheduleResult.size();i++){
String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate); String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate);
String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate); String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate);
String bdlx = Util.null2String(scheduleResult.get(i).get("bdlx")); String bdlx = Util.null2String(scheduleResult.get(i).get("bdlx"));
if (zysd.contains(Utils.getWorkFor(bdlx))){
if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtkssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtkssj)) >=0 if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtkssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtkssj)) >=0
&& !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(bdlx) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(bdlx) && !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(bdlx)){ && !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(bdlx) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(bdlx) && !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(bdlx)){
lists.add(dtkssj+"&"+ClockPointEnum.START.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("ksdk"))); lists.add(dtkssj+"&"+ClockPointEnum.START.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("ksdk")));
@ -139,6 +140,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
lists.add(dtjssj+"&"+ClockPointEnum.END.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("jsdk"))); lists.add(dtjssj+"&"+ClockPointEnum.END.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("jsdk")));
} }
} }
}
//新打卡 //新打卡
List<String> newNeedClockLists = Lists.newArrayList(); List<String> newNeedClockLists = Lists.newArrayList();
//时间-结束卡\开始卡-是否打卡 //时间-结束卡\开始卡-是否打卡
@ -561,14 +563,33 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
* @return * @return
*/ */
public List<Map<String, Object>> adjustWorkOverTimeClock(List<Map<String, Object>> scheduleResult,String analysisDate){ public List<Map<String, Object>> adjustWorkOverTimeClock(List<Map<String, Object>> scheduleResult,String analysisDate){
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); List<Map<String, Object>> workscheduleList = scheduleResult.stream().filter(e->!Utils.ifRestClassSegment(e.get("bdlx").toString())).collect(Collectors.toList());
for (int i=0;i<scheduleResult.size();i++){ List<Map<String, Object>> restscheduleList = scheduleResult.stream().filter(e->Utils.ifRestClassSegment(e.get("bdlx").toString())).collect(Collectors.toList());
Map<String, Object> scheduleMap = scheduleResult.get(i);
workscheduleList = workscheduleList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
for (int i=0;i<workscheduleList.size();i++){
Map<String, Object> scheduleMap = workscheduleList.get(i);
if (scheduleMap.get("bdlx").equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey())){ if (scheduleMap.get("bdlx").equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey())){
String kssj = Utils.getkssjTime(scheduleMap,analysisDate); String kssj = Utils.getkssjTime(scheduleMap,analysisDate);
String jssj = Utils.getjssjTime(scheduleMap,analysisDate); String jssj = Utils.getjssjTime(scheduleMap,analysisDate);
Map<String, Object> beforeScheduleMap = i-1 >=0?scheduleResult.get(i-1):null; Map<String, Object> beforeScheduleMap = i-1 >=0?workscheduleList.get(i-1):null;
Map<String, Object> afterScheduleMap = i+1 <=scheduleResult.size()-1?scheduleResult.get(i+1):null; Map<String, Object> afterScheduleMap = i+1 <=workscheduleList.size()-1?workscheduleList.get(i+1):null;
if (beforeScheduleMap != null && afterScheduleMap != null && ifWorkClassSegment(beforeScheduleMap.get("bdlx").toString()) &&
ifWorkClassSegment(afterScheduleMap.get("bdlx").toString())){
//加班计划处在工作中间,休息时段加班
String beforejssj = Utils.getjssjTime(beforeScheduleMap,analysisDate);
String afterkssj = Utils.getkssjTime(afterScheduleMap,analysisDate);
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(beforejssj)) == 0){
beforeScheduleMap.put("jsdk",CheckBoxEnum.UNCHECKED.getKey());
scheduleMap.put("ksdk",CheckBoxEnum.UNCHECKED.getKey());
beforeScheduleMap.put("jsdk",CheckBoxEnum.UNCHECKED.getKey());
}
if (DateUtil.getTime(jssj).compareTo(DateUtil.getTime(afterkssj)) == 0){
scheduleMap.put("jsdk",CheckBoxEnum.UNCHECKED.getKey());
afterScheduleMap.put("ksdk",CheckBoxEnum.UNCHECKED.getKey());
}
}else {
if (beforeScheduleMap != null){ if (beforeScheduleMap != null){
String beforejssj = Utils.getjssjTime(beforeScheduleMap,analysisDate); String beforejssj = Utils.getjssjTime(beforeScheduleMap,analysisDate);
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(beforejssj)) == 0 && ifWorkClassSegment(beforeScheduleMap.get("bdlx").toString()) && if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(beforejssj)) == 0 && ifWorkClassSegment(beforeScheduleMap.get("bdlx").toString()) &&
@ -599,8 +620,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
} }
} }
} }
}
List<Map<String, Object>> newList = Lists.newArrayList();
newList.addAll(workscheduleList);
newList.addAll(restscheduleList);
newList = newList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
return scheduleResult; return newList;
} }
/** /**
* *
@ -791,7 +818,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/** /**
* *
*/ */
if (toRestClockPointDTO != null && endRestClockPointDTO != null){ if (toRestClockPointDTO != null && endRestClockPointDTO != null && toRestClockPointDTO.getClockTime() != null && endRestClockPointDTO.getClockTime() != null){
String toRestClassTime = toRestClockPointDTO.getClassTime(); String toRestClassTime = toRestClockPointDTO.getClassTime();
String endRestClassTime = endRestClockPointDTO.getClassTime(); String endRestClassTime = endRestClockPointDTO.getClassTime();
Map<ClockPointEnum, Map<String, Object>> toRestNearestClcokInTime = Utils.getNearestClcokInTimeCmd(DateUtil.beforeMinutes(dtkssj,dtzddxfz), clockInTimeList); Map<ClockPointEnum, Map<String, Object>> toRestNearestClcokInTime = Utils.getNearestClcokInTimeCmd(DateUtil.beforeMinutes(dtkssj,dtzddxfz), clockInTimeList);

@ -81,12 +81,12 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
Map<String, Object> getWorkOverTimeParam = Maps.newHashMap(); Map<String, Object> getWorkOverTimeParam = Maps.newHashMap();
//加班开始时间 //加班开始时间
String kssj = Utils.getkssjTime(scheduleMap, analysisDate); String kssj = Utils.getkssjTime(scheduleMap, analysisDate);
ClockPointDTO startClockPointDTO = clcokInTimeDataList.stream().filter(e->e.getPointType() == ClockPointEnum.START && List<ClockPointDTO> startClockPointDTO = clcokInTimeDataList.stream().filter(e->e.getPointType() == ClockPointEnum.START &&
DateUtil.getTime(kssj).compareTo(DateUtil.getTime(e.getClassTime())) == 0).collect(Collectors.toList()).get(0); DateUtil.getTime(kssj).compareTo(DateUtil.getTime(e.getClassTime())) == 0).collect(Collectors.toList());
//加班结束时间 //加班结束时间
String jssj = Utils.getjssjTime(scheduleMap, analysisDate); String jssj = Utils.getjssjTime(scheduleMap, analysisDate);
ClockPointDTO endClockPointDTO = clcokInTimeDataList.stream().filter(e->e.getPointType() == ClockPointEnum.END && List<ClockPointDTO> endClockPointDTO = clcokInTimeDataList.stream().filter(e->e.getPointType() == ClockPointEnum.END &&
DateUtil.getTime(jssj).compareTo(DateUtil.getTime(e.getClassTime())) == 0).collect(Collectors.toList()).get(0); DateUtil.getTime(jssj).compareTo(DateUtil.getTime(e.getClassTime())) == 0).collect(Collectors.toList());
//加班实际开始时间 //加班实际开始时间
String realityStartTime = ""; String realityStartTime = "";
//加班实际结束时间 //加班实际结束时间
@ -191,8 +191,8 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
} }
} else { } else {
String kssjTime = kssj; String kssjTime = kssj;
if (startClockPointDTO.getElasticTime() != null && !startClockPointDTO.getElasticTime().equals("")){ if (startClockPointDTO.size()>0 && startClockPointDTO.get(0).getElasticTime() != null && !startClockPointDTO.get(0).getElasticTime().equals("")){
kssjTime = startClockPointDTO.getElasticTime(); kssjTime = startClockPointDTO.get(0).getElasticTime();
} }
if (DateUtil.getTime(realityStartTime).compareTo(DateUtil.getTime(kssjTime)) > 0) { if (DateUtil.getTime(realityStartTime).compareTo(DateUtil.getTime(kssjTime)) > 0) {
beLateTime = DateUtil.getBetWeenMinutes(kssjTime, realityStartTime); beLateTime = DateUtil.getBetWeenMinutes(kssjTime, realityStartTime);
@ -234,8 +234,9 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
} }
} else { } else {
String jssjTime = jssj; String jssjTime = jssj;
if (endClockPointDTO.getElasticTime() != null && !endClockPointDTO.getElasticTime().equals("")){
jssjTime = endClockPointDTO.getElasticTime(); if (endClockPointDTO.size()>0 && endClockPointDTO.get(0).getElasticTime() != null && !endClockPointDTO.get(0).getElasticTime().equals("")){
jssjTime = endClockPointDTO.get(0).getElasticTime();
} }
if (DateUtil.getTime(realityEndime).compareTo(DateUtil.getTime(jssjTime)) < 0) { if (DateUtil.getTime(realityEndime).compareTo(DateUtil.getTime(jssjTime)) < 0) {
leaveElaryTime = DateUtil.getBetWeenMinutes(realityEndime, jssjTime); leaveElaryTime = DateUtil.getBetWeenMinutes(realityEndime, jssjTime);

@ -173,6 +173,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
insertParam.put("sjkssj",realityStartTime.split(" ")[1]); insertParam.put("sjkssj",realityStartTime.split(" ")[1]);
insertParam.put("sjjsrq",realityEndime.split(" ")[0]); insertParam.put("sjjsrq",realityEndime.split(" ")[0]);
insertParam.put("sjjssj",realityEndime.split(" ")[1]); insertParam.put("sjjssj",realityEndime.split(" ")[1]);
if (scheduleMap.get("overtimePlanId") != null){
insertParam.put("jbjhid",scheduleMap.get("overtimePlanId"));
}
insertParam.put("sjjbsc",itemduration); insertParam.put("sjjbsc",itemduration);
insertParam.put("jbjgly","4"); insertParam.put("jbjgly","4");
insertParam.put("jblx",workTimeBeLateItems.get(0).get("key")); insertParam.put("jblx",workTimeBeLateItems.get(0).get("key"));
@ -182,6 +185,7 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
insertParam.put("edjxsc",0); insertParam.put("edjxsc",0);
insertParam.put("ydxsc",0); insertParam.put("ydxsc",0);
insertParam.put("wdxsc",0); insertParam.put("wdxsc",0);
insertParam.put("jbgzrq",params.get("jbgzrq"));
/** /**
* *
*/ */

@ -41,58 +41,98 @@ public class AttendanceAnalysisJob extends BaseCronJob {
@Override @Override
public void execute() { public void execute() {
log.info("********AttendanceAnalysisJob start********"); log.info("********AttendanceAnalysisJob start********");
log.info("********AttendanceAnalysisJob executeDate :[{}]********",executeDate);
if (executeDate == null || "".equals(executeDate)){ String useDate = com.time.util.DateUtil.getCurrentTime("yyyy-MM-dd");
// if (executeDate != null && !"".equals(executeDate)){
// useDate = executeDate;
// }
log.info("********AttendanceAnalysisJob executeDate :[{}]********",useDate);
executeDate = com.time.util.DateUtil.getCurrentTime("yyyy-MM-dd");
}
String queryUserSql = "select id,departmentid,subcompanyid1 from hrmresource where status <> '5' and status <> '4' and status <> '7'"; String queryDepartEmployeeSql = "select resourceid ,changedate from HRMSTATUSHISTORY where type_n = 5 and changedate='"+DateUtil.beforeDay(useDate,1)+"'";
List<String> departEmployeeList = Lists.newArrayList(DbTools.getSqlToList(queryDepartEmployeeSql).stream().map(e->e.get("resourceid").toString()).collect(Collectors.toSet()));
List<List<String>> departEmployeePartition = Lists.partition(departEmployeeList,200);
String queryUserSql = "select id,departmentid,subcompanyid1,companystartdate from hrmresource where status <> '5' and status <> '4' and status <> '7'";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql); List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
for (List<String> userIdPartition :departEmployeePartition){
String sql = "select id,departmentid,subcompanyid1,companystartdate from hrmresource where id ("+String.join(",",userIdPartition)+")";
userList.addAll(DbTools.getSqlToList(sql));
}
Map<String, Object> getAttendanceparam = Maps.newHashMap(); Map<String, Object> getAttendanceparam = Maps.newHashMap();
getAttendanceparam.put("userList",userList); getAttendanceparam.put("userList",userList);
getAttendanceparam.put("executeDate",executeDate); getAttendanceparam.put("executeDate",useDate);
Map<String, Object> attendanceCycle = utilService.getAttendanceCycle(getAttendanceparam); Map<String, Object> attendanceCycle = utilService.getAttendanceCycle(getAttendanceparam);
Set<String> allDates = Sets.newHashSet(); Set<String> allDates = Sets.newHashSet();
for (Map.Entry<String, Object> entry : attendanceCycle.entrySet()){ for (Map.Entry<String, Object> entry : attendanceCycle.entrySet()){
allDates.addAll((Set<String>)entry.getValue()); Set<String> sets = (Set<String>)entry.getValue();
for (String date :sets){
if (DateUtil.getTime(date).compareTo(DateUtil.getTime(DateUtil.beforeDay(useDate,1))) != 0){
allDates.add(date);
allDates.add(DateUtil.beforeDay(date,1));
allDates.add(DateUtil.AfterDay(date,1));
} }
}
}
List<String> allDateList = Lists.newArrayList(allDates); List<String> allDateList = Lists.newArrayList(allDates);
allDateList = allDateList.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(e).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); allDateList = allDateList.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(e).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
allDateList = allDateList.stream().map(e->"'"+e+"'").collect(Collectors.toList());
List<List<String>> needAnalysisDateList = Lists.partition(allDateList,200);
List<Map<String,Object>> dataList = Lists.newArrayList();
List<Map<String,Object>> attendaceResult = Lists.newArrayList();
for (List<String> list:needAnalysisDateList){
String dateStrs = String.join(",",list);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate in ("+dateStrs+") order by signdate,signtime";
List<Map<String,Object>> hrmschedulesignList = DbTools.getSqlToList(sql);
if (hrmschedulesignList.size() > 0){
dataList.addAll(hrmschedulesignList);
}
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,DateUtil.beforeDay(allDateList.get(0),2),executeDate);
//补打卡记录 //补打卡记录
sql = "select id,bdkry userid,dkrq signdate,dksj signtime from uf_jcl_kq_bdkjl where dkrq >= ? and dkrq <= ? and jlzt=1 order by dkrq,dksj"; sql = "select id,bdkry userid,dkrq signdate,dksj signtime from uf_jcl_kq_bdkjl where dkrq in ("+dateStrs+") and jlzt=1 order by dkrq,dksj";
List<Map<String,Object>> makeUpList = DbTools.getSqlToList(sql,DateUtil.beforeDay(allDateList.get(0),2),executeDate); List<Map<String,Object>> makeUpList = DbTools.getSqlToList(sql);
if (makeUpList.size() > 0){ if (makeUpList.size() > 0){
dataList.addAll(makeUpList); dataList.addAll(makeUpList);
} }
sql = "select sjzt,sgsj,ygid,rq from uf_jcl_kq_cqjg where rq in ("+dateStrs+")";
List<Map<String,Object>> resultList = DbTools.getSqlToList(sql);
if (resultList.size() > 0){
attendaceResult.addAll(resultList);
}
}
dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq from uf_jcl_kq_cqjg where rq in ("+String.join(",",allDateList)+")";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
//初始化扩展类 //初始化扩展类
CommonUtil.initExtensionClassHolder(); CommonUtil.initExtensionClassHolder();
for (Map<String,Object> userMap:userList){ for (Map<String,Object> userMap:userList){
String userId = Util.null2String(userMap.get("id")); String userId = Util.null2String(userMap.get("id"));
//入职日期
String companystartDate = Util.null2String(userMap.get("companystartdate"));
List<String> analysisDateList = Lists.newArrayList((Set<String>)attendanceCycle.get(userId)); List<String> analysisDateList = Lists.newArrayList((Set<String>)attendanceCycle.get(userId));
analysisDateList = analysisDateList.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(e).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); try {
analysisDateList = analysisDateList.stream().filter(e->"".equals(companystartDate) || DateUtil.getTime(e).compareTo(DateUtil.getTime(companystartDate)) >=0).sorted(Comparator.comparing(e -> DateUtil.getTime(e).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
//日期对应的打卡数据 //日期对应的打卡数据
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap(); Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
/**获得人员考勤项目*/ /**获得人员考勤项目*/
Map<String,Object> paramMap = Maps.newHashMap(); Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate",executeDate); paramMap.put("startDate",DateUtil.beforeDay(useDate,1));
paramMap.put("endDate",executeDate); paramMap.put("endDate",DateUtil.beforeDay(useDate,1));
paramMap.put("resourceId",userId); paramMap.put("resourceId",userId);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data"); List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
@ -107,13 +147,17 @@ public class AttendanceAnalysisJob extends BaseCronJob {
if (attendaceResultByUser != null && attendaceResultByUser.size() > 0) { if (attendaceResultByUser != null && attendaceResultByUser.size() > 0) {
attendaceResultMap = attendaceResultByUser.stream().collect(Collectors.groupingBy(e -> e.get("rq").toString())); attendaceResultMap = attendaceResultByUser.stream().collect(Collectors.groupingBy(e -> e.get("rq").toString()));
} }
attendanceAnalysisService.attendanceAnalysis(userId,analysisDateList,collect.get(userMap.get("id")),attendanceItems,workHourItems,clockInTimeMap,attendaceResultMap); attendanceAnalysisService.attendanceAnalysis(userId,analysisDateList,collect.get(userMap.get("id")),attendanceItems,workHourItems,clockInTimeMap,attendaceResultMap);
}catch (Exception e){
log.error("AttendanceAnalysisJob userId:[{}],analysisDateList: [{}]",userId,analysisDateList);
log.error("AttendanceAnalysisJob error : [{}]",e);
}
} }
Map<String,Object> param = Maps.newHashMap(); Map<String,Object> param = Maps.newHashMap();
param.put("startDate",DateUtil.beforeDay(allDateList.get(0),2)); param.put("startDate",DateUtil.beforeDay(useDate,3));
param.put("endDate",executeDate); param.put("endDate",useDate);
allowanceService.addAllowanceRecords(param); allowanceService.addAllowanceRecords(param);
log.info("********AttendanceAnalysisJob end********"); log.info("********AttendanceAnalysisJob end********");
} }
} }

@ -13,6 +13,7 @@ import com.engine.jucailinkq.attendance.enums.ClockPointEnum;
import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.DbTools;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils; import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -354,7 +355,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
resultMap.put(punchDate,classs); resultMap.put(punchDate,classs);
/** 加班计划*/ /** 加班计划*/
sql = "select b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.gsrq>=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1"; sql = "select a.id,b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.gsrq>=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1";
Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),punchDate,punchDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq")))); Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),punchDate,punchDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
//考勤项目 //考勤项目
@ -407,11 +408,12 @@ public class ShiftServiceImpl extends Service implements ShiftService {
map.put("dtjssj",overtimePlan.get("jssj")); map.put("dtjssj",overtimePlan.get("jssj"));
map.put("ksdk","0"); map.put("ksdk","0");
map.put("jsdk","0"); map.put("jsdk","0");
map.put("overtimePlanId",overtimePlan.get("id"));
if (punchDate.compareTo(e.getKey()) == 0){ if (punchDate.compareTo(e.getKey()) == 0){
map.put("sfxx", restSign); map.put("sfxx", restSign);
} }
map.put("tqdkfzs","60"); map.put("tqdkfzs", ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
map.put("thdkfzs","60"); map.put("thdkfzs",ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange") == null?"60":ExtensionClassHolder.getGlobalSetMap().get("defaultClockRange"));
map.put("rqlx",dateType); map.put("rqlx",dateType);
map.put("edxss",overtimePlan.get("jbsc")); map.put("edxss",overtimePlan.get("jbsc"));
map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60); map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60);

@ -87,6 +87,8 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
} }
//获得加班时长以及加班开始时间和结束时间 //获得加班时长以及加班开始时间和结束时间
params.putAll(overTimeDuraionMap); params.putAll(overTimeDuraionMap);
//加班结果归属日期
params.put("jbgzrq",analysisDate);
//获得加班项目 //获得加班项目
Map<String,Object> fatherSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params)); Map<String,Object> fatherSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
@ -130,6 +132,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
if (beforeschedule.get("gsrq").equals(ClassBelongToEnum.NOWDAY.getKey())){ if (beforeschedule.get("gsrq").equals(ClassBelongToEnum.NOWDAY.getKey())){
beforeschedule.put("overTimeItem",getWorkOvertimeItems(beforeschedule,attendanceItems,false)); beforeschedule.put("overTimeItem",getWorkOvertimeItems(beforeschedule,attendanceItems,false));
}else { }else {
//归属日期不属于当日,重新查找对应的考勤项目
beforeschedule.put("overTimeItem",getWorkOvertimeItems(beforeschedule,attendanceItems,true)); beforeschedule.put("overTimeItem",getWorkOvertimeItems(beforeschedule,attendanceItems,true));
} }
@ -150,6 +153,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
if (afterschedule.get("gsrq").equals(ClassBelongToEnum.NOWDAY.getKey())){ if (afterschedule.get("gsrq").equals(ClassBelongToEnum.NOWDAY.getKey())){
afterschedule.put("overTimeItem",getWorkOvertimeItems(afterschedule,attendanceItems,false)); afterschedule.put("overTimeItem",getWorkOvertimeItems(afterschedule,attendanceItems,false));
}else { }else {
//归属日期不属于当日,重新查找对应的考勤项目
afterschedule.put("overTimeItem",getWorkOvertimeItems(afterschedule,attendanceItems,true)); afterschedule.put("overTimeItem",getWorkOvertimeItems(afterschedule,attendanceItems,true));
} }
scheduleMapList.add(afterschedule); scheduleMapList.add(afterschedule);
@ -164,9 +168,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
double jbsc = 0; double jbsc = 0;
if (CheckBoxEnum.CHECKED.getKey().equals(tqdkjrjb) && CheckBoxEnum.CHECKED.getKey().equals(scheduleMapList.get(0).get("ksdk"))) { if (CheckBoxEnum.CHECKED.getKey().equals(tqdkjrjb) && CheckBoxEnum.CHECKED.getKey().equals(scheduleMapList.get(0).get("ksdk"))) {
jbsc = DateUtil.getBetWeenMinutes(realityStartTime,scheduleMapList.get(0).get("dtjssj").toString()); jbsc = DateUtil.getBetWeenMinutes(realityStartTime,scheduleMapList.get(0).get("dtjssj").toString());
}else {
if (scheduleMapList.get(0).get("dtkssj").equals(scheduleMapList.get(0).get("dtjssj"))){
jbsc=0;
}else { }else {
jbsc = DateUtil.getBetWeenMinutes(Utils.getkssjTime(scheduleMapList.get(0),analysisDate),Utils.getjssjTime(scheduleMapList.get(0),analysisDate)); jbsc = DateUtil.getBetWeenMinutes(Utils.getkssjTime(scheduleMapList.get(0),analysisDate),Utils.getjssjTime(scheduleMapList.get(0),analysisDate));
} }
}
if (fatherSaveWorkOverTimeMap.get("workOverTimeItems") != null){ if (fatherSaveWorkOverTimeMap.get("workOverTimeItems") != null){
Map<String,Object> workOverTimeItems = (Map<String,Object>)fatherSaveWorkOverTimeMap.get("workOverTimeItems"); Map<String,Object> workOverTimeItems = (Map<String,Object>)fatherSaveWorkOverTimeMap.get("workOverTimeItems");
@ -189,7 +197,17 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
beforeParam.put("realityEndime",Utils.getjssjTime(scheduleMapList.get(0),analysisDate)); beforeParam.put("realityEndime",Utils.getjssjTime(scheduleMapList.get(0),analysisDate));
beforeParam.put("beSplit",true); beforeParam.put("beSplit",true);
beforeParam.put("jbsc",jbsc); beforeParam.put("jbsc",jbsc);
beforeParam.put("jbgzrq",realityStartTime.split(" ")[0]);
if (DateUtil.getTime(realityStartTime.split(" ")[0]).compareTo(DateUtil.getTime(analysisDate)) == 0 &&
DateUtil.getTime(realityEndime.split(" ")[0]).compareTo(DateUtil.getTime(analysisDate)) == 0){
//加班开始和结束都在当天
if (DateUtil.getTime(beforeParam.get("realityEndime").toString()).compareTo(DateUtil.getTime(analysisDate+" 12:00:00")) <0){
//拆分时间在分析日期12点之前归属于上一天
beforeParam.put("jbgzrq",DateUtil.beforeDay(analysisDate,1));
}
}
if (jbsc != 0){
Map<String,Object> beforeSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(beforeParam)); Map<String,Object> beforeSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(beforeParam));
if (beforeSaveWorkOverTimeMap.get("overTimeHoliday") != null){ if (beforeSaveWorkOverTimeMap.get("overTimeHoliday") != null){
overTimeHolidayList.add((Map<String,Object>)beforeSaveWorkOverTimeMap.get("overTimeHoliday")); overTimeHolidayList.add((Map<String,Object>)beforeSaveWorkOverTimeMap.get("overTimeHoliday"));
@ -197,6 +215,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
if (beforeSaveWorkOverTimeMap.get("overTimeResult") != null){ if (beforeSaveWorkOverTimeMap.get("overTimeResult") != null){
overTimeResultList.add((Map<String,Object>)beforeSaveWorkOverTimeMap.get("overTimeResult")); overTimeResultList.add((Map<String,Object>)beforeSaveWorkOverTimeMap.get("overTimeResult"));
} }
}
Map<String,Object> afterParam = Maps.newHashMap(); Map<String,Object> afterParam = Maps.newHashMap();
afterParam.putAll(params); afterParam.putAll(params);
@ -206,6 +225,17 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
afterParam.put("beSplit",true); afterParam.put("beSplit",true);
afterParam.put("realityStartTime",Utils.getkssjTime(scheduleMapList.get(1),analysisDate)); afterParam.put("realityStartTime",Utils.getkssjTime(scheduleMapList.get(1),analysisDate));
afterParam.put("realityEndime",realityEndime); afterParam.put("realityEndime",realityEndime);
afterParam.put("jbgzrq",realityEndime.split(" ")[0]);
if (DateUtil.getTime(realityStartTime.split(" ")[0]).compareTo(DateUtil.getTime(analysisDate)) == 0 &&
DateUtil.getTime(realityEndime.split(" ")[0]).compareTo(DateUtil.getTime(analysisDate)) == 0){
//加班开始和结束都在当天
if (DateUtil.getTime(afterParam.get("realityStartTime").toString()).compareTo(DateUtil.getTime(analysisDate+" 12:00:00")) >=0){
//拆分时间在分析日期12点之后归属于后一天
afterParam.put("jbgzrq",DateUtil.AfterDay(analysisDate,1));
}
}
if (afterjbsc != 0){
Map<String,Object> afterSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(afterParam)); Map<String,Object> afterSaveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(afterParam));
if (afterSaveWorkOverTimeMap.get("overTimeHoliday") != null){ if (afterSaveWorkOverTimeMap.get("overTimeHoliday") != null){
overTimeHolidayList.add((Map<String,Object>)afterSaveWorkOverTimeMap.get("overTimeHoliday")); overTimeHolidayList.add((Map<String,Object>)afterSaveWorkOverTimeMap.get("overTimeHoliday"));
@ -213,7 +243,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
if (afterSaveWorkOverTimeMap.get("overTimeResult") != null){ if (afterSaveWorkOverTimeMap.get("overTimeResult") != null){
overTimeResultList.add((Map<String,Object>)afterSaveWorkOverTimeMap.get("overTimeResult")); overTimeResultList.add((Map<String,Object>)afterSaveWorkOverTimeMap.get("overTimeResult"));
} }
}
} }
@ -278,6 +308,8 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
String realityEndime = restOverTimeDuraion.stream().max(Comparator.comparing(e->DateUtil.getTime(e.get("realityEndime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).get().get("realityEndime").toString(); String realityEndime = restOverTimeDuraion.stream().max(Comparator.comparing(e->DateUtil.getTime(e.get("realityEndime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).get().get("realityEndime").toString();
params.put("realityStartTime",realityStartTime); params.put("realityStartTime",realityStartTime);
params.put("realityEndime",realityEndime); params.put("realityEndime",realityEndime);
//加班结果归属日期
params.put("jbgzrq",analysisDate);
Map<String,Object> saveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params)); Map<String,Object> saveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
if (saveWorkOverTimeMap.get("workOverTimeItems") != null){ if (saveWorkOverTimeMap.get("workOverTimeItems") != null){
workOverTimeItemList.add((Map<String,Object>)saveWorkOverTimeMap.get("workOverTimeItems")); workOverTimeItemList.add((Map<String,Object>)saveWorkOverTimeMap.get("workOverTimeItems"));

@ -49,8 +49,8 @@ public class AttendanceanalysisAction {
log.info("********AttendanceAnalysisJob start********"); log.info("********AttendanceAnalysisJob start********");
Map<String,Object> paramMap = ParamUtil.request2Map(request); Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap(); // Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-08-21"); // paramMap.put("startDate","2024-08-16");
// paramMap.put("endDate","2024-08-21"); // paramMap.put("endDate","2024-08-16");
// paramMap.put("userIds","81"); // paramMap.put("userIds","81");
String startDate = Util.null2String(paramMap.get("startDate")); String startDate = Util.null2String(paramMap.get("startDate"));
@ -59,10 +59,15 @@ public class AttendanceanalysisAction {
String endAfterDate = DateUtil.AfterDay(endDate,2); String endAfterDate = DateUtil.AfterDay(endDate,2);
String userIds = Util.null2String(paramMap.get("userIds")); String userIds = Util.null2String(paramMap.get("userIds"));
int betweenDays = DateUtil.getBetWeenDays(startDate,endDate); int betweenDays = DateUtil.getBetWeenDays(startDate,endDate);
String queryDepartEmployeeSql = "select resourceid id,changedate name from HRMSTATUSHISTORY where type_n = 5";
//获取离职日期
Map<String,Object> departEmployeeMap = DbTools.getSqlToMapList(queryDepartEmployeeSql);
//初始化扩展类 //初始化扩展类
CommonUtil.initExtensionClassHolder(); CommonUtil.initExtensionClassHolder();
if ("".equals(userIds)){ if ("".equals(userIds)){
String queryUserSql = "select id from hrmresource where status <> '5' and status <> '4' and status <> '7'"; String queryUserSql = "select id,companystartdate from hrmresource where status <> '5' and status <> '4' and status <> '7'";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql); List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime"; String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
@ -83,6 +88,11 @@ public class AttendanceanalysisAction {
for (Map<String,Object> userMap :userList){ for (Map<String,Object> userMap :userList){
String userId = userMap.get("id").toString(); String userId = userMap.get("id").toString();
//入职日期
String companystartDate = Util.null2String(userMap.get("companystartdate"));
//离职日期
String terminationDate = Util.null2String(departEmployeeMap.get(userId));
log.info("***********analysis userId:{} start***********", userId); log.info("***********analysis userId:{} start***********", userId);
//出勤结果,进出时间 //出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap(); Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
@ -123,13 +133,21 @@ public class AttendanceanalysisAction {
for (int i=0; i<=betweenDays;i++){ for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i); String date = DateUtil.AfterDay(startDate,i);
if (("".equals(companystartDate) || DateUtil.getTime(date).compareTo(DateUtil.getTime(companystartDate))>=0)
&& ("".equals(terminationDate) || DateUtil.getTime(date).compareTo(DateUtil.getTime(terminationDate)) <=0)){
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date)); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date));
} }
}
allowanceService.addAllowanceRecords(paramMap); allowanceService.addAllowanceRecords(paramMap);
} }
}else { }else {
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime"; 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<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
String queryUserSql = "select id,companystartdate from hrmresource where id in ("+userIds+")";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
Map<String,List<Map<String,Object>>> userGroupMap = userList.stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
//补打卡记录 //补打卡记录
sql = "select id,bdkry userid,dkrq signdate,dksj signtime from uf_jcl_kq_bdkjl where bdkry in ("+userIds+") and dkrq >= ? and dkrq <= ? and jlzt=1 order by dkrq,dksj"; sql = "select id,bdkry userid,dkrq signdate,dksj signtime from uf_jcl_kq_bdkjl where bdkry in ("+userIds+") and dkrq >= ? and dkrq <= ? and jlzt=1 order by dkrq,dksj";
List<Map<String,Object>> makeUpList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); List<Map<String,Object>> makeUpList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
@ -149,6 +167,11 @@ public class AttendanceanalysisAction {
for (String userId : userIds.split(",")){ for (String userId : userIds.split(",")){
/**获得人员考勤项目*/ /**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap(); Map<String,Object> param = Maps.newHashMap();
//入职日期
String companystartDate = Util.null2String(userGroupMap.get(userId).get(0).get("companystartdate"));
//离职日期
String terminationDate = Util.null2String(departEmployeeMap.get(userId));
//出勤结果,进出时间 //出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap(); Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
param.put("startDate",startBeforeDate); param.put("startDate",startBeforeDate);
@ -186,7 +209,11 @@ public class AttendanceanalysisAction {
} }
for (int i=0; i<=betweenDays;i++){ for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i); String date = DateUtil.AfterDay(startDate,i);
if (("".equals(companystartDate) || DateUtil.getTime(date).compareTo(DateUtil.getTime(companystartDate))>=0)
&& ("".equals(terminationDate) || DateUtil.getTime(date).compareTo(DateUtil.getTime(terminationDate)) <=0)){
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date)); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date));
}
} }
} }
paramMap.put("empIds",paramMap.get("userIds")); paramMap.put("empIds",paramMap.get("userIds"));

@ -229,6 +229,7 @@ public class AttendanceAnalysisWrapper extends Service {
clcokInTimeDataParam.put("scheduleResult", scheduleResult); clcokInTimeDataParam.put("scheduleResult", scheduleResult);
clcokInTimeDataParam.put("clockInTimeList", clockInTimeList); clcokInTimeDataParam.put("clockInTimeList", clockInTimeList);
clcokInTimeDataParam.put("askForLeaveAndEvctionSchedule", askForLeaveAndEvctionSchedule); clcokInTimeDataParam.put("askForLeaveAndEvctionSchedule", askForLeaveAndEvctionSchedule);
//打卡卡点以及匹配的打卡时间 //打卡卡点以及匹配的打卡时间
List<ClockPointDTO> clcokInTimeData = null; List<ClockPointDTO> clcokInTimeData = null;
if (clockInTimeDataMap.get(analysisDate) != null){ if (clockInTimeDataMap.get(analysisDate) != null){

@ -108,7 +108,7 @@ public class UpdateAttendanceResultWrapper extends Service {
iforgetClockIn.get(0).put("pointType",clcokInTimedto.getPointType()); iforgetClockIn.get(0).put("pointType",clcokInTimedto.getPointType());
iforgetClockIn.get(0).put("bdlx",classInfo.get("bdlx")); iforgetClockIn.get(0).put("bdlx",classInfo.get("bdlx"));
iforgetClockIn.get(0).put("clcokInTimeData",clcokInTimeData); iforgetClockIn.get(0).put("clcokInTimeData",clcokInTimeData);
String workfor = Util.null2String(classInfo.get("bdlx")); String workfor = Utils.getWorkFor(Util.null2String(classInfo.get("bdlx")));
String zysd = Util.null2String(iforgetClockIn.get(0).get("zysd")); String zysd = Util.null2String(iforgetClockIn.get(0).get("zysd"));
if (zysd.contains(workfor) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())){ if (zysd.contains(workfor) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())){
iforgetClockIn.get(0).put("record",clcokInTimedto.isRecord()); iforgetClockIn.get(0).put("record",clcokInTimedto.isRecord());
@ -676,7 +676,7 @@ public class UpdateAttendanceResultWrapper extends Service {
} }
public int getTimeByWorkFor(String zysd,String zdycbcndfgzsd,List<Map<String, Object>> scheduleResult,String kssj,String jssj,String analysisDate){ public int getTimeByWorkFor(String zysd,String zdycbcndfgzsd,List<Map<String, Object>> scheduleResult,String kssj,String jssj,String analysisDate){
List<Map<String, Object>> reusltList = scheduleResult.stream().filter(e->(zysd.contains(Utils.getWorkFor(e.get("bdlx").toString())) && !Utils.ifRestClassSegment(e.get("bdlx").toString())) || List<Map<String, Object>> reusltList = scheduleResult.stream().filter(e->(zysd.contains(Utils.getWorkFor(e.get("bdlx").toString())) && !Utils.ifRestClassSegment(e.get("bdlx").toString()) && !Utils.ifAskforOrEvctionClassSegment(e.get("bdlx").toString())) ||
(!CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd) && Utils.ifRestClassSegment(e.get("bdlx").toString()))).collect(Collectors.toList()); (!CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd) && Utils.ifRestClassSegment(e.get("bdlx").toString()))).collect(Collectors.toList());
return Utils.removeTime(kssj,jssj,reusltList,analysisDate); return Utils.removeTime(kssj,jssj,reusltList,analysisDate);

@ -1,11 +1,11 @@
package com.engine.jucailinkq.attendance.component.persongroup.job.scheduling; package com.engine.jucailinkq.attendance.component.persongroup.job.scheduling;
import com.engine.jucailinkq.attendance.component.persongroup.job.scheduling.tactics.RegularScheduling; import com.engine.jucailinkq.attendance.component.persongroup.job.scheduling.tactics.RegularScheduling;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils; import com.engine.jucailinkq.common.util.Utils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import weaver.common.DateUtil;
import weaver.general.Util; import weaver.general.Util;
import weaver.interfaces.schedule.BaseCronJob; import weaver.interfaces.schedule.BaseCronJob;
@ -15,10 +15,6 @@ import java.util.Map;
@Slf4j @Slf4j
public class SchedulingJob extends BaseCronJob { public class SchedulingJob extends BaseCronJob {
/**
*
*/
String executeDate;
/** /**
* *
*/ */
@ -30,11 +26,9 @@ public class SchedulingJob extends BaseCronJob {
} }
@Override @Override
public void execute() { public void execute() {
if (executeDate == null || "".equals(executeDate)){ String useDate = com.time.util.DateUtil.getCurrentTime("yyyy-MM-dd");
executeDate = DateUtil.getCurrentDate();
}
String sql = "select * from uf_jcl_kq_glpb where edate > ? and bdate<=?"; String sql = "select * from uf_jcl_kq_glpb where edate > ? and bdate<=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,executeDate,executeDate); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,useDate,useDate);
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap(); Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
//规律排班模块id //规律排班模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_glpb"); String modeId = formmodeIdMap.get("uf_jcl_kq_glpb");
@ -46,7 +40,7 @@ public class SchedulingJob extends BaseCronJob {
e.put("modeId",modeId); e.put("modeId",modeId);
e.put("day",day); e.put("day",day);
e.put("formmodeid",formmodeid); e.put("formmodeid",formmodeid);
e.put("executeDate",executeDate); e.put("executeDate", DateUtil.getCurrentDate());
String zzqlx = Util.null2String(e.get("zzqlx")); String zzqlx = Util.null2String(e.get("zzqlx"));
for (RegularScheduling workOverTimeComputeRuler :rulers){ for (RegularScheduling workOverTimeComputeRuler :rulers){
if (workOverTimeComputeRuler.support(Integer.valueOf(zzqlx))){ if (workOverTimeComputeRuler.support(Integer.valueOf(zzqlx))){

@ -56,6 +56,8 @@ public class DayRegularScheduling implements RegularScheduling{
String gbbc = Util.null2String(data.get("gbbc")); String gbbc = Util.null2String(data.get("gbbc"));
//改班班次是否休息 //改班班次是否休息
String gbbcIfRest = CommonUtil.ifrestByClass(gbbc); String gbbcIfRest = CommonUtil.ifrestByClass(gbbc);
//改班候选班组
String gbhxbz = Util.null2String(data.get("gbhxbz"));
//执行日期 //执行日期
String executeDate = Util.null2String(data.get("executeDate")); String executeDate = Util.null2String(data.get("executeDate"));
@ -139,13 +141,23 @@ public class DayRegularScheduling implements RegularScheduling{
//当为节假日时 //当为节假日时
if ("0".equals(jjrcl)){ if ("0".equals(jjrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(jjrcl)){ }else if ("1".equals(jjrcl)){
@ -160,13 +172,23 @@ public class DayRegularScheduling implements RegularScheduling{
}else if ("2".equals(rqlx) || "3".equals(rqlx)){ }else if ("2".equals(rqlx) || "3".equals(rqlx)){
if ("0".equals(gxrcl)){ if ("0".equals(gxrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(gxrcl)){ }else if ("1".equals(gxrcl)){

@ -58,6 +58,8 @@ public class MonthRegularScheduling implements RegularScheduling{
String gbbcIfRest = CommonUtil.ifrestByClass(gbbc); String gbbcIfRest = CommonUtil.ifrestByClass(gbbc);
//执行日期 //执行日期
String executeDate = Util.null2String(data.get("executeDate")); String executeDate = Util.null2String(data.get("executeDate"));
//改班候选班组
String gbhxbz = Util.null2String(data.get("gbhxbz"));
//规律排班明细表数据 //规律排班明细表数据
@ -130,13 +132,23 @@ public class MonthRegularScheduling implements RegularScheduling{
//当为节假日时 //当为节假日时
if ("0".equals(jjrcl)){ if ("0".equals(jjrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(jjrcl)){ }else if ("1".equals(jjrcl)){
@ -151,13 +163,23 @@ public class MonthRegularScheduling implements RegularScheduling{
}else if ("2".equals(rqlx) || "3".equals(rqlx)){ }else if ("2".equals(rqlx) || "3".equals(rqlx)){
if ("0".equals(gxrcl)){ if ("0".equals(gxrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(gxrcl)){ }else if ("1".equals(gxrcl)){

@ -59,6 +59,8 @@ public class WeekRegularScheduling implements RegularScheduling{
String edate = Util.null2String(data.get("edate")); String edate = Util.null2String(data.get("edate"));
//执行日期 //执行日期
String executeDate = Util.null2String(data.get("executeDate")); String executeDate = Util.null2String(data.get("executeDate"));
//改班候选班组
String gbhxbz = Util.null2String(data.get("gbhxbz"));
//规律排班明细表数据 //规律排班明细表数据
@ -135,13 +137,23 @@ public class WeekRegularScheduling implements RegularScheduling{
//当为节假日时 //当为节假日时
if ("0".equals(jjrcl)){ if ("0".equals(jjrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(jjrcl)){ }else if ("1".equals(jjrcl)){
@ -156,13 +168,23 @@ public class WeekRegularScheduling implements RegularScheduling{
}else if ("2".equals(rqlx) || "3".equals(rqlx)){ }else if ("2".equals(rqlx) || "3".equals(rqlx)){
if ("0".equals(gxrcl)){ if ("0".equals(gxrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(gxrcl)){ }else if ("1".equals(gxrcl)){

@ -59,6 +59,8 @@ public class YearRegularScheduling implements RegularScheduling{
String edate = Util.null2String(data.get("edate")); String edate = Util.null2String(data.get("edate"));
//执行日期 //执行日期
String executeDate = Util.null2String(data.get("executeDate")); String executeDate = Util.null2String(data.get("executeDate"));
//改班候选班组
String gbhxbz = Util.null2String(data.get("gbhxbz"));
//规律排班明细表数据 //规律排班明细表数据
@ -139,13 +141,23 @@ public class YearRegularScheduling implements RegularScheduling{
//当为节假日时 //当为节假日时
if ("0".equals(jjrcl)){ if ("0".equals(jjrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(jjrcl)){ }else if ("1".equals(jjrcl)){
@ -160,13 +172,23 @@ public class YearRegularScheduling implements RegularScheduling{
}else if ("2".equals(rqlx) || "3".equals(rqlx)){ }else if ("2".equals(rqlx) || "3".equals(rqlx)){
if ("0".equals(gxrcl)){ if ("0".equals(gxrcl)){
//改班 //改班
if ("".equals(gbbc)){ if (("".equals(gbbc) && "0".equals(pbfs)) || ("".equals(gbhxbz) && "1".equals(pbfs))){
//休息 //休息
dataMap.put("sfxx","1"); dataMap.put("sfxx","1");
dataMap.put("bcxx",null); dataMap.put("bcxx",null);
dataMap.put("hxbz",null);
}else { }else {
if ("0".equals(pbfs)){
//固定班次
dataMap.put("bcxx",gbbc); dataMap.put("bcxx",gbbc);
dataMap.put("hxbz",null);
dataMap.put("sfxx",gbbcIfRest); dataMap.put("sfxx",gbbcIfRest);
}else {
//打卡匹配
dataMap.put("hxbz",gbhxbz);
dataMap.put("bcxx",null);
dataMap.put("sfxx",gbbcIfRest);
}
} }
insertDataList.add(dataMap); insertDataList.add(dataMap);
}else if ("1".equals(gxrcl)){ }else if ("1".equals(gxrcl)){

@ -76,7 +76,7 @@ public class VocationCmd extends AbstractCommonCommand<Map<String,Object>> {
vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue); vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue);
vocation.put("zyzValue",getUserIds(vocation)); vocation.put("zyzValue",getUserIds(vocation));
} }
log.info("VocationCmd params: [{}]",params); log.debug("VocationCmd params: [{}]",params);
String edfffs = Util.null2String(vocationList.get(0).get("edfffs")); String edfffs = Util.null2String(vocationList.get(0).get("edfffs"));
for (HolidayGenerationWay holidayGenerationWay :rulers){ for (HolidayGenerationWay holidayGenerationWay :rulers){
if (holidayGenerationWay.support(Integer.valueOf(edfffs))){ if (holidayGenerationWay.support(Integer.valueOf(edfffs))){

@ -5,10 +5,12 @@ import com.engine.jucailinkq.attendance.vacation.service.impl.VocationServiceImp
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.Utils; import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.interfaces.schedule.BaseCronJob; import weaver.interfaces.schedule.BaseCronJob;
import java.util.Map; import java.util.Map;
@Slf4j
public class HolidayGenerationJob extends BaseCronJob { public class HolidayGenerationJob extends BaseCronJob {
private VocationService basicsetService = ServiceUtil.getService(VocationServiceImpl.class); private VocationService basicsetService = ServiceUtil.getService(VocationServiceImpl.class);
@ -24,6 +26,8 @@ public class HolidayGenerationJob extends BaseCronJob {
private String executeDate; private String executeDate;
@Override @Override
public void execute() { public void execute() {
log.info("**********HolidayGenerationJob start ************");
log.info("**********HolidayGenerationJob executeDate :[{}]********",executeDate);
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap(); Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
//假期额度模块id //假期额度模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_jqed"); String modeId = formmodeIdMap.get("uf_jcl_kq_jqed");

@ -547,7 +547,7 @@ public class Utils<T> {
* @return * @return
*/ */
public static int dinnerTime(String kssj,String jssj,List<Map<String, Object>> scheduleResult,String analysisDate){ public static int dinnerTime(String kssj,String jssj,List<Map<String, Object>> scheduleResult,String analysisDate){
scheduleResult = scheduleResult.stream().filter(e ->ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); scheduleResult = scheduleResult.stream().filter(e ->Utils.ifRestClassSegment(e.get("bdlx").toString())).collect(Collectors.toList());
int dinnerTime = removeTime(kssj,jssj,scheduleResult,analysisDate); int dinnerTime = removeTime(kssj,jssj,scheduleResult,analysisDate);
return dinnerTime; return dinnerTime;
} }

@ -0,0 +1,2 @@
package TestAttendanceAllowance;public class TestScheduleJob {
}
Loading…
Cancel
Save