Commit e4faebfb authored by wenqy's avatar wenqy

异常处理撤销 考勤情况

parent 0ad72915
......@@ -11,7 +11,9 @@ import java.util.Map;
public enum ErrorStatusEnum {
缺卡(0, "缺卡"),
早退(1, "早退"),
迟到(2, "迟到");
迟到(2, "迟到"),
正常(3, "正常");
private Integer value;
private String desc;
......
package com.mortals.xhx.module.attendance.model;
import lombok.Data;
/**
* 出勤情况
*
* @author:
* @date: 2023/4/20 14:24
*/
@Data
public class AttendanceStatus {
/**
* 需要出勤人数
*/
private Integer needAttNum;
/**
* 未出勤
*/
private Integer noAtt;
/**
* 出勤率
*/
private String attPercentage;
/**
* 迟到
*/
private Integer beLate;
/**
* 早退
*/
private Integer leaveEarly;
/**
* 缺卡
*/
private Integer lackOfCards;
}
......@@ -19,4 +19,9 @@ public class AttendanceRecordErrorVo extends BaseEntityLong {
*/
private String goOrOff;
/**
* 接收批量处理的结果
*/
private List<AttendanceRecordErrorEntity> recordErrorEntities;
}
......@@ -24,5 +24,15 @@ public class AttendanceRecordVo extends BaseEntityLong {
/** 结束 打卡日期 */
private String attendanceDateEnd;
/**
* 班次id
*/
private Long classId;
/**
* 班组id
*/
private Long groupId;
}
......@@ -224,7 +224,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
AttendanceClassDetailQuery attendanceClassDetailQuery = new AttendanceClassDetailQuery();
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(attendanceClassDetailQuery.classId(attendanceClassEntity.getId()));
Integer orderNum = 0;
if (detailEntity!=null&&detailEntity.size()>0){
if (detailEntity!=null||detailEntity.size()==0){
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) {
orderNum++;
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
......
......@@ -10,6 +10,7 @@ import com.mortals.xhx.module.attendance.service.AttendanceClassService;
import com.mortals.xhx.module.attendance.service.AttendanceGroupService;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -61,6 +62,17 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
}
@Override
protected void doListBefore(AttendanceRecordEntity query, Map<String, Object> model, Context context) throws AppException {
if (query.getClassId()!=null){
query.setShiftsId(query.getClassId());
}
if (query.getGroupId()!=null){
query.setAttendanceGroupId(query.getGroupId());
}
super.doListBefore(query, model, context);
}
@Override
protected int doListAfter(AttendanceRecordEntity query, Map<String, Object> model, Context context) throws AppException {
......@@ -122,7 +134,59 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
recordEntity.setAttendanceRecordDetailList(orderList);
}
}
model.put("dyncColumns", dsyncColumns);
//出勤情况
//总人数
Integer total = (Integer)model.get("total");
//未出勤
Integer noAtt = 0;
//迟到
Integer beLate = 0;
//早退
Integer leaveEarly = 0;
//缺卡
Integer lackOfCards = 0;
for (AttendanceRecordEntity attendanceRecordEntity : list) {
boolean a = true;
for (AttendanceRecordDetailEntity item : attendanceRecordEntity.getAttendanceRecordDetailList()) {
if (item.getGoWorkResult()==3){
lackOfCards=lackOfCards+1;
}
if (item.getGoWorkResult()==4){
beLate = beLate+1;
}
if (item.getOffWorkResult()==3){
lackOfCards=lackOfCards+1;
}
if (item.getOffWorkResult()==5){
leaveEarly = leaveEarly +1;
}
if (item.getGoWorkResult()!=3 || item.getOffWorkResult()!=3){
a = false;
}
}
if (a){
noAtt = noAtt+1;
}
}
String attPercentage = "";
if (total!=0){
float l = ((total - noAtt) / total)*100;
attPercentage =l+"%";
}else {
attPercentage = "0";
}
AttendanceStatus attendanceStatus = new AttendanceStatus();
attendanceStatus.setNeedAttNum(total);
attendanceStatus.setAttPercentage(attPercentage);
attendanceStatus.setNoAtt(noAtt);
attendanceStatus.setBeLate(beLate);
attendanceStatus.setLeaveEarly(leaveEarly);
attendanceStatus.setLackOfCards(lackOfCards);
model.put("attendanceStatus",attendanceStatus);
return super.doListAfter(query, model, context);
}
}
......@@ -8,10 +8,12 @@ import com.mortals.framework.service.IUser;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.ErrorStatusEnum;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -71,7 +73,7 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "errorStatus", paramService.getParamBySecondOrganize("AttendanceRecordError","errorStatus"));
this.addDict(model, "errorStatus", ErrorStatusEnum.getEnumMap());
this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("AttendanceRecordError","processStatus"));
this.addDict(model,"deptId",deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getDeptName())));
this.addDict(model,"groupId",attendanceGroupService.find(new AttendanceGroupQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getGroupName())));
......@@ -80,13 +82,14 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
}
@PostMapping(value = "disposeError")
@PostMapping(value = "revokeError")
public Rest<String> disposeError(@RequestBody AttendanceRecordErrorEntity query) {
Rest<String> ret = new Rest();
Context context = this.getContext();
query.setOpertor(context.getUser().getRealName());
query.setOperDateTime(new Date());
query.setProcessStatus(1);
query.setProcessStatus(0);
query.setProcessResult("已撤销处理");
errorService.update(query);
DateUtils.convertTime2Str(query.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd);
......@@ -101,34 +104,105 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntity = attendanceRecordDetailService.find(detailQuery);
for (AttendanceRecordDetailEntity recordDetailEntity : attendanceRecordDetailEntity) {
Date goWorkDate = recordDetailEntity.getGoWorkDate();
Date offWorkDate = recordDetailEntity.getOffWorkDate();
if (query.getProcessResult().contains("正常")){
if (goWorkDate.getTime()==query.getGoOffDateTime().getTime()){
recordDetailEntity.setGoWorkResult(1);
if (query.getGoOrOff().equals("上班")){
if (query.getErrorStatus()==0){
recordDetailEntity.setGoWorkResult(3);
}
if (offWorkDate.getTime()==query.getGoOffDateTime().getTime()){
recordDetailEntity.setOffWorkResult(1);
if (query.getErrorStatus()==2){
recordDetailEntity.setGoWorkResult(4);
}
}
if (query.getProcessResult().contains("早退")){
if (offWorkDate.getTime()==query.getGoOffDateTime().getTime()){
recordDetailEntity.setOffWorkResult(5);
if (query.getGoOrOff().equals("下班")){
if (query.getErrorStatus()==0){
recordDetailEntity.setOffWorkResult(3);
}
}
if (query.getProcessResult().contains("迟到")){
if (goWorkDate.getTime()==query.getGoOffDateTime().getTime()){
recordDetailEntity.setGoWorkResult(4);
if (query.getErrorStatus()==1){
recordDetailEntity.setOffWorkResult(5);
}
}
attendanceRecordDetailService.update(recordDetailEntity);
}
return Rest.ok();
}
@Override
protected void saveBefore(AttendanceRecordErrorEntity entity, Map<String, Object> model, Context context) throws AppException {
for (AttendanceRecordErrorEntity recordErrorEntity : entity.getRecordErrorEntities()) {
recordErrorEntity.setProcessStatus(entity.getProcessStatus());
recordErrorEntity.setProcessResult(entity.getProcessResult());
recordErrorEntity.setOpertor(context.getUser().getRealName());
recordErrorEntity.setOperDateTime(new Date());
recordErrorEntity.setRemark(entity.getRemark());
}
this.batchSave(entity.getRecordErrorEntities());
for (AttendanceRecordErrorEntity item : entity.getRecordErrorEntities()) {
DateUtils.convertTime2Str(item.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd);
AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setStaffId(item.getStaffId());
attendanceRecordQuery.setAttendanceDateStart(DateUtils.convertTime2Str(item.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd));
attendanceRecordQuery.setAttendanceDateEnd(DateUtils.convertTime2Str(item.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd));
AttendanceRecordEntity attendanceRecordEntity = attendanceRecordService.selectOne(attendanceRecordQuery);
AttendanceRecordDetailQuery detailQuery = new AttendanceRecordDetailQuery();
detailQuery.setRecordId(attendanceRecordEntity.getId());
detailQuery.setShiftsId(item.getShiftsId());
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntity = attendanceRecordDetailService.find(detailQuery);
for (AttendanceRecordDetailEntity recordDetailEntity : attendanceRecordDetailEntity) {
Date goWorkDate = recordDetailEntity.getGoWorkDate();
Date offWorkDate = recordDetailEntity.getOffWorkDate();
if (item.getProcessResult().contains("正常")){
if (!ObjectUtils.isEmpty(goWorkDate)){
if (goWorkDate.getTime()==item.getGoOffDateTime().getTime()){
recordDetailEntity.setGoWorkResult(1);
}
}else {
if (item.getGoOrOff().equals("上班")){
recordDetailEntity.setGoWorkResult(1);
}
}
if (!ObjectUtils.isEmpty(offWorkDate)){
if (offWorkDate.getTime()==item.getGoOffDateTime().getTime()){
recordDetailEntity.setOffWorkResult(1);
}
}else {
if (item.getGoOrOff().equals("下班")){
recordDetailEntity.setOffWorkResult(1);
}
}
}
if (item.getProcessResult().contains("早退")){
if (!ObjectUtils.isEmpty(offWorkDate)){
if (offWorkDate.getTime()==item.getGoOffDateTime().getTime()){
recordDetailEntity.setOffWorkResult(5);
}
}else{
if (item.getGoOrOff().equals("下班")){
recordDetailEntity.setOffWorkResult(5);
}
}
}
if (item.getProcessResult().contains("迟到")){
if (!ObjectUtils.isEmpty(goWorkDate)){
if (goWorkDate.getTime()==item.getGoOffDateTime().getTime()){
recordDetailEntity.setGoWorkResult(4);
}
}else {
if (item.getGoOrOff().equals("上班")){
recordDetailEntity.setGoWorkResult(4);
}
}
}
attendanceRecordDetailService.update(recordDetailEntity);
}
}
super.saveBefore(entity, model, context);
}
@Override
protected int editAfter(Long id, Map<String, Object> model, AttendanceRecordErrorEntity entity, Context context) throws AppException {
this.addDict(model, "errorStatus", paramService.getParamBySecondOrganize("AttendanceRecordDetail","goWorkResult"));
......
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