Commit 3c9e3614 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 32733afa 1b86f533
...@@ -468,6 +468,8 @@ export default { ...@@ -468,6 +468,8 @@ export default {
this.form.complainTimeEnd = this.form.createTimeMonth + "-31"; this.form.complainTimeEnd = this.form.createTimeMonth + "-31";
this.form.goworkTimeStart = this.form.createTimeMonth + "-01"; this.form.goworkTimeStart = this.form.createTimeMonth + "-01";
this.form.goworkTimeEnd = this.form.createTimeMonth + "-31"; this.form.goworkTimeEnd = this.form.createTimeMonth + "-31";
this.form.happenTimeStart = this.form.createTimeMonth + "-01";
this.form.happenTimeEnd = this.form.createTimeMonth + "-31";
} else if (this.form.createTimeStart1 || this.form.createTimeEnd1) { } else if (this.form.createTimeStart1 || this.form.createTimeEnd1) {
this.form.createTimeStart = this.form.createTimeStart1; this.form.createTimeStart = this.form.createTimeStart1;
this.form.createTimeEnd = this.form.createTimeEnd1; this.form.createTimeEnd = this.form.createTimeEnd1;
......
...@@ -92,8 +92,6 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -92,8 +92,6 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
@Autowired @Autowired
private AttendanceGroupService groupService; private AttendanceGroupService groupService;
@Autowired @Autowired
private AttendanceClassService classService;
@Autowired
private AttendanceClassDetailService classDetailService; private AttendanceClassDetailService classDetailService;
@Autowired @Autowired
private AttendanceGroupFixedworkService fixedworkService; private AttendanceGroupFixedworkService fixedworkService;
......
...@@ -54,8 +54,6 @@ import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT; ...@@ -54,8 +54,6 @@ import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT;
@Slf4j @Slf4j
@RequestMapping("/api/v1/perform") @RequestMapping("/api/v1/perform")
public class PerformApiController extends AbstractBaseController<PerformReq> { public class PerformApiController extends AbstractBaseController<PerformReq> {
@Autowired @Autowired
private CheckAttendRecordService checkAttendRecordService; private CheckAttendRecordService checkAttendRecordService;
@Autowired @Autowired
...@@ -70,10 +68,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -70,10 +68,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
private CheckOtherRecordService checkOtherRecordService; private CheckOtherRecordService checkOtherRecordService;
@Autowired @Autowired
private CheckAllRecordService checkAllRecordService; private CheckAllRecordService checkAllRecordService;
@Autowired @Autowired
private PerformAttendAppealService appealService; private PerformAttendAppealService appealService;
@Autowired @Autowired
private CheckAllRecordDao checkAllRecordDao; private CheckAllRecordDao checkAllRecordDao;
@Autowired @Autowired
...@@ -81,7 +77,6 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -81,7 +77,6 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
@Autowired @Autowired
private PerformRulesService rulesService; private PerformRulesService rulesService;
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "checkStatus", CheckStatusEnum.getEnumMap()); this.addDict(model, "checkStatus", CheckStatusEnum.getEnumMap());
this.addDict(model, "checkResult", CheckResultEnum.getEnumMap()); this.addDict(model, "checkResult", CheckResultEnum.getEnumMap());
...@@ -405,28 +400,6 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -405,28 +400,6 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
} }
} }
private void updateAppealResult(PerformInfo performInfo, List<PerformAttendAppealEntity> list) {
if (!ObjectUtils.isEmpty(list)) {
for (PerformAttendAppealEntity entity : list) {
if (ObjectUtils.isEmpty(entity.getAppealResult())) {
performInfo.setAppealStatus(AppealStatusEnum.申诉中.getValue());
} else {
if (AppealResultEnum.通过.getValue() == entity.getAppealResult()) {
performInfo.setAppealStatus(AppealStatusEnum.申诉通过.getValue());
} else if (AppealResultEnum.不通过.getValue() == entity.getAppealResult()) {
performInfo.setAppealStatus(AppealStatusEnum.申诉拒绝.getValue());
} else {
performInfo.setAppealStatus(AppealStatusEnum.申诉中.getValue());
}
}
}
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
}
/** /**
* 详细 * 详细
*/ */
......
...@@ -45,7 +45,7 @@ public class StaffCheckSummaryService implements IApplicationStartedService { ...@@ -45,7 +45,7 @@ public class StaffCheckSummaryService implements IApplicationStartedService {
Thread sendThread = new Thread(new Runnable() { Thread sendThread = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
int waitTime = 1000; int waitTime = 50;
while (!stopped) { while (!stopped) {
try { try {
StaffCheckSummaryQuery query = cacheService.brpop(KEY_CHECK_SUMMARY_CACHE,60, StaffCheckSummaryQuery.class); StaffCheckSummaryQuery query = cacheService.brpop(KEY_CHECK_SUMMARY_CACHE,60, StaffCheckSummaryQuery.class);
......
...@@ -257,7 +257,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -257,7 +257,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
attendanceRecordEntity.setId(recordEntity.getId()); attendanceRecordEntity.setId(recordEntity.getId());
attendanceRecordEntity.setUpdateTime(new Date()); attendanceRecordEntity.setUpdateTime(new Date());
attendanceRecordEntity.setUpdateUserId(this.getContextUserId(context)); attendanceRecordEntity.setUpdateUserId(this.getContextUserId(context));
updateList.add(attendanceRecordEntity); updateList.add(attendanceRecordEntity);
// attendanceRecordService.update(attendanceRecordEntity, context); // attendanceRecordService.update(attendanceRecordEntity, context);
} else { } else {
...@@ -378,6 +377,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -378,6 +377,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
attendanceRecordEntity.setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName()); attendanceRecordEntity.setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
} }
//生成异常记录 //生成异常记录
log.info("开始生成异常考勤记录");
genErrorAttendRecord(context, dateStr, attendanceRecordEntity, detailEntityList); genErrorAttendRecord(context, dateStr, attendanceRecordEntity, detailEntityList);
if (!ObjectUtils.isEmpty(detailEntityList)) { if (!ObjectUtils.isEmpty(detailEntityList)) {
attendanceRecordEntity.setAttendanceRecordDetailList(detailEntityList); attendanceRecordEntity.setAttendanceRecordDetailList(detailEntityList);
...@@ -497,8 +497,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -497,8 +497,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
if (OffWorkResultEnum.迟到.getValue() == recordDetailEntity.getOffWorkResult()) { if (OffWorkResultEnum.迟到.getValue() == recordDetailEntity.getOffWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.迟到.getValue()); errorEntity.setErrorStatus(ErrorStatusEnum.迟到.getValue());
} }
errorEntityList.add(errorEntity); errorEntityList.add(errorEntity);
} }
...@@ -509,140 +507,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -509,140 +507,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
} }
private Boolean checkDouble(List<AttendanceRecordErrorEntity> errorEntityList, AttendanceRecordErrorEntity checkError) {
//检测 新加 的错误 是否存在与列表中
boolean bool = true;
for (AttendanceRecordErrorEntity error : errorEntityList) {
//
//if(error.getStaffId()==checkError.getStaffId()&&error.getShiftsId()=)
}
return bool;
}
private void checkAttendGroupByOne(AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList, Date attendanceDate, AttendanceGroupStaffEntity attendanceGroupStaffEntity, Context context) {
//查询考勤组
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(attendanceGroupStaffEntity.getGroupId(), context);
attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity == null ? 0L : attendanceGroupEntity.getId());
attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity == null ? "" : attendanceGroupEntity.getGroupName());
//查询考勤组详细信息获取班次 todo 默认固定班次 还有自由 与排班制
AttendanceWorkAbstract workAbstract = AttendanceWorkAbstract.newType(attendanceGroupEntity.getType());
CommonData commonData = new CommonData();
commonData.setAttendanceGroupEntity(attendanceGroupEntity);
commonData.setAttendanceDate(attendanceDate);
commonData.setDetailEntityList(detailEntityList);
commonData.setStaffId(attendanceRecordEntity.getStaffId());
workAbstract.doHandleWork(commonData);
/*
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
.groupId(attendanceGroupEntity.getId()));
//判断当前考勤日期为周几
String week = this.getWeek(attendanceDate);
//log.info("week:{}", week);
//通过考勤日期的星期拿到班次id.
if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) {
log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", attendanceGroupEntity.getId());
return;
}
//获取当前日期的详细班次
Long weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, week);
//log.info("weekClassId:{}", weekClassId);
//weekClassId为-1 则不在考勤
if (weekClassId == -1L) {
//跳过本次循环
return;
}
//获取班次信息
AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(weekClassId);
if (ObjectUtils.isEmpty(attendanceClassEntity)) {
log.info("attendanceClassEntity is null ,weekClassId:{}", weekClassId);
return;
}
//List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceClassEntity.getId()));
//获取当前班的多个班次,一个班次为一个上下班时间段
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassEntity.getAttendanceClassDetailList();
Integer orderNum = 0;
//构造数据
if (ObjectUtils.isEmpty(detailEntityList)) {
//遍历班次 构建详细考勤数据
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) {
orderNum++;
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setShiftsId(classDetailEntity.getId());
recordDetailEntity.setShiftsName(classDetailEntity.getClassName());
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOrderNum(orderNum);
detailEntityList.add(recordDetailEntity);
}
}
for (AttendanceClassDetailEntity classDetail : attendanceClassDetailEntities) {
//计算区间范围
//上班打卡前时间
Date goWorkDateBefore = DateUtil.offsetMinute(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore());
//上班打卡后时间
Date goWorkDateAfter = DateUtil.offsetMinute(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter());
// 下班打卡前时间
Date offWorkDateBefore = DateUtil.offsetMinute(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore());
//下班打卡后时间
Date offWorkDateAfter = DateUtil.offsetMinute(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter());
//判断考勤时间是否在上班打卡区间内 true 在 false 不在 格式化时间
//String currDate = DateUtil.formatTime(attendanceDate);
Date curDateTime = DateUtil.parseTime(DateUtil.formatTime(attendanceDate)).toJdkDate();
boolean goInTime = DateUtil.isIn(curDateTime, goWorkDateBefore, goWorkDateAfter);
//判断考勤时间是否在下班打卡区间内
boolean offInTime = DateUtil.isIn(curDateTime, offWorkDateBefore, offWorkDateAfter);
if (goInTime == false && offInTime == false) {
log.info("考勤时间不在上班区间与下班区间中,不做处理!attendDate:{}", DateUtil.formatDateTime(attendanceDate));
continue;
}
if (goInTime) {
//如果是上班打卡区间范围,判断是否迟到
boolean inTime = DateUtil.isIn(curDateTime, goWorkDateBefore, classDetail.getGoWorkDate());
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getId()) {
attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.正常.getValue());
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
} else {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getId()) {
attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.迟到.getValue());
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
}
if (offInTime) {
boolean inTime = DateUtil.isIn(curDateTime, classDetail.getOffWorkDate(), offWorkDateAfter);
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getId()) {
attendanceRecordDetailEntity.setOffWorkResult(GoWorkResultEnum.正常.getValue());
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
} else {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getId()) {
attendanceRecordDetailEntity.setOffWorkResult(GoWorkResultEnum.早退.getValue());
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
}
}*/
}
public String getWeek(Date date) { public String getWeek(Date date) {
// Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday) // Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday)
int dayOfWeek = DateUtil.dayOfWeek(date); int dayOfWeek = DateUtil.dayOfWeek(date);
......
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.module.perform.model.PerformEffectRecordEntity; import com.mortals.xhx.module.perform.model.PerformEffectRecordEntity;
import com.mortals.xhx.module.perform.dao.PerformEffectRecordDao; import com.mortals.xhx.module.perform.dao.PerformEffectRecordDao;
import com.mortals.xhx.module.perform.model.PerformEffectRecordQuery;
import org.springframework.web.bind.annotation.RequestBody;
/** /**
* PerformEffectRecordService * PerformEffectRecordService
* *
...@@ -23,4 +27,8 @@ public interface PerformEffectRecordService extends ICRUDService<PerformEffectRe ...@@ -23,4 +27,8 @@ public interface PerformEffectRecordService extends ICRUDService<PerformEffectRe
*/ */
void updateProcessStatus(Long id,Integer status) throws AppException; void updateProcessStatus(Long id,Integer status) throws AppException;
void syncEffectRecord(PerformEffectRecordQuery query, Context context);
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import com.mortals.xhx.common.utils.BeanUtil; ...@@ -5,6 +5,7 @@ import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.check.model.CheckEffectRecordEntity; import com.mortals.xhx.module.check.model.CheckEffectRecordEntity;
import com.mortals.xhx.module.check.service.CheckEffectRecordService; import com.mortals.xhx.module.check.service.CheckEffectRecordService;
import com.mortals.xhx.module.perform.model.PerformComplainRecordEntity; import com.mortals.xhx.module.perform.model.PerformComplainRecordEntity;
import com.mortals.xhx.module.perform.model.PerformEffectRecordQuery;
import com.mortals.xhx.module.perform.model.PerformRulesEntity; import com.mortals.xhx.module.perform.model.PerformRulesEntity;
import com.mortals.xhx.module.perform.service.PerformRulesService; import com.mortals.xhx.module.perform.service.PerformRulesService;
import com.mortals.xhx.module.perform.service.PerformStaffConfService; import com.mortals.xhx.module.perform.service.PerformStaffConfService;
...@@ -113,4 +114,9 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -113,4 +114,9 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
dao.update(update); dao.update(update);
} }
@Override
public void syncEffectRecord(PerformEffectRecordQuery query, Context context) {
}
} }
\ No newline at end of file
package com.mortals.xhx.module.perform.web; package com.mortals.xhx.module.perform.web;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
...@@ -7,10 +11,14 @@ import com.mortals.xhx.base.system.param.service.ParamService; ...@@ -7,10 +11,14 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.perform.model.PerformEffectRecordQuery;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StopWatch;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -42,6 +50,7 @@ import static com.mortals.framework.ap.SysConstains.*; ...@@ -42,6 +50,7 @@ import static com.mortals.framework.ap.SysConstains.*;
*/ */
@RestController @RestController
@RequestMapping("perform/effect/record") @RequestMapping("perform/effect/record")
@Slf4j
public class PerformEffectRecordController extends BaseCRUDJsonBodyMappingController<PerformEffectRecordService,PerformEffectRecordEntity,Long> { public class PerformEffectRecordController extends BaseCRUDJsonBodyMappingController<PerformEffectRecordService,PerformEffectRecordEntity,Long> {
@Autowired @Autowired
...@@ -87,4 +96,43 @@ public class PerformEffectRecordController extends BaseCRUDJsonBodyMappingContro ...@@ -87,4 +96,43 @@ public class PerformEffectRecordController extends BaseCRUDJsonBodyMappingContro
//query.setHappenTimeEnd(DateUtil.formatDate(query.getCreateTime())); //query.setHappenTimeEnd(DateUtil.formatDate(query.getCreateTime()));
} }
} }
@PostMapping(value = "/sync")
@UnAuth
public Rest<String> syncEffectRecord(@RequestBody PerformEffectRecordQuery query) {
Rest<String> ret = new Rest();
Map<String, Object> model = new HashMap();
Context context = this.getContext();
String busiDesc = "查询" + this.getModuleDesc();
int code = 1;
try {
//天数区间分段计算
DateTime attendStart = DateUtil.parseDate(query.getHappenTimeStart());
DateTime attendEnd = DateUtil.parseDate(query.getHappenTimeEnd());
Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY);
StopWatch stopWatch = new StopWatch("stopwatch attend1");
log.info("效能同步计算天数区间:{}", compare);
for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("效能同步记录日期:{}", curDate.toDateStr());
stopWatch.start("执行本地方法");
stopWatch.stop();
log.info("效能同步记录日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
}
model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) {
code = -1;
this.doException(this.request, busiDesc, model, e);
model.put("message_info", e.getMessage());
}
this.init(model, context);
ret.setCode(code);
ret.setMsg(model.get("message_info") == null ? "" : model.remove("message_info").toString());
return ret;
}
} }
\ No newline at end of file
...@@ -19,8 +19,8 @@ POST {{baseUrl}}/attendance/record/error/doReprocess ...@@ -19,8 +19,8 @@ POST {{baseUrl}}/attendance/record/error/doReprocess
Content-Type: application/json Content-Type: application/json
{ {
"errorDateTimeStart":"2024-01-01", "errorDateTimeStart":"2024-02-01",
"errorDateTimeEnd":"2024-01-30" "errorDateTimeEnd":"2024-02-29"
} }
......
...@@ -34,17 +34,15 @@ Content-Type: application/json ...@@ -34,17 +34,15 @@ Content-Type: application/json
###海康考勤打卡记录计算 ###海康考勤打卡记录计算
POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"attendanceDateStart":"2024-03-01", "attendanceDateStart":"2024-02-01",
"attendanceDateEnd":"2024-03-13" "attendanceDateEnd":"2024-02-29"
} }
###海康考勤打卡记录计算1 ###海康考勤打卡记录计算1
POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
...@@ -77,15 +75,27 @@ Content-Type: application/json ...@@ -77,15 +75,27 @@ Content-Type: application/json
###考勤汇总计算 ###考勤汇总计算
POST {{baseUrl}}//attendance/stat/summary POST {{baseUrl}}/attendance/stat/summary
Content-Type: application/json Content-Type: application/json
{"summaryTimeStart":"2024-03-01","summaryTimeEnd":"2024-03-13"} {"summaryTimeStart":"2024-03-15","summaryTimeEnd":"2024-03-15"}
###短信设置编辑
GET {{baseUrl}}/sms/set/edit?id={{SmsSet_id}} ###绩效汇总计算
Accept: application/json POST {{baseUrl}}/staff/perform/summary/summary
Content-Type: application/json
{"checkTimeStart":"2024-02-01","checkTimeEnd":"2024-02-29"}
###考勤打卡记录异常信息列表
POST {{baseUrl}}/attendance/record/error/doReprocess
Content-Type: application/json
{
"errorDateTimeStart":"2024-02-01",
"errorDateTimeEnd":"2024-02-29"
}
###id生成 ###id生成
......
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