Commit 5332d7a4 authored by 姬鋆屾's avatar 姬鋆屾
parents 9aa2b17f 479f71df
...@@ -19,18 +19,23 @@ ...@@ -19,18 +19,23 @@
<span class="ml10">修改为</span> <span class="ml10">修改为</span>
</div> </div>
<div class="mt10"> <div class="mt10">
<!-- 处理异常状态 -->
<!--
<Field label="" v-model="dealParams.processResult" type="select" :enumData="dict.errorStatus"/>
-->
<!-- 处理异常状态 -->
<el-select v-model="dealParams.processResult"> <el-select v-model="dealParams.processResult">
<el-option <el-option
v-for='($label, $value) in dict.errorStatus' v-for='($label, $value) in dict.errorStatus'
:key="$value" :key="$value"
:label="$label" :label="$label"
:value="$label"> :value="$value">
</el-option> </el-option>
</el-select> </el-select>
<!-- 早退/迟到 --> <!-- 早退/迟到 -->
<el-input style="width:220px" placeholder="请输入数字" :maxlength="4" v-model="duration" <el-input style="width:220px" placeholder="请输入数字" :maxlength="4" v-model="duration"
v-if="dealParams.processResult == '迟到'|| dealParams.processResult == '早退'" v-if="dealParams.processResult == '1'|| dealParams.processResult == '2'"
class="ml20" type="number"> class="ml20" type="number">
<template slot="append">分钟</template> <template slot="append">分钟</template>
</el-input> </el-input>
...@@ -44,7 +49,7 @@ ...@@ -44,7 +49,7 @@
<div class="mt20"> <div class="mt20">
<el-button type="primary" @click="saveForm">确定</el-button> <el-button type="primary" @click="saveForm">确定</el-button>
<el-button @click="cancleFn">取消</el-button> <el-button @click="cancleFn">取消</el-button>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
...@@ -54,7 +59,7 @@ ...@@ -54,7 +59,7 @@
export default { export default {
name: "AttendanceRecordDetail", name: "AttendanceRecordDetail",
created() { created() {
}, },
data() { data() {
return { return {
...@@ -65,6 +70,7 @@ ...@@ -65,6 +70,7 @@
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction:"rtl", direction:"rtl",
toString: ["processResult"],
// 表单校验 // 表单校验
rules: { rules: {
staffName: [ staffName: [
...@@ -77,6 +83,8 @@ ...@@ -77,6 +83,8 @@
}, },
dealParams:{ dealParams:{
remark:'', remark:'',
errorStatus:null,
durtion:0,
processResult:'', processResult:'',
recordErrorEntities:[],//处理员工 recordErrorEntities:[],//处理员工
processStatus:1//处理状态 processStatus:1//处理状态
...@@ -131,8 +139,10 @@ ...@@ -131,8 +139,10 @@
this.$message.error('请选择处理结果') this.$message.error('请选择处理结果')
return return
} }
if(this.duration && (this.dealParams.processResult == '早退' || this.dealParams.processResult == '迟到')){ this.dealParams.errorStatus=this.dealParams.processResult
this.dealParams.processResult = this.dealParams.processResult + this.duration +'分钟' if(this.duration && (this.dealParams.processResult == '1' || this.dealParams.processResult == '2')){
this.dealParams.processResult =this.dict.errorStatus[this.dealParams.processResult] + this.duration +'分钟'
this.dealParams.durtion=this.duration
} }
// 保存结果处理 // 保存结果处理
this.$post(this.urls.saveUrl,this.dealParams).then(res => { this.$post(this.urls.saveUrl,this.dealParams).then(res => {
...@@ -145,6 +155,8 @@ ...@@ -145,6 +155,8 @@
this.open = false this.open = false
this.dealParams = { this.dealParams = {
remark:'', remark:'',
errorStatus:null,
durtion:0,
processResult:'', processResult:'',
recordErrorEntities:[],//处理员工 recordErrorEntities:[],//处理员工
processStatus:1//处理状态 processStatus:1//处理状态
......
...@@ -91,14 +91,12 @@ ...@@ -91,14 +91,12 @@
{ {
name: "deptId", name: "deptId",
type: "select", type: "select",
label: "全部部门", label: "全部部门"
fuzzy: false
}, },
{ {
name: "groupId", name: "groupId",
type: "select", type: "select",
label: "全部考勤组", label: "全部考勤组"
fuzzy: false
}, },
/* { /* {
name: "classId", name: "classId",
...@@ -109,38 +107,34 @@ ...@@ -109,38 +107,34 @@
{ {
name: "errorStatus", name: "errorStatus",
type: "select", type: "select",
label: "全部异常状态", label: "全部异常状态"
fuzzy: false
}, },
{ {
name: "processStatus", name: "processStatus",
type: "select", type: "select",
label: "全部处理状态", label: "全部处理状态"
fuzzy: false
}, },
{ {
name:'attendanceDateStart', name:'errorDateTimeStart',
type: "date", type: "date",
label: "异常开始时间", label: "异常开始时间"
fuzzy: false
}, },
{ {
name:'attendanceDateEnd', name:'attendanceDateEnd',
type: "date", type: "date",
label: "异常结束时间", label: "errorDateTimeEnd"
fuzzy: false
}, },
{ {
name: "staffName", name: "staffName",
type: "text", type: "text",
label: "员工姓名", label: "员工姓名",
fuzzy: false fuzzy: true
}, },
{ {
name: "phoneNumber", name: "phoneNumber",
type: "text", type: "text",
label: "手机号", label: "手机号",
fuzzy: false fuzzy: true
}, },
], ],
columns: [ columns: [
......
...@@ -33,7 +33,7 @@ public class AttendanceSummaryTaskImpl implements ITaskExcuteService { ...@@ -33,7 +33,7 @@ public class AttendanceSummaryTaskImpl implements ITaskExcuteService {
} }
cacheService.set(SUMMARY_TASK_KEY,"true",600); cacheService.set(SUMMARY_TASK_KEY,"true",600);
attendanceStatService.doAttendanceSummary(null); attendanceStatService.doAttendanceSummary(null);
cacheService.set(SUMMARY_TASK_KEY,"false",60); cacheService.expire(SUMMARY_TASK_KEY,1);
}catch (Exception e){ }catch (Exception e){
} }
......
...@@ -333,6 +333,7 @@ public class DingMessageController { ...@@ -333,6 +333,7 @@ public class DingMessageController {
if(ObjectUtils.isEmpty(balanceEntity)){ //先判断数据库里没有这个人的请假记录就初始化对象 if(ObjectUtils.isEmpty(balanceEntity)){ //先判断数据库里没有这个人的请假记录就初始化对象
attendanceVacationBalanceEntity.initAttrValue(); attendanceVacationBalanceEntity.initAttrValue();
} }
attendanceVacationBalanceEntity.setRemark(processInstanceId); // 将钉钉的事物id存入假期余额 用于判断是否为同一条请假数据
attendanceVacationBalanceEntity.setStaffId(staffEntity.getId()); attendanceVacationBalanceEntity.setStaffId(staffEntity.getId());
attendanceVacationBalanceEntity.setStaffName(staffEntity.getName()); attendanceVacationBalanceEntity.setStaffName(staffEntity.getName());
attendanceVacationBalanceEntity.setDeptId(staffEntity.getDeptId()); attendanceVacationBalanceEntity.setDeptId(staffEntity.getDeptId());
...@@ -574,19 +575,23 @@ public class DingMessageController { ...@@ -574,19 +575,23 @@ public class DingMessageController {
//审批状态为同意过后再修改假期余额 //审批状态为同意过后再修改假期余额
if(result.getResult().compareToIgnoreCase("AGREE") == 0){ if(result.getResult().compareToIgnoreCase("AGREE") == 0){
//更新假期余额表 AttendanceVacationBalanceEntity entity = balanceService.selectOne(new AttendanceVacationBalanceQuery().remark(processInstanceId));
if(ObjectUtils.isEmpty(balanceEntity)){ if(ObjectUtils.isEmpty(entity)){ //当表中没有这条processInstanceId关联的数据表示没有扣除假期(钉钉会推送两条余额数据过来 需要加这个判断)
attendanceVacationBalanceEntity.setCreateUserId(1L); //更新假期余额表
attendanceVacationBalanceEntity.setCreateTime(new Date()); if(ObjectUtils.isEmpty(balanceEntity)){
balanceService.save(attendanceVacationBalanceEntity); attendanceVacationBalanceEntity.setCreateUserId(1L);
}else{ attendanceVacationBalanceEntity.setCreateTime(new Date());
//更新对象必须传入id balanceService.save(attendanceVacationBalanceEntity);
attendanceVacationBalanceEntity.setId(balanceEntity.getId()); }else{
//更新对象必须传入id
attendanceVacationBalanceEntity.setUpdateUserId(1L); attendanceVacationBalanceEntity.setId(balanceEntity.getId());
attendanceVacationBalanceEntity.setUpdateTime(new Date());
balanceService.update(attendanceVacationBalanceEntity); attendanceVacationBalanceEntity.setUpdateUserId(1L);
attendanceVacationBalanceEntity.setUpdateTime(new Date());
balanceService.update(attendanceVacationBalanceEntity);
}
} }
} }
......
...@@ -24,4 +24,16 @@ public class AttendanceRecordErrorVo extends BaseEntityLong { ...@@ -24,4 +24,16 @@ public class AttendanceRecordErrorVo extends BaseEntityLong {
*/ */
private List<AttendanceRecordErrorEntity> recordErrorEntities; private List<AttendanceRecordErrorEntity> recordErrorEntities;
/** 开始 异常时间 */
private String errorDateTimeStart;
/** 结束 异常时间 */
private String errorDateTimeEnd;
private Integer duration;
} }
...@@ -31,6 +31,7 @@ public class ErrorSummaryVo { ...@@ -31,6 +31,7 @@ public class ErrorSummaryVo {
* 缺卡次数 * 缺卡次数
*/ */
private Integer morningTimes; private Integer morningTimes;
private Integer afternoonTimes;
/** /**
* 考勤汇总-迟到(次) * 考勤汇总-迟到(次)
*/ */
......
package com.mortals.xhx.module.attendance.model.vo; package com.mortals.xhx.module.attendance.model.vo;
import com.mortals.framework.annotation.Excel;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 请假汇总 * 请假汇总
*/ */
...@@ -35,4 +38,12 @@ public class LeaveSummaryVo { ...@@ -35,4 +38,12 @@ public class LeaveSummaryVo {
* 时长,单位秒 * 时长,单位秒
*/ */
private Integer duration; private Integer duration;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
} }
package com.mortals.xhx.module.attendance.service.impl; package com.mortals.xhx.module.attendance.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.busiz.h5.req.AttendSaveReq;
import com.mortals.xhx.busiz.h5.web.ApiWebPerformController; import com.mortals.xhx.busiz.h5.web.ApiWebPerformController;
import com.mortals.xhx.common.code.ErrorStatusEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.attendance.model.AttendanceClassDetailEntity; import com.mortals.xhx.module.attendance.model.AttendanceClassDetailEntity;
import com.mortals.xhx.module.attendance.model.AttendanceClassEntity; import com.mortals.xhx.module.attendance.model.AttendanceClassEntity;
import com.mortals.xhx.module.attendance.service.AttendanceClassDetailService; import com.mortals.xhx.module.attendance.service.AttendanceClassDetailService;
import com.mortals.xhx.module.attendance.service.AttendanceClassService; import com.mortals.xhx.module.attendance.service.AttendanceClassService;
import com.mortals.xhx.module.perform.service.PerformAttendRecordService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
...@@ -34,9 +41,13 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At ...@@ -34,9 +41,13 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
@Autowired @Autowired
private AttendanceClassService attendanceClassService; private AttendanceClassService attendanceClassService;
@Autowired
private PerformAttendRecordService attendRecordService;
@Autowired @Autowired
private ApiWebPerformController apiWebPerformController; private ApiWebPerformController apiWebPerformController;
@Autowired
private StaffService staffService;
@Override @Override
...@@ -65,9 +76,62 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At ...@@ -65,9 +76,62 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
}); });
} }
@Override @Override
protected void updateAfter(AttendanceRecordErrorEntity entity, Context context) throws AppException { protected void updateAfter(AttendanceRecordErrorEntity entity, Context context) throws AppException {
if (YesNoEnum.YES.getValue() == entity.getProcessStatus()) {
//判断后打绩效
String ruleCode = "";
if (ErrorStatusEnum.早退.getValue() == entity.getErrorStatus()) {
//判断时间差定义
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 if (ErrorStatusEnum.迟到.getValue() == entity.getErrorStatus()) {
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 if (ErrorStatusEnum.缺卡.getValue() == entity.getErrorStatus()) {
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("考勤:" + ErrorStatusEnum.getByValue(entity.getErrorStatus()).getDesc());
attendSaveReq.setHappenTime(entity.getErrorDateTime());
attendSaveReq.setRuleCode(ruleCode);
attendSaveReq.setStaffId(entity.getStaffId());
attendRecordService.saveAttend(attendSaveReq,context);
}
}
} }
} }
\ No newline at end of file
...@@ -27,6 +27,7 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity; ...@@ -27,6 +27,7 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
import com.mortals.xhx.module.attendance.service.AttendanceStatService; import com.mortals.xhx.module.attendance.service.AttendanceStatService;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -185,12 +186,32 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -185,12 +186,32 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
//汇总当前日期请假情况 //汇总当前日期请假情况
List<LeaveSummaryVo> leaveSummaryVoList = attendanceSummaryDao.getLeaveSummary(query); List<LeaveSummaryVo> leaveSummaryVoList = attendanceSummaryDao.getLeaveSummary(query);
if (CollectionUtils.isNotEmpty(leaveSummaryVoList)) { if (CollectionUtils.isNotEmpty(leaveSummaryVoList)) {
BigDecimal hour = new BigDecimal(3600); BigDecimal day = new BigDecimal(3600*24);
BigDecimal oneDay = new BigDecimal(1);
for (LeaveSummaryVo item : leaveSummaryVoList) { for (LeaveSummaryVo item : leaveSummaryVoList) {
String attendanceSummary = ""; String attendanceSummary = "";
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay())); AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (temp != null) { if (temp != null) {
BigDecimal leaveTime = new BigDecimal(item.getDuration()).divide(hour, 1, BigDecimal.ROUND_HALF_DOWN); BigDecimal leaveTime = new BigDecimal(item.getDuration()).divide(day, 1, BigDecimal.ROUND_HALF_DOWN);
String endStr = DateUtils.getStrDate(item.getEndTime());
String dayStr = query.getSummaryTime();
if(endStr.equals(dayStr)){
if(leaveTime.compareTo(oneDay)>=0){
// 整数部分
BigDecimal integerPart = leaveTime.setScale(0, RoundingMode.DOWN);
// 小数部分
BigDecimal fractionalPart = leaveTime.subtract(integerPart);
if(fractionalPart.compareTo(new BigDecimal(0))==0){
leaveTime = oneDay;
}else {
leaveTime = fractionalPart;
}
}
}else {
if(leaveTime.compareTo(oneDay)>=0){
leaveTime=oneDay;
}
}
temp.setGoTimes(0); //默认只要有请假,当天就不算全勤 temp.setGoTimes(0); //默认只要有请假,当天就不算全勤
LeaveTypeEnum leaveTypeEnum = LeaveTypeEnum.getByValue(item.getLeaveType()); LeaveTypeEnum leaveTypeEnum = LeaveTypeEnum.getByValue(item.getLeaveType());
if(leaveTypeEnum == null){ if(leaveTypeEnum == null){
...@@ -245,7 +266,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -245,7 +266,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
staffStat.setUpdateTime(new Date()); staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat); attendanceStaffStatService.update(staffStat);
}else { }else {
staffStat.setCreateTime(new Date()); staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l); staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat); attendanceStaffStatService.save(staffStat);
} }
...@@ -282,7 +303,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -282,7 +303,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
staffStat.setUpdateTime(new Date()); staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat); attendanceStaffStatService.update(staffStat);
}else { }else {
staffStat.setCreateTime(new Date()); staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l); staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat); attendanceStaffStatService.save(staffStat);
} }
...@@ -326,4 +347,5 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -326,4 +347,5 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
} }
return result; return result;
} }
} }
\ No newline at end of file
...@@ -143,22 +143,20 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont ...@@ -143,22 +143,20 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
for (AttendanceRecordErrorEntity recordErrorEntity : entity.getRecordErrorEntities()) { for (AttendanceRecordErrorEntity recordErrorEntity : entity.getRecordErrorEntities()) {
AttendanceRecordErrorEntity updateEntity = new AttendanceRecordErrorEntity(); AttendanceRecordErrorEntity updateEntity = new AttendanceRecordErrorEntity();
updateEntity.setId(recordErrorEntity.getId()); updateEntity.setId(recordErrorEntity.getId());
updateEntity.setErrorDateTime(recordErrorEntity.getErrorDateTime());
updateEntity.setGoOffDateTime(recordErrorEntity.getGoOffDateTime());
updateEntity.setProcessStatus(entity.getProcessStatus()); updateEntity.setProcessStatus(entity.getProcessStatus());
updateEntity.setGoOffDateTime(null);
updateEntity.setProcessResult(entity.getProcessResult()); updateEntity.setProcessResult(entity.getProcessResult());
updateEntity.setStaffId(recordErrorEntity.getStaffId());
updateEntity.setErrorStatus(entity.getErrorStatus());
updateEntity.setOpertor(context.getUser().getRealName()); updateEntity.setOpertor(context.getUser().getRealName());
updateEntity.setOperDateTime(new Date()); updateEntity.setOperDateTime(new Date());
updateEntity.setRemark(entity.getRemark()); updateEntity.setRemark(entity.getRemark());
updateEntity.setUpdateTime(new Date()); updateEntity.setUpdateTime(new Date());
updateEntity.setUpdateUserId(this.getContextUserId(getContext())); updateEntity.setUpdateUserId(this.getContextUserId(getContext()));
this.service.update(recordErrorEntity, getContext()); updateEntity.setDuration(entity.getDuration());
this.service.update(updateEntity, getContext());
} }
/*
if(!ObjectUtils.isEmpty(entity.getRecordErrorEntities())){
this.batchSave(entity.getRecordErrorEntities());
}
*/
for (AttendanceRecordErrorEntity item : entity.getRecordErrorEntities()) { for (AttendanceRecordErrorEntity item : entity.getRecordErrorEntities()) {
DateUtils.convertTime2Str(item.getErrorDateTime().getTime(), DateUtils.P_yyyy_MM_dd); DateUtils.convertTime2Str(item.getErrorDateTime().getTime(), DateUtils.P_yyyy_MM_dd);
...@@ -226,49 +224,6 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont ...@@ -226,49 +224,6 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
} }
@Override
protected int saveAfter(AttendanceRecordErrorEntity entity, Map<String, Object> model, Context context) throws AppException {
if (YesNoEnum.YES.getValue() == entity.getProcessStatus()) {
//已经处理,根据错误状态提交考勤绩效
String ruleCode = "";
if (ErrorStatusEnum.早退.getValue() == entity.getErrorStatus()) {
//判断时间差定义
//entity.getErrorStatus()
}
/* 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();
attendSaveReq.setErrorResult(entity.getRemark());
attendSaveReq.setExt();
attendSaveReq.setWorkNum();
attendSaveReq.setTitle();
attendSaveReq.setHappenTime(entity.getErrorDateTime());
attendSaveReq.setRuleCode(ruleCode);
attendSaveReq.setRuleId();
attendSaveReq.setPhone();
attendSaveReq.setPerformType();
attendSaveReq.setStaffId();*/
// apiWebPerformController.attendSave(attendSaveReq);
}
return super.saveAfter(entity, model, context);
}
@Override @Override
protected int editAfter(Long id, Map<String, Object> model, AttendanceRecordErrorEntity entity, Context context) throws AppException { protected int editAfter(Long id, Map<String, Object> model, AttendanceRecordErrorEntity entity, Context context) throws AppException {
this.addDict(model, "errorStatus", paramService.getParamBySecondOrganize("AttendanceRecordDetail", "goWorkResult")); this.addDict(model, "errorStatus", paramService.getParamBySecondOrganize("AttendanceRecordDetail", "goWorkResult"));
......
...@@ -108,9 +108,9 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController< ...@@ -108,9 +108,9 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
}else { }else {
service.doAttendanceSummary(query); service.doAttendanceSummary(query);
} }
cacheService.expire(SUMMARY_TASK_KEY,1);
} }
}); });
cacheService.set(SUMMARY_TASK_KEY,"false",60);
model.put("message_info","开始执行考勤汇总,请稍后查看"); model.put("message_info","开始执行考勤汇总,请稍后查看");
} catch (Exception var9) { } catch (Exception var9) {
code = -1; code = -1;
......
package com.mortals.xhx.module.perform.service; package com.mortals.xhx.module.perform.service;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.busiz.h5.req.AttendSaveReq;
import com.mortals.xhx.module.perform.model.PerformAttendRecordEntity; import com.mortals.xhx.module.perform.model.PerformAttendRecordEntity;
import com.mortals.xhx.module.perform.dao.PerformAttendRecordDao; import com.mortals.xhx.module.perform.dao.PerformAttendRecordDao;
/** /**
...@@ -23,4 +25,7 @@ public interface PerformAttendRecordService extends ICRUDService<PerformAttendRe ...@@ -23,4 +25,7 @@ public interface PerformAttendRecordService extends ICRUDService<PerformAttendRe
*/ */
void updateProcessStatus(Long id,Integer status) throws AppException; void updateProcessStatus(Long id,Integer status) throws AppException;
void saveAttend(AttendSaveReq req, Context context) throws AppException;
} }
\ No newline at end of file
package com.mortals.xhx.module.perform.service.impl; package com.mortals.xhx.module.perform.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.xhx.busiz.h5.req.AttendSaveReq;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.attendance.model.*; import com.mortals.xhx.module.attendance.model.*;
...@@ -12,7 +13,9 @@ import com.mortals.xhx.module.check.model.CheckAttendRecordEntity; ...@@ -12,7 +13,9 @@ import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
import com.mortals.xhx.module.check.service.CheckAttendRecordService; import com.mortals.xhx.module.check.service.CheckAttendRecordService;
import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.perform.model.PerformRulesCategoryEntity;
import com.mortals.xhx.module.perform.model.PerformRulesEntity; import com.mortals.xhx.module.perform.model.PerformRulesEntity;
import com.mortals.xhx.module.perform.service.PerformRulesCategoryService;
import com.mortals.xhx.module.perform.service.PerformRulesService; import com.mortals.xhx.module.perform.service.PerformRulesService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
...@@ -55,6 +58,8 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -55,6 +58,8 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
private AttendanceClassService classService; private AttendanceClassService classService;
@Autowired @Autowired
private AttendanceClassDetailService classDetailService; private AttendanceClassDetailService classDetailService;
@Autowired
private PerformRulesCategoryService categoryService;
@Autowired @Autowired
private PerformRulesService rulesService; private PerformRulesService rulesService;
...@@ -202,4 +207,44 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -202,4 +207,44 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
dao.update(update); dao.update(update);
} }
@Override
public void saveAttend(AttendSaveReq req, Context context) throws AppException {
//考勤保存
//通过手机号码查询员工属性
PerformRulesEntity rule = getRule(req.getRuleCode());
StaffEntity staffEntity = staffService.getCache(req.getStaffId().toString());
PerformAttendRecordEntity recordEntity = new PerformAttendRecordEntity();
recordEntity.initAttrValue();
recordEntity.setSubMethod(SubMethodEnum.系统自动.getValue());
BeanUtils.copyProperties(req, recordEntity);
recordEntity.setStaffId(staffEntity.getId());
recordEntity.setStaffName(staffEntity.getName());
recordEntity.setDeptId(staffEntity.getDeptId());
recordEntity.setDeptName(staffEntity.getDeptName());
recordEntity.setSubAddType(rule.getSubAddType());
recordEntity.setScore(rule.getScore());
recordEntity.setRuleId(rule.getId());
recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date());
recordEntity.setCreateUserId(this.getContextUserId(context));
recordEntity.setCreateTime(new Date());
recordEntity.setWorkNum(staffEntity.getWorkNum());
PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId());
recordEntity.setCategoryName(categoryEntity == null ? "" : categoryEntity.getName());
this.save(recordEntity);
}
private PerformRulesEntity getRule(String ruleCode) {
PerformRulesEntity rule = rulesService.getCache(ruleCode);
if (ObjectUtils.isEmpty(rule))
throw new AppException(String.format("当前手机号码未找到匹配的员工!rule:%s", ruleCode));
return rule;
}
} }
\ No newline at end of file
...@@ -50,7 +50,9 @@ ...@@ -50,7 +50,9 @@
IFNULL(sum(duration),0) as duration, IFNULL(sum(duration),0) as duration,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%Y')) as `year`, ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%m')) as `month`, ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day` ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day`,
ANY_VALUE(startTime) as startTime,
ANY_VALUE(endTime) as endTime
FROM FROM
mortals_xhx_attendance_leave_record mortals_xhx_attendance_leave_record
WHERE WHERE
...@@ -70,6 +72,7 @@ ...@@ -70,6 +72,7 @@
ANY_VALUE(DATE_FORMAT(errorDateTime,'%Y')) as `year`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%m')) as `month`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%d')) as `day`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%d')) as `day`,
sum(case errorStatus when 0 then 1 ELSE 0 end) as morningTimes,
sum(case errorStatus when 0 then 1 ELSE 0 end) as afternoonTimes, sum(case errorStatus when 0 then 1 ELSE 0 end) as afternoonTimes,
sum(case errorStatus when 1 then 1 ELSE 0 end) as overtimeTimes, sum(case errorStatus when 1 then 1 ELSE 0 end) as overtimeTimes,
sum(case errorStatus when 2 then 1 ELSE 0 end) as lateTimes sum(case errorStatus when 2 then 1 ELSE 0 end) as lateTimes
......
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