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

Merge remote-tracking branch 'origin/master'

parents a4eca9a8 51db094a
...@@ -246,14 +246,18 @@ export default { ...@@ -246,14 +246,18 @@ export default {
{v.goWorkResult == 1 ? ( {v.goWorkResult == 1 ? (
<span style="marginRight:10px"> <span style="marginRight:10px">
打卡时间: 打卡时间:
{(v.goWorkDate = timestampToTime(v.goWorkDate, 6))} {v.goWorkDate
? (v.goWorkDate = timestampToTime(v.goWorkDate, 6))
: (v.goWorkDate = "--")}
{" "} 打卡结果: {" "} 打卡结果:
{this.tableData.dict.goWorkResult[v.goWorkResult]} {this.tableData.dict.goWorkResult[v.goWorkResult]}
</span> </span>
) : ( ) : (
<span style="color:red;marginRight:10px"> <span style="color:red;marginRight:10px">
打卡时间: 打卡时间:
{(v.goWorkDate = timestampToTime(v.goWorkDate, 6))} {v.goWorkDate
? (v.goWorkDate = timestampToTime(v.goWorkDate, 6))
: (v.goWorkDate = "--")}
{" "} 打卡结果: {" "} 打卡结果:
{this.tableData.dict.goWorkResult[v.goWorkResult]} {this.tableData.dict.goWorkResult[v.goWorkResult]}
</span> </span>
...@@ -261,14 +265,24 @@ export default { ...@@ -261,14 +265,24 @@ export default {
{v.offWorkResult == 1 ? ( {v.offWorkResult == 1 ? (
<span> <span>
打卡时间: 打卡时间:
{(v.offWorkDate = timestampToTime(v.offWorkDate, 6))} {v.offWorkDate
? (v.offWorkDate = timestampToTime(
v.offWorkDate,
6
))
: (v.offWorkDate = "--")}
{" "} 打卡结果: {" "} 打卡结果:
{this.tableData.dict.offWorkResult[v.offWorkResult]} {this.tableData.dict.offWorkResult[v.offWorkResult]}
</span> </span>
) : ( ) : (
<span style="color:red"> <span style="color:red">
打卡时间: 打卡时间:
{(v.offWorkDate = timestampToTime(v.offWorkDate, 6))} {v.offWorkDate
? (v.offWorkDate = timestampToTime(
v.offWorkDate,
6
))
: (v.offWorkDate = "--")}
{" "} 打卡结果: {" "} 打卡结果:
{this.tableData.dict.offWorkResult[v.offWorkResult]} {this.tableData.dict.offWorkResult[v.offWorkResult]}
</span> </span>
......
package com.mortals.xhx.common.utils;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StopWatch;
@AllArgsConstructor
@Slf4j
public class AddAttendThread implements Runnable {
private AttendanceRecordHikService hikService;
private AttendanceRecordHikEntity hikEntity;
private Context context;
@Override
public void run() {
log.info("考勤计算开始!");
try {
//天数区间分段计算
DateTime attendStart = DateUtil.parseDate(hikEntity.getAttendanceDateStart());
DateTime attendEnd = DateUtil.parseDate(hikEntity.getAttendanceDateEnd());
Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY);
StopWatch stopWatch = new StopWatch("stopwatch attend");
log.info("考勤计算天数区间:{}", compare);
for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("考勤计算日期:{}", curDate.toDateStr());
stopWatch.start("执行本地方法");
hikEntity.setAttendanceDateStart(curDate.toDateStr());
hikEntity.setAttendanceDateEnd(curDate.toDateStr());
hikService.addAttendanceRecordByQuery(hikEntity, context);
stopWatch.stop();
log.info("考勤计算日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
}
} catch (Exception e) {
log.error("考勤计算失败!", e);
}
log.info("考勤计算结束!");
}
}
...@@ -12,7 +12,7 @@ public class StartService implements IApplicationStartedService { ...@@ -12,7 +12,7 @@ public class StartService implements IApplicationStartedService {
@Override @Override
public void start() { public void start() {
ThreadPool.getInstance().init(20); ThreadPool.getInstance().init(10);
} }
@Override @Override
......
...@@ -87,7 +87,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -87,7 +87,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
if (ObjectUtils.isEmpty(deptEntity)) { if (ObjectUtils.isEmpty(deptEntity)) {
deptEntity = new DeptEntity(); deptEntity = new DeptEntity();
deptEntity.initAttrValue(); deptEntity.initAttrValue();
if (ObjectUtils.isEmpty(deptEntityParent)) { if (!ObjectUtils.isEmpty(deptEntityParent)) {
deptEntity.setParentId(deptEntityParent.getId()); deptEntity.setParentId(deptEntityParent.getId());
} }
deptEntity.setDeptName(orgInfo.getOrgName()); deptEntity.setDeptName(orgInfo.getOrgName());
......
...@@ -352,7 +352,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -352,7 +352,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
errorEntity.setShiftsName(recordDetailEntity.getShiftsName()); errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setProcessStatus(YesNoEnum.NO.getValue()); errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
errorEntity.setCreateTime(new Date()); errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(context.getUser().getId()); errorEntity.setCreateUserId(1L);
Date goWorkDate = attendanceClassDetailEntity.getGoWorkDate(); Date goWorkDate = attendanceClassDetailEntity.getGoWorkDate();
errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(goWorkDate)).toJdkDate()); errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(goWorkDate)).toJdkDate());
if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) { if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) {
...@@ -382,7 +382,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -382,7 +382,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
errorEntity.setShiftsName(recordDetailEntity.getShiftsName()); errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setProcessStatus(YesNoEnum.NO.getValue()); errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
errorEntity.setCreateTime(new Date()); errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(context.getUser().getId()); errorEntity.setCreateUserId(context==null?1L:context.getUser().getId());
Date offWorkDate = attendanceClassDetailEntity.getOffWorkDate(); Date offWorkDate = attendanceClassDetailEntity.getOffWorkDate();
errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(offWorkDate)).toJdkDate()); errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(offWorkDate)).toJdkDate());
if (!ObjectUtils.isEmpty(recordDetailEntity.getOffWorkDate())) { if (!ObjectUtils.isEmpty(recordDetailEntity.getOffWorkDate())) {
......
...@@ -9,11 +9,13 @@ import com.mortals.framework.model.Context; ...@@ -9,11 +9,13 @@ import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.util.ThreadPool;
import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.keys.RedisCacheKeys; import com.mortals.xhx.common.keys.RedisCacheKeys;
import com.mortals.xhx.common.utils.AddAttendThread;
import com.mortals.xhx.module.attendance.model.AttendanceClassEntity; import com.mortals.xhx.module.attendance.model.AttendanceClassEntity;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity; import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import com.mortals.xhx.module.attendance.model.AttendanceGroupEntity; import com.mortals.xhx.module.attendance.model.AttendanceGroupEntity;
...@@ -144,7 +146,9 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -144,7 +146,9 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) { if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) {
throw new AppException("请选择开始日期"); throw new AppException("请选择开始日期");
} }
hikService.addAttendanceRecordByQuery(hikEntity, getContext()); AddAttendThread addAttendThread = new AddAttendThread(hikService, hikEntity, getContext());
ThreadPool.getInstance().execute(addAttendThread);
//hikService.addAttendanceRecordByQuery(hikEntity, getContext());
model.put("message_info", busiDesc + "成功"); model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】"); this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
......
...@@ -147,7 +147,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -147,7 +147,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
staffQuery.setStatusNotList(Arrays.asList(StaffSatusEnum.离职.getValue())); staffQuery.setStatusNotList(Arrays.asList(StaffSatusEnum.离职.getValue()));
Map<String, StaffEntity> staffCollect = this.find(staffQuery).stream().collect(Collectors.toMap(x -> x.getWorkNum(), y -> y, (o, n) -> n)); Map<String, StaffEntity> staffCollect = this.find(staffQuery).stream().collect(Collectors.toMap(x -> x.getWorkNum(), y -> y, (o, n) -> n));
List<PersonInfo> personInfoList = personRest.getData().getList(); List<PersonInfo> personInfoList = personRest.getData().getList();
for (PersonInfo personInfo : personInfoList) { for (PersonInfo personInfo : personInfoList) {
if (ObjectUtils.isEmpty(personInfo.getJobNo())) { if (ObjectUtils.isEmpty(personInfo.getJobNo())) {
...@@ -156,7 +155,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -156,7 +155,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
} }
if (staffCollect.containsKey(personInfo.getJobNo())) { if (staffCollect.containsKey(personInfo.getJobNo())) {
staffCollect.remove(personInfo.getJobNo()); staffCollect.remove(personInfo.getJobNo());
} }
StaffEntity staffEntity = this.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0")); StaffEntity staffEntity = this.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0"));
...@@ -191,7 +189,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -191,7 +189,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
staffEntity.setCreateUserId(1L); staffEntity.setCreateUserId(1L);
staffEntity.setCreateTime(new Date()); staffEntity.setCreateTime(new Date());
this.save(staffEntity); this.save(staffEntity);
} else { } else {
//更新 //更新
if (!ObjectUtils.isEmpty(deptEntity)) { if (!ObjectUtils.isEmpty(deptEntity)) {
...@@ -225,7 +222,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -225,7 +222,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
if (staffCollect.size() > 0) { if (staffCollect.size() > 0) {
//需要将此人员变更为离职 //需要将此人员变更为离职
staffCollect.entrySet().stream().forEach(item -> { staffCollect.entrySet().stream().forEach(item -> {
String key = item.getKey(); String key = item.getKey();
if (!ObjectUtils.isEmpty(key)) { if (!ObjectUtils.isEmpty(key)) {
StaffEntity staff = item.getValue(); StaffEntity staff = item.getValue();
......
...@@ -24,6 +24,15 @@ Content-Type: application/json ...@@ -24,6 +24,15 @@ Content-Type: application/json
{} {}
###海康考勤打卡记录计算
POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord
Authorization: {{authToken}}
Content-Type: application/json
{
"attendanceDateStart":"2023-12-01",
"attendanceDateEnd":"2024-01-11"
}
...@@ -34,7 +43,7 @@ Content-Type: application/json ...@@ -34,7 +43,7 @@ Content-Type: application/json
{ {
"attendanceDateStart":"2023-12-01", "attendanceDateStart":"2023-12-01",
"attendanceDateEnd":"2023-12-30" "attendanceDateEnd":"2023-12-31"
} }
...@@ -43,7 +52,7 @@ POST {{baseUrl}}//attendance/stat/summary ...@@ -43,7 +52,7 @@ POST {{baseUrl}}//attendance/stat/summary
Authorization: {{authToken}} Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{"summaryTimeStart":"2024-01-01","summaryTimeEnd":"2024-01-03"} {"summaryTimeStart":"2023-12-01","summaryTimeEnd":"2023-12-31"}
###短信设置编辑 ###短信设置编辑
......
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