Commit afa3dcc4 authored by 廖旭伟's avatar 廖旭伟

考勤异常处理从新生成考勤绩效分数核查数据

parent c02fc003
package com.mortals.xhx.module.attendance.service; package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorQuery;
import java.util.Date; import java.util.Date;
...@@ -26,4 +28,10 @@ public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRec ...@@ -26,4 +28,10 @@ public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRec
* @param date * @param date
*/ */
void doAutoProcess(Date date); void doAutoProcess(Date date);
/**
* 按时间从新生成已处理的考勤绩效核查数据
* @param query
*/
void doReprocess(AttendanceRecordErrorQuery query, Context context);
} }
\ No newline at end of file
...@@ -26,6 +26,8 @@ import com.mortals.framework.model.Context; ...@@ -26,6 +26,8 @@ import com.mortals.framework.model.Context;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordErrorDao; import com.mortals.xhx.module.attendance.dao.AttendanceRecordErrorDao;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -207,4 +209,98 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At ...@@ -207,4 +209,98 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
}); });
} }
} }
@Override
public void doReprocess(AttendanceRecordErrorQuery query, Context context) {
List<String> dateList = getDatesBetween(query.getErrorDateTimeStart(), query.getErrorDateTimeEnd());
for (String day : dateList) {
query.setErrorDateTimeStart(day);
query.setErrorDateTimeEnd(day);
List<AttendanceRecordErrorEntity> list = this.find(query);
if (CollectionUtils.isNotEmpty(list)) {
for (AttendanceRecordErrorEntity entity : list) {
if (YesNoEnum.YES.getValue() == entity.getProcessStatus()) {
//判断后打绩效
String ruleCode = "";
if (ErrorStatusEnum.早退.getValue() == DataUtil.converStr2Int(entity.getProcessResult(), 3)) {
if (!ObjectUtils.isEmpty(entity.getErrorDateTime()) && !ObjectUtils.isEmpty(entity.getGoOffDateTime())) {
//判断时间差定义
Long earlyMin = DateUtil.between(entity.getErrorDateTime(), entity.getGoOffDateTime(), DateUnit.MINUTE);
if (earlyMin >= 0L && earlyMin < 5L) {
//早退5分钟内
ruleCode = "ATTEND1002";
}
if (earlyMin >= 5L && earlyMin < 60L) {
//早退5分钟内
ruleCode = "ATTEND1004";
}
if (earlyMin >= 60L) {
//早退5分钟内
ruleCode = "ATTEND1006";
}
} else {
ruleCode = "ATTEND1002";
}
} else if (ErrorStatusEnum.迟到.getValue() == DataUtil.converStr2Int(entity.getProcessResult(), 3)) {
if (!ObjectUtils.isEmpty(entity.getErrorDateTime()) && !ObjectUtils.isEmpty(entity.getGoOffDateTime())) {
Long lateMin = DateUtil.between(entity.getErrorDateTime(), entity.getGoOffDateTime(), DateUnit.MINUTE);
if (lateMin >= 0L && lateMin < 5L) {
//迟到5分钟内
ruleCode = "ATTEND1001";
}
if (lateMin >= 5L && lateMin < 60L) {
//迟到5-60
ruleCode = "ATTEND1003";
}
if (lateMin >= 60L) {
//迟到60分钟以上
ruleCode = "ATTEND1005";
}
} else {
//早退5分钟内
ruleCode = "ATTEND1001";
}
} else if (ErrorStatusEnum.缺卡.getValue() == DataUtil.converStr2Int(entity.getProcessResult(), 3)) {
ruleCode = "ATTEND1007";
}
if (!ObjectUtils.isEmpty(ruleCode)) {
AttendSaveReq attendSaveReq = new AttendSaveReq();
attendSaveReq.setAttendanceGroupId(entity.getAttendanceGroupId());
attendSaveReq.setAttendanceGroupName(entity.getAttendanceGroupName());
attendSaveReq.setAttendanceDate(entity.getActualAttendanceDateTime());
attendSaveReq.setErrorTime(entity.getErrorDateTime());
attendSaveReq.setGoOffTimeStr(entity.getGoOrOff());
attendSaveReq.setActualAttendTime(entity.getActualAttendanceDateTime());
attendSaveReq.setErrorResult(entity.getRemark());
attendSaveReq.setTitle("考勤");
attendSaveReq.setHappenTime(entity.getErrorDateTime());
attendSaveReq.setRuleCode(ruleCode);
attendSaveReq.setStaffId(entity.getStaffId());
performAttendRecordService.saveAttend(attendSaveReq, context);
}
}
}
}
}
}
private List<String> getDatesBetween(String startDateStr, String endDateStr) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(startDateStr, formatter);
LocalDate endDate = LocalDate.parse(endDateStr, formatter);
List<String> dates = new ArrayList<>();
//这里是判断开始日期是否在结束日期之后或者=结束日期
while (startDate.isBefore(endDate) || startDate.isEqual(endDate)) {
String add = startDate.format(formatter);
dates.add(add);
startDate = startDate.plusDays(1);
}
return dates;
}
} }
\ No newline at end of file
...@@ -327,4 +327,24 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont ...@@ -327,4 +327,24 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
}*/ }*/
super.doListAfter(query, list, context); super.doListAfter(query, list, context);
} }
/**
* 从新生成已处理的绩效考勤核查数据
* @param query
* @return
*/
@PostMapping({"doReprocess"})
public Rest<String> doReprocess(@RequestBody AttendanceRecordErrorQuery query) {
Rest<String> ret = new Rest();
Context context = this.getContext();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
service.doReprocess(query,context);
}
});
thread.start();
return Rest.ok();
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment