zm_dev
liuliang 1 year ago
parent 54101fe06e
commit 9338feaea6

@ -0,0 +1,189 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.attendance.enums.*;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Maps;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<String,Object>> {
public ComputeAttendanceDurationCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String,Object> resultMap = Maps.newHashMap();
//排班
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
//请假记录
List<Map<String,Object>> askForLeaveList = (List<Map<String,Object>>)params.get("askForLeaveList");
//请假项目
Map<String,Map<String,Object>> askForLeaveItems = (Map<String,Map<String,Object>>)params.get("askForLeaveItems");
//外出记录
List<Map<String,Object>> evectionList = (List<Map<String,Object>>)params.get("evectionList");
//外出项目
Map<String,Map<String,Object>> evectionItems = (Map<String,Map<String,Object>>)params.get("evectionItems");
//请假后消除的异常
List<Map<String,Object>> offsetAskForLeaveAnomaly = (List<Map<String,Object>>)params.get("offsetAskForLeaveAnomaly");
//出差外出后消除的异常
List<Map<String,Object>> offsetEvectionAnomaly = (List<Map<String,Object>>)params.get("offsetEvectionAnomaly");
//分析日期
String analysisDate = Util.null2String(params.get("analysisDate"));
//经过请假外出处理过的异常项目
List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)params.get("abnormalClockInList");
//单位小时
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
if (0 == edsc){
resultMap.put("attendanceDuration",edsc);
return resultMap;
}
//单位分钟
/**
*
*/
abnormalClockInList = abnormalClockInList.stream().filter(e->e.get("bdlx").equals(ClassSegmentTypeEnum.WORK_TIME.getKey())).collect(Collectors.toList());
double abnormalTime = 0;
for (Map<String,Object> abnormalClockInMap : abnormalClockInList){
String hsdw = Util.null2String(abnormalClockInMap.get("hsdw"));
double itemduration = Double.valueOf(Util.null2String(abnormalClockInMap.get("itemduration")));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInMap.get("itemType");
String kczgsc = Util.null2String(abnormalClockInMap.get("kczgsc"));
if (itemType == AttendanceItemTypeEnum.MISSE_CARD){
//早上漏卡
abnormalTime = abnormalTime + edsc*60;
}
if (!CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
continue;
}
if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){
abnormalTime = abnormalTime + edsc*Double.valueOf(itemduration)*60;
}else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){
abnormalTime = abnormalTime+Double.valueOf(itemduration)*60;
}else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){
abnormalTime = abnormalTime+Double.valueOf(itemduration);
}
}
/**
*
*/
double askForLeaveTime = removeAskForLeave(analysisDate,scheduleResult,askForLeaveList,askForLeaveItems,offsetAskForLeaveAnomaly);
/**
*
*/
double evectionTimeTime = removeEvection(analysisDate,scheduleResult,evectionList,evectionItems,offsetEvectionAnomaly);
edsc = edsc-abnormalTime-askForLeaveTime-evectionTimeTime;
if (edsc < 0){
edsc=0;
}
resultMap.put("attendanceDuration",String.format ("%.2f", edsc));
return resultMap;
}
public double removeAskForLeave(String analysisDate,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> askForLeaveList,
Map<String,Map<String,Object>> askForLeaveItems,List<Map<String, Object>> offsetAskForLeaveAnomaly){
double employTime = 0;
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
for (int i=0;i<askForLeaveList.size();i++){
//请假时长
String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc"));
//请假项目
Map<String,Object> askForLeaveItem = askForLeaveItems.get(askForLeaveList.get(i).get("jqlx"));
//半天请假
String btj = Util.null2String(askForLeaveList.get(i).get("btj"));
//作用时段
String zysd = Util.null2String(askForLeaveItem.get("zysd"));
if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){
continue;
}
if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){
//弹性请假,半天出差
if (CheckBoxEnum.CHECKED.getKey().equals(btj)){
//半天出差
employTime = employTime + edsc*30;
}else if (!"".equals(qjsc)){
//时长请假
if (offsetAskForLeaveAnomaly.size() > 0){
List<Map<String, Object>> list = offsetAskForLeaveAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(offsetAskForLeaveAnomaly.size()) *Double.valueOf(qjsc)*60);
}
}
}else {
//按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
}
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,askForLeaveList.get(i));
}
}
}
return employTime;
}
public double removeEvection(String analysisDate,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> evectionList,
Map<String,Map<String,Object>> evectionItems,List<Map<String, Object>> offsetEvectionAnomaly){
double employTime = 0;
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
for (int i=0;i<evectionList.size();i++){
//请假时长
String ccsc = Util.null2String(evectionList.get(i).get("ccsc"));
//请假项目
Map<String,Object> askForLeaveItem = evectionItems.get(evectionList.get(i).get("cclx"));
//半天请假
String btcc = Util.null2String(evectionList.get(i).get("btcc"));
//作用时段
String zysd = Util.null2String(askForLeaveItem.get("zysd"));
if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){
continue;
}
if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){
//弹性请假,半天出差
if (CheckBoxEnum.CHECKED.getKey().equals(btcc)){
//半天出差
employTime = employTime + edsc*30;
}else if (!"".equals(ccsc)){
//时长请假
if (offsetEvectionAnomaly.size() > 0){
List<Map<String, Object>> list = offsetEvectionAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(offsetEvectionAnomaly.size()) *Double.valueOf(ccsc)*60);
}
}
}else {
//按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
}
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,evectionList.get(i));
}
}
}
return employTime;
}
}

@ -39,4 +39,8 @@ public interface UtilService {
*/
List<Map<String,Map<String,Object>>> getClockInPointCmd(Map<String,Object> params);
/**
*
*/
double computeAttendanceDuration(Map<String,Object> params);
}

@ -3,6 +3,14 @@ package com.engine.attendance.attendanceanalysis.service;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface WorkOverTimeService {
/**
*
* @param params
* @return
*/
List<Map<String, Object>> recordWorkOverTime(Map<String,Object> params);
}

@ -2,10 +2,7 @@ package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.item.*;
import com.engine.attendance.attendanceanalysis.service.AbnormalAttendanceService;
import com.engine.attendance.enums.AccountingUnitEnum;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.attendance.enums.WorkForTimeEnum;
import com.engine.attendance.enums.*;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
@ -71,21 +68,29 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
double hsl = Float.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
saveWorkTimeBeLateParam.put("item",workTimeBeLateItems.get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifBeLate=true;
}
}else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx)
@ -106,21 +111,29 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
String jbwdhlfzs = Util.null2String(workTimeBeLateItems.get(0).get("jbwdhlfzs"));
if (!"".equals(jbwdhlfzs) && between > Integer.valueOf(jbwdhlfzs)){
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
saveWorkTimeBeLateParam.put("item",getBeLateItems(lateParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifBeLate=true;
}
}
@ -139,22 +152,30 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String thfghlfzs = Util.null2String(workTimeBeLateItems.get(0).get("thfghlfzs"));
if (!"".equals(thfghlfzs) && between> Integer.valueOf(thfghlfzs)){
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
saveWorkTimeBeLateParam.put("item",getBeLateItems(lateParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifBeLate=true;
}
}
@ -208,6 +229,20 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
double hsl = Float.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
@ -215,13 +250,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifLeaveEarly=true;
}
}else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx)
@ -242,22 +273,28 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
String jbzzhlfzs = Util.null2String(workTimeBeLateItems.get(0).get("jbzzhlfzs"));
if (!"".equals(jbzzhlfzs) && between > Integer.valueOf(jbzzhlfzs)){
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifLeaveEarly=true;
}
}
@ -276,21 +313,30 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String tqlghlfzs = Util.null2String(workTimeBeLateItems.get(0).get("tqlghlfzs"));
if (!"".equals(tqlghlfzs) && between> Integer.valueOf(tqlghlfzs)){
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue();
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
// saveWorkTimeBeLateParam.put("userId",userId);
// saveWorkTimeBeLateParam.put("date",analysisDate);
saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
resultList.add(saveWorkTimeBeLateParam);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add(classInfo);
// saveWorkTimeBeLateParam.put("classInfo", classInfoList);
// saveWorkTimeBeLateParam.put("cqzt","1");
// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam));
// ifLeaveEarly=true;
}
}

@ -1,5 +1,6 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.ComputeAttendanceDurationCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.recordDataCmd;
@ -56,10 +57,7 @@ public class UtilServiceImpl extends Service implements UtilService {
sql = sql +bcxxIds+") order by b.kssj";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcxx"))));
String edsc = "8";
if (dataList.size()>0){
edsc = Util.null2String(dataList.get(0).get("edsc"));
}
dataMap.entrySet().forEach(e -> {
List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey());
for (Map<String,Object> scheduling :schedulingList){
@ -129,7 +127,11 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("bcxx","0");
map.put("bcsdxx","");
map.put("edsc",edsc);
if (dataList.size()>0){
map.put("edsc",Util.null2String(dataList.get(0).get("edsc")));
}else {
map.put("edsc","0");
}
map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey());
map.put("dtkssj",overtimePlan.get("kssj"));
map.put("dtjssj",overtimePlan.get("jssj"));
@ -243,4 +245,10 @@ public class UtilServiceImpl extends Service implements UtilService {
return (List<Map<String,Map<String,Object>>>)resultMap.get("clcokInTimeData");
}
@Override
public double computeAttendanceDuration(Map<String, Object> params) {
Map<String,Object> resultMap = commandExecutor.execute(new ComputeAttendanceDurationCmd(params));
return Double.valueOf(resultMap.get("attendanceDuration").toString());
}
}

@ -92,8 +92,6 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
String realityStartTime = "";
//加班实际结束时间
String realityEndime = "";
//申请时间
int applicationTime = DateUtil.getBetWeenMinutes(kssj,jssj);
resultLists.add(workOverTimeItems);
@ -178,7 +176,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
}
/**
*
*
*/
List<Map<String,Object>> beLateAbnormal = abnormalClockInList.stream().filter(e->e.get("pointTime").toString().split(" ")[1].equals(dtkssj)).collect(Collectors.toList());
double beLateTime = 0;
@ -257,6 +255,8 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
if (!"".equals(jbqsfzs)){
if (jbsc < Integer.valueOf(jbqsfzs)){
//小于最小加班分钟数不算加班
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0");
continue;
}else if (jbsc >= Integer.valueOf(jbqsfzs) && !"".equals(ccqszhdhsfzs)){
jbsc = Double.valueOf(Utils.getItemdurationDown(Integer.valueOf(ccqszhdhsfzs),AccountingUnitEnum.MINUTES.getKey(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES)).intValue();
@ -499,11 +499,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
Map<String,Object>> evectionItems,List<Map<String, Object>> offsetEvectionAnomaly){
int askForLeaveTime=0;
for (int i=0;i<evectionList.size();i++){
Map<String, Object> resultMap = Maps.newHashMap();
resultMap.put("item",evectionList.get(i).get("cclx"));
//请假时长
//出差时长
String qjsc = Util.null2String(evectionList.get(i).get("ccsc"));
//请假项目
//出差项目
Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx"));
//作用时段
String zysd = Util.null2String(evectionItem.get("zysd"));

@ -305,6 +305,10 @@ public class AttendanceAnalysisWrapper extends Service {
*/
List<Map<String,Object>> recordWorkOverTime= updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
/**
*
*/
double attendanceDuration = utilService.computeAttendanceDuration(recordAbnormalParam);
/**
*
@ -313,6 +317,7 @@ public class AttendanceAnalysisWrapper extends Service {
recordData.addAll(vactionList);
recordData.addAll(evectionResultList);
recordData.addAll(abnormalClockInListByEvction);
recordData.addAll(recordWorkOverTime);
recordParam.put("recordData",recordData);
recordParam.put("recordDataTime",utilService.getNeedRecordClockInTime(clcokInTimeData));
log.info("recordParam : {}",recordParam);

Binary file not shown.

@ -192,9 +192,9 @@ public class Test {
// System.out.println(lists2.size());
BigDecimal s = new BigDecimal(110.0);
System.out.println(String.format ("%.2f", 1.8333));
System.out.println(DateUtil.lastMonth("2023-11-23",DateUtil.yyyyMMdd));
System.out.println(8.0*0.3);
//System.out.println(Utils.getItemdurationDown(15,AccountingUnitEnum.MINUTES.getKey(),59,AccountingUnitEnum.MINUTES));
// Calendar calendar = Calendar.getInstance();
// calendar.set(Integer.valueOf(analysisDate.split("-")[0]), Integer.valueOf(analysisDate.split("-")[1]) - 1, 1);

Loading…
Cancel
Save