liuliang
parent
2f11bc7cbb
commit
0290e1f04f
Binary file not shown.
@ -0,0 +1,11 @@
|
||||
package com.api.attendance.workflow;
|
||||
|
||||
import com.engine.attendance.workflow.web.ProcessSubmitCheckApi;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path("/attendance/processsubmitcheck")
|
||||
@Slf4j
|
||||
public class ProcessSubmitCheckActionApi extends ProcessSubmitCheckApi {
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤分析模块
|
||||
## 用于计算分析人员的考勤,算出正常上下班、加班、早退、迟到等一些列考勤项目,并入到出勤结果表
|
||||
|
@ -0,0 +1,55 @@
|
||||
package com.engine.attendance.attendanceanalysis.cmd;
|
||||
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.core.interceptor.CommandContext;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 人员旷工
|
||||
*/
|
||||
public class absenteeismCmd extends AbstractCommonCommand<Map<String,Object>> {
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
public absenteeismCmd(Map<String,Object> params){
|
||||
this.params=params;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
//作用时段
|
||||
String workfor = Util.null2String(params.get("workfor"));
|
||||
String time = Util.null2String(params.get("time"));
|
||||
String userId = Util.null2String(params.get("userId"));
|
||||
String itemType = Util.null2String(params.get("itemType"));
|
||||
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
|
||||
attendanceItems.stream().filter(e -> {
|
||||
//项目类型
|
||||
String xmlx = Util.null2String(e.get("xmlx"));
|
||||
//作用时段
|
||||
String zysd = Util.null2String(e.get("zysd"));
|
||||
//最小核算分钟数(不包含)
|
||||
String zxhsl = Util.null2String(e.get("zxhsl"));
|
||||
//最大核算分钟数(包含)
|
||||
String zdhsl = Util.null2String(e.get("zdhsl"));
|
||||
if( .equals(xmlx) && workfor.equals(zysd)){
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return false;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.engine.attendance.attendanceanalysis.job;
|
||||
|
||||
|
||||
import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper;
|
||||
import com.engine.attendance.workflow.service.ProcessSubmitCheckService;
|
||||
import com.engine.attendance.workflow.service.impl.ProcessSubmitCheckServiceImpl;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.Util;
|
||||
import weaver.hrm.User;
|
||||
import weaver.interfaces.schedule.BaseCronJob;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class AttendanceAnalysisJob extends BaseCronJob {
|
||||
|
||||
|
||||
private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class);
|
||||
@Override
|
||||
public void execute() {
|
||||
log.info("********AttendanceAnalysisJob start********");
|
||||
String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3);
|
||||
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1);
|
||||
String sql = "select userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?";
|
||||
|
||||
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,beforeThreeDayDate,beforeOneDayDate);
|
||||
|
||||
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
|
||||
collect.entrySet().forEach(e -> {
|
||||
|
||||
});
|
||||
log.info("********AttendanceAnalysisJob end********");
|
||||
}
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package com.engine.attendance.attendanceanalysis.wrapper;
|
||||
|
||||
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
|
||||
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 考勤分析主题逻辑
|
||||
*/
|
||||
public class AttendanceAnalysisWrapper extends Service {
|
||||
|
||||
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
|
||||
|
||||
public void attendanceAnalysis(String userId, List<Map<String,Object>> dataList){
|
||||
String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3);
|
||||
String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(1);
|
||||
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1);
|
||||
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
|
||||
|
||||
/**获得人员考勤项目*/
|
||||
Map<String,Object> paramMap = new HashMap<>();
|
||||
paramMap.put("startDate","");
|
||||
paramMap.put("endDate","");
|
||||
paramMap.put("resourceId","85");
|
||||
paramMap.put("modeId","204");
|
||||
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
|
||||
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
|
||||
|
||||
|
||||
if (collect.size() == 0){
|
||||
//没有打卡数据,前一天记为全天旷工
|
||||
|
||||
|
||||
}else if (collect.size() == 1){
|
||||
//有1天有打卡数据
|
||||
if (collect.get(beforeOneDayDate) != null){
|
||||
//打卡数据为前一天
|
||||
|
||||
|
||||
}else {
|
||||
//否则前一天记为全天旷工
|
||||
|
||||
|
||||
}
|
||||
|
||||
}else if (collect.size() == 2){
|
||||
//有2天有打卡数据
|
||||
|
||||
//计算前一天考勤
|
||||
if (collect.get(beforeOneDayDate) != null){
|
||||
//打卡数据为前一天
|
||||
|
||||
|
||||
}else {
|
||||
//否则前一天记为全天旷工
|
||||
|
||||
|
||||
}
|
||||
|
||||
//计算第二天数据
|
||||
if (collect.get(beforeTwoDayDate) != null && collect.get(beforeOneDayDate) != null){
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else if (collect.size() == 3){
|
||||
//连续3天打卡
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤方案模块
|
||||
##
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.engine.attendance.attendancePlan.service;
|
||||
package com.engine.attendance.attendanceplan.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.engine.attendance.attendancePlan.service.impl;
|
||||
package com.engine.attendance.attendanceplan.service.impl;
|
||||
|
||||
import com.engine.attendance.attendancePlan.cmd.GetAttendanceItemsByPersonDataCmd;
|
||||
import com.engine.attendance.attendancePlan.service.AttendancePlanService;
|
||||
import com.engine.attendance.attendanceplan.cmd.GetAttendanceItemsByPersonDataCmd;
|
||||
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
|
||||
import com.engine.core.impl.Service;
|
||||
|
||||
import java.util.Map;
|
@ -1,9 +1,7 @@
|
||||
package com.engine.attendance.attendancePlan.web;
|
||||
package com.engine.attendance.attendanceplan.web;
|
||||
|
||||
import com.engine.attendance.attendancePlan.service.AttendancePlanService;
|
||||
import com.engine.attendance.attendancePlan.service.impl.AttendancePlanServiceImpl;
|
||||
import com.engine.attendance.persongroup.service.SchedulingResultsService;
|
||||
import com.engine.attendance.persongroup.service.impl.SchedulingResultsServiceImpl;
|
||||
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
|
||||
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
|
||||
import com.engine.common.util.ApiReturnTools;
|
||||
import com.engine.common.util.ParamUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤组件模块
|
||||
## person_group 人员分组功能组件
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.engine.attendance.persongroup.job.scheduling;
|
||||
package com.engine.attendance.component.persongroup.job.scheduling;
|
||||
|
||||
import com.engine.attendance.persongroup.job.scheduling.tactics.RegularScheduling;
|
||||
import com.engine.attendance.component.persongroup.job.scheduling.tactics.RegularScheduling;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.common.util.Utils;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.engine.attendance.persongroup.job.scheduling.tactics;
|
||||
package com.engine.attendance.component.persongroup.job.scheduling.tactics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface RegularScheduling {
|
@ -1,4 +1,4 @@
|
||||
package com.engine.attendance.persongroup.service;
|
||||
package com.engine.attendance.component.persongroup.service;
|
||||
|
||||
|
||||
import weaver.hrm.User;
|
@ -1,4 +1,4 @@
|
||||
package com.engine.attendance.persongroup.service;
|
||||
package com.engine.attendance.component.persongroup.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.engine.attendance.persongroup.service.impl;
|
||||
package com.engine.attendance.component.persongroup.service.impl;
|
||||
|
||||
|
||||
import com.engine.attendance.persongroup.service.PersonGroupService;
|
||||
import com.engine.attendance.component.persongroup.service.PersonGroupService;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.common.util.Utils;
|
||||
import com.engine.core.impl.Service;
|
@ -0,0 +1,28 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
public enum AttendanceItemType implements BaseEnum {
|
||||
LATE("0","迟到"),
|
||||
LEAVE_EARLY("1","早退"),
|
||||
ABSENTEESIM("2","旷工"),;
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
AttendanceItemType(String key,String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤流程模块
|
||||
##
|
||||
|
@ -1,4 +1,7 @@
|
||||
package com.engine.attendance.workflow.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface ProcessSubmitCheckService {
|
||||
Map<String,Object> processSubmitCheck(Map<String,Object> params);
|
||||
}
|
||||
|
@ -1,4 +0,0 @@
|
||||
package com.engine.attendance.workflow.web;
|
||||
|
||||
public class ProcessSubmitCheck {
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.engine.attendance.workflow.web;
|
||||
|
||||
import com.engine.attendance.workflow.service.ProcessSubmitCheckService;
|
||||
import com.engine.attendance.workflow.service.impl.ProcessSubmitCheckServiceImpl;
|
||||
import com.engine.common.util.ApiReturnTools;
|
||||
import com.engine.common.util.ParamUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class ProcessSubmitCheckApi {
|
||||
|
||||
private ProcessSubmitCheckService basicsetService = ServiceUtil.getService(ProcessSubmitCheckServiceImpl.class);
|
||||
/**
|
||||
* 提交流程检查
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/processSubmitCheck")
|
||||
@Produces({"text/plain"})
|
||||
public String processSubmitCheck(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
try {
|
||||
Map<String,Object> paramMap = ParamUtil.request2Map(request);
|
||||
Map<String,Object> dataMap = basicsetService.processSubmitCheck(paramMap);
|
||||
return ApiReturnTools.success(dataMap);
|
||||
}catch (Exception e){
|
||||
log.error("execute fail,catch error: [{}]",e);
|
||||
return ApiReturnTools.error("500","processSubmitCheck error");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.engine.common.exception;
|
||||
|
||||
public class ExceptionUtil {
|
||||
public static String getRealMessage(Throwable e) {
|
||||
while (e != null) {
|
||||
Throwable cause = e.getCause();
|
||||
if (cause == null) {
|
||||
return e.getMessage();
|
||||
}
|
||||
e = cause;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
package com.engine.common.exception;
|
||||
|
||||
public class SalaryRunTimeException extends RuntimeException {
|
||||
public SalaryRunTimeException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public SalaryRunTimeException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public SalaryRunTimeException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤方案模块
|
||||
##
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤分析模块
|
||||
## 用于计算分析人员的考勤,算出正常上下班、加班、早退、迟到等一些列考勤项目,并入到出勤结果表
|
||||
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤组件模块
|
||||
## person_group 人员分组功能组件
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤流程模块
|
||||
##
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue