Commit ac11ff46 authored by 赵啸非's avatar 赵啸非

修改固定班次考勤

parent bbe9860d
......@@ -84,6 +84,39 @@
<skipUi>false</skipUi>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<profiles.active>product</profiles.active>
<profiles.server.port>17500</profiles.server.port>
<profiles.server.path>/attendance</profiles.server.path>
<profiles.publish.path>/home/publish</profiles.publish.path>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level>
<profiles.sms.smsSendUrl>http://127.0.0.1:8089/api/index/index</profiles.sms.smsSendUrl>
<profiles.sms.apiId>k6BVS1PEbyzcJAE4</profiles.sms.apiId>
<profiles.hik.host>8.136.255.30:8001</profiles.hik.host>
<profiles.hik.protocol>http://</profiles.hik.protocol>
<profiles.hik.appKey>25128371</profiles.hik.appKey>
<profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret>
<profiles.dingtalk.domain>https://oapi.dingtalk.com</profiles.dingtalk.domain>
<profiles.dingtalk.oaUrl>api.dingtalk.com</profiles.dingtalk.oaUrl>
<profiles.dingtalk.agentId>2652674890</profiles.dingtalk.agentId>
<profiles.dingtalk.appKey>dingpqzradgfr4efdi2j</profiles.dingtalk.appKey>
<profiles.dingtalk.appSecret>bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd</profiles.dingtalk.appSecret>
<profiles.dingtalk.aesKey>1QcPYuSpAc98OS3qQwwx5HPH85CZDidxF95yBGad2fJ</profiles.dingtalk.aesKey>
<profiles.dingtalk.token>m3WeuVx5kcTY76kh22uWZOTSu0XjvcwNhd</profiles.dingtalk.token>
<profiles.dingtalk.opUserId>manager8325</profiles.dingtalk.opUserId>
<profiles.webUrl>http://8.136.255.30:21039/attendance</profiles.webUrl>
<package.environment>build</package.environment>
<skipUi>false</skipUi>
</properties>
</profile>
<profile>
<id>yibin</id>
<properties>
......
package com.mortals.xhx.base.system.user.model;
import com.mortals.framework.annotation.desensitization.MobileDesensitize;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.user.model.vo.UserVo;
......@@ -34,6 +35,7 @@ public class UserEntity extends UserVo implements IUser {
/**
* 用户手机号
*/
@MobileDesensitize
private String mobile;
/**
* 用户联系电话
......
......@@ -14,7 +14,7 @@ import lombok.Data;
* 考勤打卡记录信息实体对象
*
* @author zxfei
* @date 2023-07-27
* @date 2023-08-03
*/
@Data
public class AttendanceRecordEntity extends AttendanceRecordVo {
......@@ -61,15 +61,6 @@ public class AttendanceRecordEntity extends AttendanceRecordVo {
*/
@Excel(name = "所属考勤组名称")
private String attendanceGroupName;
/**
* 班次ID
*/
private Long shiftsId;
/**
* 班次名称
*/
@Excel(name = "班次名称")
private String shiftsName;
/**
* 打卡日期
*/
......@@ -82,12 +73,12 @@ public class AttendanceRecordEntity extends AttendanceRecordVo {
/**
* 签到结果(0.否,1.是)
*/
@Excel(name = "签到结果", readConverterExp = "0=异常,1=正常")
@Excel(name = "签到结果", readConverterExp = "0=否,1=是")
private Integer signInResult;
/**
* 签退结果(0.否,1.是)
*/
@Excel(name = "签退结果", readConverterExp = "0=异常,1=正常")
@Excel(name = "签退结果", readConverterExp = "0=否,1=是")
private Integer signOutResult;
/**
* 考勤类型
......@@ -96,8 +87,16 @@ public class AttendanceRecordEntity extends AttendanceRecordVo {
/**
* 打卡结果(0.否,1.是)
*/
@Excel(name = "打卡结果", readConverterExp = "0=异常,1=正常")
@Excel(name = "打卡结果", readConverterExp = "0=否,1=是")
private Integer punchResult;
/**
* 班次ID
*/
private Long classId;
/**
* 班次名称
*/
private String className;
@Override
public int hashCode() {
return this.getId().hashCode();
......@@ -124,13 +123,13 @@ public class AttendanceRecordEntity extends AttendanceRecordVo {
this.positionName = "";
this.attendanceGroupId = 0L;
this.attendanceGroupName = "";
this.shiftsId = 0L;
this.shiftsName = "";
this.attendanceDate = new Date();
this.remark = "";
this.signInResult = 0;
this.signOutResult = 0;
this.attendType = "";
this.punchResult = 0;
this.classId = 0L;
this.className = "";
}
}
\ No newline at end of file
......@@ -127,6 +127,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setContext(context);
commonData.setAttendanceGroupEntity(attendanceGroupEntity);
commonData.setAttendanceRecordEntity(attendanceRecordEntity);
commonData.setAttendanceDate(attendanceRecordEntity.getAttendanceDate());
commonData.setDetailEntityList(detailEntityList);
commonData.setStaffId(attendanceRecordEntity.getStaffId());
commonData.setDateStr(dateStr);
......@@ -149,6 +150,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setAttendanceGroupEntity(attendanceGroupEntity);
commonData.setAttendanceRecordEntity(attendanceRecordEntity);
commonData.setDetailEntityList(detailEntityList);
commonData.setAttendanceDate(attendanceRecordEntity.getAttendanceDate());
commonData.setStaffId(attendanceRecordEntity.getStaffId());
commonData.setDateStr(dateStr);
workAbstract.doHandleWork(commonData);
......@@ -194,7 +196,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
//判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId
AttendanceRecordQuery query = new AttendanceRecordQuery();
query.setStaffId(attendanceRecordEntity.getStaffId());
query.setShiftsId(attendanceRecordEntity.getShiftsId());
query.setClassId(attendanceRecordEntity.getClassId());
query.setAttendanceGroupId(attendanceRecordEntity.getAttendanceGroupId());
query.setAttendanceDate(attendanceRecordEntity.getAttendanceDate());
......@@ -297,8 +299,8 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
}
if (!ObjectUtils.isEmpty(detailEntityList)) {
AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(detailEntityList.get(0).getShiftsId(), context);
attendanceRecordEntity.setShiftsId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId());
attendanceRecordEntity.setShiftsName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
attendanceRecordEntity.setClassId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId());
attendanceRecordEntity.setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
}
//生成异常记录
genErrorAttendRecord(context, dateStr, attendanceRecordEntity, detailEntityList);
......@@ -339,7 +341,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
//判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId
AttendanceRecordQuery query = new AttendanceRecordQuery();
query.setStaffId(attendanceRecordEntity.getStaffId());
query.setShiftsId(attendanceRecordEntity.getShiftsId());
query.setClassId(attendanceRecordEntity.getClassId());
query.setAttendanceGroupId(attendanceRecordEntity.getAttendanceGroupId());
query.setAttendanceDate(attendanceRecordEntity.getAttendanceDate());
......
......@@ -228,8 +228,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
if (!ObjectUtils.isEmpty(commonData.getDetailEntityList())) {
AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(commonData.getDetailEntityList().get(0).getShiftsId());
commonData.getAttendanceRecordEntity().setShiftsId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId());
commonData.getAttendanceRecordEntity().setShiftsName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
commonData.getAttendanceRecordEntity().setClassId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId());
commonData.getAttendanceRecordEntity().setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
}
//生成异常记录
genErrorAttendRecord(commonData.getContext(), commonData.getDateStr(), commonData.getAttendanceRecordEntity(), commonData.getDetailEntityList());
......@@ -249,7 +249,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
errorEntity.initAttrValue();
BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"});
errorEntity.setGoOffDateTime(errorEntity.getErrorDateTime());
errorEntity.setShiftsId(recordDetailEntity.getShiftsId());
errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(context.getUser().getId());
......@@ -257,7 +259,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
//判断上班
if (GoWorkResultEnum.正常.getValue() != goWorkResult) {
Date goWorkDate = attendanceClassDetailEntity.getGoWorkDate();
errorEntity.setGoOffDateTime(goWorkDate);
errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(goWorkDate)).toJdkDate());
if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) {
errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate());
......@@ -280,7 +282,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
//判断下班
if (OffWorkResultEnum.正常.getValue() != offWorkResult) {
Date offWorkDate = attendanceClassDetailEntity.getOffWorkDate();
errorEntity.setGoOffDateTime(offWorkDate);
errorEntity.setGoOffDateTime(DateUtil.parseDateTime(dateStr + " " + DateUtil.formatTime(offWorkDate)).toJdkDate());
if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) {
errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate());
......@@ -296,13 +298,26 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if (OffWorkResultEnum.迟到.getValue() == recordDetailEntity.getOffWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.迟到.getValue());
}
errorEntity.setActualAttendanceDateTime(attendanceRecordEntity.getAttendanceDate());
errorEntityList.add(errorEntity);
}
}
if (!ObjectUtils.isEmpty(errorEntityList)) {
errorService.save(errorEntityList, context);
for (AttendanceRecordErrorEntity errorEntity : errorEntityList) {
//查看是否存在相同的异常记录,如果存在 则不添加
AttendanceRecordErrorQuery errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setShiftsId(errorEntity.getShiftsId());
errorQuery.setGoOffDateTime(errorEntity.getErrorDateTime());
errorQuery.setStaffId(errorEntity.getStaffId());
int count = errorService.count(errorQuery, context);
if (count == 0) {
errorService.save(errorEntity, context);
} else {
log.info("已经存在相同的异常记录,不做保存!");
}
}
}
}
}
......@@ -146,8 +146,8 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
attendanceExportRecordEntity.setDeptName(deptEntity==null?"":deptEntity.getDeptName());
}
if(!ObjectUtils.isEmpty(query.getShiftsId())){
AttendanceClassEntity attendanceClassEntity = classService.get(query.getShiftsId(), context);
if(!ObjectUtils.isEmpty(query.getClassId())){
AttendanceClassEntity attendanceClassEntity = classService.get(query.getClassId(), context);
attendanceExportRecordEntity.setClassName(attendanceClassEntity==null?"":attendanceClassEntity.getClassName());
}
attendanceExportRecordEntity.setCreateUserId(context.getUser().getId());
......@@ -161,7 +161,7 @@ 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());
query.setClassId(query.getClassId());
}
if (query.getGroupId() != null) {
query.setAttendanceGroupId(query.getGroupId());
......
......@@ -5,6 +5,8 @@ import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.annotation.desensitization.IdCardDesensitize;
import com.mortals.framework.annotation.desensitization.MobileDesensitize;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.staff.model.vo.StaffVo;
import lombok.Data;
......@@ -40,11 +42,13 @@ public class StaffEntity extends StaffVo {
* 联系电话
*/
@Excel(name = "联系电话")
@MobileDesensitize
private String phoneNumber;
/**
* 身份证号码
*/
@Excel(name = "身份证号码")
@IdCardDesensitize
private String idCard;
/**
* 工号
......
package com.mortals.xhx.module.staff.model.vo;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.annotation.desensitization.IdCardDesensitize;
import com.mortals.framework.annotation.desensitization.MobileDesensitize;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
......@@ -12,6 +15,17 @@ import java.util.List;
@Data
public class StaffVo extends BaseEntityLong {
/**
* 联系电话
*/
@MobileDesensitize
private String phoneNumber;
/**
* 身份证号码
*/
@IdCardDesensitize
private String idCard;
private List <Long> idList;
private List<HolidayListVo> holidayLists;
......
......@@ -821,3 +821,34 @@ ALTER TABLE mortals_xhx_check_other_record ADD COLUMN `auditStatus` tinyint(1)
ALTER TABLE mortals_xhx_perform_attend_appeal ADD COLUMN `windowNum` varchar(255) DEFAULT '' COMMENT '窗口编号';
-- ----------------------------
-- 考勤打卡记录信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_attendance_record`;
CREATE TABLE mortals_xhx_attendance_record(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`staffId` bigint(20) COMMENT '员工ID',
`staffName` varchar(64) NOT NULL COMMENT '员工姓名',
`workNum` varchar(128) COMMENT '工号',
`deptId` bigint(20) COMMENT '所属部门',
`deptName` varchar(128) COMMENT '所属部门名称',
`positionId` bigint(20) COMMENT '职位ID',
`positionName` varchar(128) COMMENT '职位名称',
`attendanceGroupId` bigint(20) COMMENT '所属考勤组ID',
`attendanceGroupName` varchar(128) COMMENT '所属考勤组名称',
`attendanceDate` datetime COMMENT '打卡日期',
`remark` varchar(255) COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
`signInResult` tinyint(2) DEFAULT '0' COMMENT '签到结果(0.否,1.是)',
`signOutResult` tinyint(2) DEFAULT '0' COMMENT '签退结果(0.否,1.是)',
`attendType` varchar(128) DEFAULT '' COMMENT '考勤类型',
`punchResult` tinyint(2) DEFAULT '0' COMMENT '打卡结果(0.否,1.是)',
`classId` bigint(20) COMMENT '班次ID',
`className` varchar(128) COMMENT '班次名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='考勤打卡记录信息';
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