Commit 90e07860 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 27a725b9 7b9a9c6e
......@@ -54,7 +54,7 @@
}
})
this.$nextTick(() => {
this.selection = arr.map(item => item.id)
this.selection = arr.map(item => item.id)
})
if(arr.length < 1){
this.$message.error('请至少选择一条处理')
......@@ -100,12 +100,12 @@
label: "全部考勤组",
fuzzy: false
},
{
/* {
name: "classId",
type: "select",
label: "全部班次",
fuzzy: false
},
},*/
{
name: "errorStatus",
type: "select",
......@@ -149,8 +149,8 @@
{label: "员工姓名", prop: "staffName",fixed:'left',width:100},
{label: "工号", prop: "workNum"},
{label: "部门", prop: "deptName"},
{label: "考勤组", prop: "deptName"},
{label: "班次", prop: "shiftsName"},
{label: "考勤组", prop: "attendanceGroupName"},
/* {label: "班次", prop: "shiftsName"},*/
{label: "异常状态", prop: "errorStatus",formatter: this.formattereErrorStatus},
{label: "异常时间", prop: "errorDateTime", formatter: this.formatterDate},
{label: "处理结果", prop: "processResult", formatter: this.formatters},
......@@ -175,7 +175,7 @@
}else{
return (
<span>
<el-button type="text" size='mini' onClick={() => {
this.reCancle(row)
}}>撤销</el-button>
......@@ -192,4 +192,4 @@
}
}
}
</script>
\ No newline at end of file
</script>
......@@ -498,12 +498,11 @@ export default {
{ label: "员工工号", prop: "workNum" },
{
label: "考勤组",
prop: "attendanceGroupName",
formatter: this.formatters,
prop: "attendanceGroupName"
},
{ label: "部门", prop: "deptName", formatter: this.formatters },
{ label: "职位", prop: "positionName", formatter: this.formatters },
{ label: "班次", prop: "shiftsName", formatter: this.formatters },
{ label: "部门", prop: "deptName" },
{ label: "职位", prop: "positionName"},
{ label: "班次", prop: "classId", formatter: this.formatter },
{
label: "签到结果",
prop: "signInResult",
......
......@@ -17,9 +17,9 @@ module.exports = {
hot: true,//自动保存
proxy: {
'/attendance': {
target: 'http://192.168.0.98:11039',
//target: 'http://192.168.0.98:11039',
// target: 'http://112.19.80.237:11039',
// target: 'http://localhost:17500',
target: 'http://localhost:17500',
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
......
......@@ -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;
/**
* 用户联系电话
......
......@@ -141,16 +141,16 @@ public class DingMessageController {
if(result.getTasks().size() >0 ){
if(result.getTasks().get(0).getCreateTime() != null && result.getTasks().get(0).getFinishTime() != null){
Date startTime = dateFormat(result.getTasks().get(0).getCreateTime(),"yyyy-MM-dd'T'HH:mm'Z'",false);
Date endTime = dateFormat(result.getTasks().get(0).getFinishTime(),"yyyy-MM-dd'T'HH:mm'Z'",false);
leaveRecordEntity.setStartTime(startTime);
leaveRecordEntity.setEndTime(endTime);
leaveRecordEntity.setDuration((int) ((endTime.getTime() - startTime.getTime())/1000));
}
}
// if(result.getTasks().size() >0 ){
// if(result.getTasks().get(0).getCreateTime() != null && result.getTasks().get(0).getFinishTime() != null){
// Date startTime = dateFormat(result.getTasks().get(0).getCreateTime(),"yyyy-MM-dd'T'HH:mm'Z'",false);
//
// Date endTime = dateFormat(result.getTasks().get(0).getFinishTime(),"yyyy-MM-dd'T'HH:mm'Z'",false);
// leaveRecordEntity.setStartTime(startTime);
// leaveRecordEntity.setEndTime(endTime);
// leaveRecordEntity.setDuration((int) ((endTime.getTime() - startTime.getTime())/1000));
// }
// }
String leave_code = LeaveRulesEnum.事假.getLeave_code();
String leave_name = "事假";
......@@ -169,7 +169,7 @@ public class DingMessageController {
switch (jsonArray.get(3).toString()){
case "halfDay":
case "day":
leaveRecordEntity.setDuration((int) (Float.parseFloat(jsonArray.get(2).toString())*60*60*24)); //小时转换成秒
leaveRecordEntity.setDuration((int) (Float.parseFloat(jsonArray.get(2).toString())*60*60*24)); //转换成秒
break;
default: //除了按天和半天计算的假期 其余都是按小时返回
leaveRecordEntity.setDuration((int) (Float.parseFloat(jsonArray.get(2).toString())*60*60)); //小时转换成秒
......@@ -281,21 +281,24 @@ public class DingMessageController {
if(result.getResult().compareToIgnoreCase("AGREE") == 0){
if(result.getTasks().size() > 1){
if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") != 0){
leaveRecordEntity.setAuditResult(4); //撤销审批完成
}else {
leaveRecordEntity.setAuditResult(1);
}
}
}else if(result.equals("")){ //撤销假期审批中result会为空 撤销审批通过后result为AGREE
// if(result.getTasks().size() > 1){
// if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") == 0){
// leaveRecordEntity.setAuditResult(4); //撤销审批完成
// }else {
// leaveRecordEntity.setAuditResult(1);
// }
// }
leaveRecordEntity.setAuditResult(1);
}
else if(result.equals("")){ //撤销假期审批中result会为空 撤销审批通过后result为AGREE
if(result.getTasks().size() > 1){
log.info("status"+result.getTasks().get(1).getStatus());
if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") != 0){
leaveRecordEntity.setAuditResult(3); //撤销审批中
}
}
}else {
}
else {
leaveRecordEntity.setAuditResult(2); //请假审批中
}
......
......@@ -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
......@@ -7,7 +7,7 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
* 考勤打卡记录信息查询对象
*
* @author zxfei
* @date 2023-07-18
* @date 2023-08-03
*/
public class AttendanceRecordQuery extends AttendanceRecordEntity {
/** 开始 序号,主键,自增长 */
......@@ -110,26 +110,6 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
/** 所属考勤组名称排除列表 */
private List <String> attendanceGroupNameNotList;
/** 开始 班次ID */
private Long shiftsIdStart;
/** 结束 班次ID */
private Long shiftsIdEnd;
/** 增加 班次ID */
private Long shiftsIdIncrement;
/** 班次ID列表 */
private List <Long> shiftsIdList;
/** 班次ID排除列表 */
private List <Long> shiftsIdNotList;
/** 班次名称 */
private List<String> shiftsNameList;
/** 班次名称排除列表 */
private List <String> shiftsNameNotList;
/** 开始 打卡日期 */
private String attendanceDateStart;
......@@ -233,6 +213,26 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
/** 打卡结果(0.否,1.是)排除列表 */
private List <Integer> punchResultNotList;
/** 开始 班次ID */
private Long classIdStart;
/** 结束 班次ID */
private Long classIdEnd;
/** 增加 班次ID */
private Long classIdIncrement;
/** 班次ID列表 */
private List <Long> classIdList;
/** 班次ID排除列表 */
private List <Long> classIdNotList;
/** 班次名称 */
private List<String> classNameList;
/** 班次名称排除列表 */
private List <String> classNameNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AttendanceRecordQuery> orConditionList;
......@@ -806,119 +806,6 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
this.attendanceGroupNameNotList = attendanceGroupNameNotList;
}
/**
* 获取 开始 班次ID
* @return shiftsIdStart
*/
public Long getShiftsIdStart(){
return this.shiftsIdStart;
}
/**
* 设置 开始 班次ID
* @param shiftsIdStart
*/
public void setShiftsIdStart(Long shiftsIdStart){
this.shiftsIdStart = shiftsIdStart;
}
/**
* 获取 结束 班次ID
* @return $shiftsIdEnd
*/
public Long getShiftsIdEnd(){
return this.shiftsIdEnd;
}
/**
* 设置 结束 班次ID
* @param shiftsIdEnd
*/
public void setShiftsIdEnd(Long shiftsIdEnd){
this.shiftsIdEnd = shiftsIdEnd;
}
/**
* 获取 增加 班次ID
* @return shiftsIdIncrement
*/
public Long getShiftsIdIncrement(){
return this.shiftsIdIncrement;
}
/**
* 设置 增加 班次ID
* @param shiftsIdIncrement
*/
public void setShiftsIdIncrement(Long shiftsIdIncrement){
this.shiftsIdIncrement = shiftsIdIncrement;
}
/**
* 获取 班次ID
* @return shiftsIdList
*/
public List<Long> getShiftsIdList(){
return this.shiftsIdList;
}
/**
* 设置 班次ID
* @param shiftsIdList
*/
public void setShiftsIdList(List<Long> shiftsIdList){
this.shiftsIdList = shiftsIdList;
}
/**
* 获取 班次ID
* @return shiftsIdNotList
*/
public List<Long> getShiftsIdNotList(){
return this.shiftsIdNotList;
}
/**
* 设置 班次ID
* @param shiftsIdNotList
*/
public void setShiftsIdNotList(List<Long> shiftsIdNotList){
this.shiftsIdNotList = shiftsIdNotList;
}
/**
* 获取 班次名称
* @return shiftsNameList
*/
public List<String> getShiftsNameList(){
return this.shiftsNameList;
}
/**
* 设置 班次名称
* @param shiftsNameList
*/
public void setShiftsNameList(List<String> shiftsNameList){
this.shiftsNameList = shiftsNameList;
}
/**
* 获取 班次名称
* @return shiftsNameNotList
*/
public List<String> getShiftsNameNotList(){
return this.shiftsNameNotList;
}
/**
* 设置 班次名称
* @param shiftsNameNotList
*/
public void setShiftsNameNotList(List<String> shiftsNameNotList){
this.shiftsNameNotList = shiftsNameNotList;
}
/**
* 获取 开始 打卡日期
* @return attendanceDateStart
......@@ -1484,6 +1371,119 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
}
/**
* 获取 开始 班次ID
* @return classIdStart
*/
public Long getClassIdStart(){
return this.classIdStart;
}
/**
* 设置 开始 班次ID
* @param classIdStart
*/
public void setClassIdStart(Long classIdStart){
this.classIdStart = classIdStart;
}
/**
* 获取 结束 班次ID
* @return $classIdEnd
*/
public Long getClassIdEnd(){
return this.classIdEnd;
}
/**
* 设置 结束 班次ID
* @param classIdEnd
*/
public void setClassIdEnd(Long classIdEnd){
this.classIdEnd = classIdEnd;
}
/**
* 获取 增加 班次ID
* @return classIdIncrement
*/
public Long getClassIdIncrement(){
return this.classIdIncrement;
}
/**
* 设置 增加 班次ID
* @param classIdIncrement
*/
public void setClassIdIncrement(Long classIdIncrement){
this.classIdIncrement = classIdIncrement;
}
/**
* 获取 班次ID
* @return classIdList
*/
public List<Long> getClassIdList(){
return this.classIdList;
}
/**
* 设置 班次ID
* @param classIdList
*/
public void setClassIdList(List<Long> classIdList){
this.classIdList = classIdList;
}
/**
* 获取 班次ID
* @return classIdNotList
*/
public List<Long> getClassIdNotList(){
return this.classIdNotList;
}
/**
* 设置 班次ID
* @param classIdNotList
*/
public void setClassIdNotList(List<Long> classIdNotList){
this.classIdNotList = classIdNotList;
}
/**
* 获取 班次名称
* @return classNameList
*/
public List<String> getClassNameList(){
return this.classNameList;
}
/**
* 设置 班次名称
* @param classNameList
*/
public void setClassNameList(List<String> classNameList){
this.classNameList = classNameList;
}
/**
* 获取 班次名称
* @return classNameNotList
*/
public List<String> getClassNameNotList(){
return this.classNameNotList;
}
/**
* 设置 班次名称
* @param classNameNotList
*/
public void setClassNameNotList(List<String> classNameNotList){
this.classNameNotList = classNameNotList;
}
/**
* 设置 序号,主键,自增长
* @param id
......@@ -1849,79 +1849,6 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
return this;
}
/**
* 设置 班次ID
* @param shiftsId
*/
public AttendanceRecordQuery shiftsId(Long shiftsId){
setShiftsId(shiftsId);
return this;
}
/**
* 设置 开始 班次ID
* @param shiftsIdStart
*/
public AttendanceRecordQuery shiftsIdStart(Long shiftsIdStart){
this.shiftsIdStart = shiftsIdStart;
return this;
}
/**
* 设置 结束 班次ID
* @param shiftsIdEnd
*/
public AttendanceRecordQuery shiftsIdEnd(Long shiftsIdEnd){
this.shiftsIdEnd = shiftsIdEnd;
return this;
}
/**
* 设置 增加 班次ID
* @param shiftsIdIncrement
*/
public AttendanceRecordQuery shiftsIdIncrement(Long shiftsIdIncrement){
this.shiftsIdIncrement = shiftsIdIncrement;
return this;
}
/**
* 设置 班次ID
* @param shiftsIdList
*/
public AttendanceRecordQuery shiftsIdList(List<Long> shiftsIdList){
this.shiftsIdList = shiftsIdList;
return this;
}
/**
* 设置 班次ID
* @param shiftsIdNotList
*/
public AttendanceRecordQuery shiftsIdNotList(List<Long> shiftsIdNotList){
this.shiftsIdNotList = shiftsIdNotList;
return this;
}
/**
* 设置 班次名称
* @param shiftsName
*/
public AttendanceRecordQuery shiftsName(String shiftsName){
setShiftsName(shiftsName);
return this;
}
/**
* 设置 班次名称
* @param shiftsNameList
*/
public AttendanceRecordQuery shiftsNameList(List<String> shiftsNameList){
this.shiftsNameList = shiftsNameList;
return this;
}
/**
......@@ -2233,6 +2160,79 @@ public class AttendanceRecordQuery extends AttendanceRecordEntity {
return this;
}
/**
* 设置 班次ID
* @param classId
*/
public AttendanceRecordQuery classId(Long classId){
setClassId(classId);
return this;
}
/**
* 设置 开始 班次ID
* @param classIdStart
*/
public AttendanceRecordQuery classIdStart(Long classIdStart){
this.classIdStart = classIdStart;
return this;
}
/**
* 设置 结束 班次ID
* @param classIdEnd
*/
public AttendanceRecordQuery classIdEnd(Long classIdEnd){
this.classIdEnd = classIdEnd;
return this;
}
/**
* 设置 增加 班次ID
* @param classIdIncrement
*/
public AttendanceRecordQuery classIdIncrement(Long classIdIncrement){
this.classIdIncrement = classIdIncrement;
return this;
}
/**
* 设置 班次ID
* @param classIdList
*/
public AttendanceRecordQuery classIdList(List<Long> classIdList){
this.classIdList = classIdList;
return this;
}
/**
* 设置 班次ID
* @param classIdNotList
*/
public AttendanceRecordQuery classIdNotList(List<Long> classIdNotList){
this.classIdNotList = classIdNotList;
return this;
}
/**
* 设置 班次名称
* @param className
*/
public AttendanceRecordQuery className(String className){
setClassName(className);
return this;
}
/**
* 设置 班次名称
* @param classNameList
*/
public AttendanceRecordQuery classNameList(List<String> classNameList){
this.classNameList = classNameList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
......@@ -39,28 +39,24 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
protected void findAfter(AttendanceRecordErrorEntity params, PageInfo pageInfo, Context context, List<AttendanceRecordErrorEntity> list) throws AppException {
list.forEach(item -> {
AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(item.getShiftsId(), context);
AttendanceClassDetailEntity attendanceClassDetailEntity = classDetailService.get(item.getShiftsId(), context);
if(!ObjectUtils.isEmpty(attendanceClassEntity)&&!ObjectUtils.isEmpty(attendanceClassEntity.getAttendanceClassDetailList())){
for (AttendanceClassDetailEntity attendanceClassDetailEntity : attendanceClassEntity.getAttendanceClassDetailList()) {
if (!ObjectUtils.isEmpty(attendanceClassDetailEntity)) {
String str = DateUtil.formatTime(item.getGoOffDateTime());
String goStr = DateUtil.formatTime(attendanceClassDetailEntity.getGoWorkDate());
String offStr = DateUtil.formatTime(attendanceClassDetailEntity.getOffWorkDate());
if (!ObjectUtils.isEmpty(attendanceClassDetailEntity)) {
String str = DateUtil.formatTime(item.getGoOffDateTime());
String goStr = DateUtil.formatTime(attendanceClassDetailEntity.getGoWorkDate());
String offStr = DateUtil.formatTime(attendanceClassDetailEntity.getOffWorkDate());
if (!ObjectUtils.isEmpty(str)&&str.equals(goStr)) {
item.setGoOrOff("上班");
}
if (!ObjectUtils.isEmpty(str)&&str.equals(offStr)) {
item.setGoOrOff("下班");
}
if (ObjectUtils.isEmpty(item.getGoOrOff())) {
item.setGoOrOff("上班");
}
}
if (!ObjectUtils.isEmpty(str) && str.equals(goStr)) {
item.setGoOrOff("上班");
}
}else {
item.setGoOrOff("上班");
if (!ObjectUtils.isEmpty(str) && str.equals(offStr)) {
item.setGoOrOff("下班");
}
if (ObjectUtils.isEmpty(item.getGoOrOff())) {
item.setGoOrOff("");
}
} else {
item.setGoOrOff("");
}
});
}
......
......@@ -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());
......
package com.mortals.xhx.module.feedback.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -46,5 +48,8 @@ public class FeedbackFileController extends BaseCRUDJsonBodyMappingController<Fe
super.init(model, context);
}
@Override
protected void doListBefore(FeedbackFileEntity query, Map<String, Object> model, Context context) throws AppException {
query.setOrderColList(Arrays.asList(new OrderCol("createTime")));
}
}
\ No newline at end of file
......@@ -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;
......
......@@ -15,8 +15,6 @@
<result property="positionName" column="positionName" />
<result property="attendanceGroupId" column="attendanceGroupId" />
<result property="attendanceGroupName" column="attendanceGroupName" />
<result property="shiftsId" column="shiftsId" />
<result property="shiftsName" column="shiftsName" />
<result property="attendanceDate" column="attendanceDate" />
<result property="remark" column="remark" />
<result property="createUserId" column="createUserId" />
......@@ -27,6 +25,8 @@
<result property="signOutResult" column="signOutResult" />
<result property="attendType" column="attendType" />
<result property="punchResult" column="punchResult" />
<result property="classId" column="classId" />
<result property="className" column="className" />
</resultMap>
......@@ -64,12 +64,6 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('attendanceGroupName') or colPickMode == 1 and data.containsKey('attendanceGroupName')))">
a.attendanceGroupName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('shiftsId') or colPickMode == 1 and data.containsKey('shiftsId')))">
a.shiftsId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('shiftsName') or colPickMode == 1 and data.containsKey('shiftsName')))">
a.shiftsName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('attendanceDate') or colPickMode == 1 and data.containsKey('attendanceDate')))">
a.attendanceDate,
</if>
......@@ -100,23 +94,29 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('punchResult') or colPickMode == 1 and data.containsKey('punchResult')))">
a.punchResult,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('classId') or colPickMode == 1 and data.containsKey('classId')))">
a.classId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('className') or colPickMode == 1 and data.containsKey('className')))">
a.className,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AttendanceRecordEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_attendance_record
(staffId,staffName,workNum,deptId,deptName,positionId,positionName,attendanceGroupId,attendanceGroupName,shiftsId,shiftsName,attendanceDate,remark,createUserId,createTime,updateUserId,updateTime,signInResult,signOutResult,attendType,punchResult)
(staffId,staffName,workNum,deptId,deptName,positionId,positionName,attendanceGroupId,attendanceGroupName,attendanceDate,remark,createUserId,createTime,updateUserId,updateTime,signInResult,signOutResult,attendType,punchResult,classId,className)
VALUES
(#{staffId},#{staffName},#{workNum},#{deptId},#{deptName},#{positionId},#{positionName},#{attendanceGroupId},#{attendanceGroupName},#{shiftsId},#{shiftsName},#{attendanceDate},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{signInResult},#{signOutResult},#{attendType},#{punchResult})
(#{staffId},#{staffName},#{workNum},#{deptId},#{deptName},#{positionId},#{positionName},#{attendanceGroupId},#{attendanceGroupName},#{attendanceDate},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{signInResult},#{signOutResult},#{attendType},#{punchResult},#{classId},#{className})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_attendance_record
(staffId,staffName,workNum,deptId,deptName,positionId,positionName,attendanceGroupId,attendanceGroupName,shiftsId,shiftsName,attendanceDate,remark,createUserId,createTime,updateUserId,updateTime,signInResult,signOutResult,attendType,punchResult)
(staffId,staffName,workNum,deptId,deptName,positionId,positionName,attendanceGroupId,attendanceGroupName,attendanceDate,remark,createUserId,createTime,updateUserId,updateTime,signInResult,signOutResult,attendType,punchResult,classId,className)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.staffId},#{item.staffName},#{item.workNum},#{item.deptId},#{item.deptName},#{item.positionId},#{item.positionName},#{item.attendanceGroupId},#{item.attendanceGroupName},#{item.shiftsId},#{item.shiftsName},#{item.attendanceDate},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.signInResult},#{item.signOutResult},#{item.attendType},#{item.punchResult})
(#{item.staffId},#{item.staffName},#{item.workNum},#{item.deptId},#{item.deptName},#{item.positionId},#{item.positionName},#{item.attendanceGroupId},#{item.attendanceGroupName},#{item.attendanceDate},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.signInResult},#{item.signOutResult},#{item.attendType},#{item.punchResult},#{item.classId},#{item.className})
</foreach>
</insert>
......@@ -165,15 +165,6 @@
<if test="(colPickMode==0 and data.containsKey('attendanceGroupName')) or (colPickMode==1 and !data.containsKey('attendanceGroupName'))">
a.attendanceGroupName=#{data.attendanceGroupName},
</if>
<if test="(colPickMode==0 and data.containsKey('shiftsId')) or (colPickMode==1 and !data.containsKey('shiftsId'))">
a.shiftsId=#{data.shiftsId},
</if>
<if test="(colPickMode==0 and data.containsKey('shiftsIdIncrement')) or (colPickMode==1 and !data.containsKey('shiftsIdIncrement'))">
a.shiftsId=ifnull(a.shiftsId,0) + #{data.shiftsIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('shiftsName')) or (colPickMode==1 and !data.containsKey('shiftsName'))">
a.shiftsName=#{data.shiftsName},
</if>
<if test="(colPickMode==0 and data.containsKey('attendanceDate')) or (colPickMode==1 and !data.containsKey('attendanceDate'))">
a.attendanceDate=#{data.attendanceDate},
</if>
......@@ -219,6 +210,15 @@
<if test="(colPickMode==0 and data.containsKey('punchResultIncrement')) or (colPickMode==1 and !data.containsKey('punchResultIncrement'))">
a.punchResult=ifnull(a.punchResult,0) + #{data.punchResultIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('classId')) or (colPickMode==1 and !data.containsKey('classId'))">
a.classId=#{data.classId},
</if>
<if test="(colPickMode==0 and data.containsKey('classIdIncrement')) or (colPickMode==1 and !data.containsKey('classIdIncrement'))">
a.classId=ifnull(a.classId,0) + #{data.classIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('className')) or (colPickMode==1 and !data.containsKey('className'))">
a.className=#{data.className},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -314,25 +314,6 @@
</if>
</foreach>
</trim>
<trim prefix="shiftsId=(case" suffix="ELSE shiftsId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('shiftsId')) or (colPickMode==1 and !item.containsKey('shiftsId'))">
when a.id=#{item.id} then #{item.shiftsId}
</when>
<when test="(colPickMode==0 and item.containsKey('shiftsIdIncrement')) or (colPickMode==1 and !item.containsKey('shiftsIdIncrement'))">
when a.id=#{item.id} then ifnull(a.shiftsId,0) + #{item.shiftsIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="shiftsName=(case" suffix="ELSE shiftsName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('shiftsName')) or (colPickMode==1 and !item.containsKey('shiftsName'))">
when a.id=#{item.id} then #{item.shiftsName}
</if>
</foreach>
</trim>
<trim prefix="attendanceDate=(case" suffix="ELSE attendanceDate end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('attendanceDate')) or (colPickMode==1 and !item.containsKey('attendanceDate'))">
......@@ -428,6 +409,25 @@
</choose>
</foreach>
</trim>
<trim prefix="classId=(case" suffix="ELSE classId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('classId')) or (colPickMode==1 and !item.containsKey('classId'))">
when a.id=#{item.id} then #{item.classId}
</when>
<when test="(colPickMode==0 and item.containsKey('classIdIncrement')) or (colPickMode==1 and !item.containsKey('classIdIncrement'))">
when a.id=#{item.id} then ifnull(a.classId,0) + #{item.classIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="className=(case" suffix="ELSE className end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('className')) or (colPickMode==1 and !item.containsKey('className'))">
when a.id=#{item.id} then #{item.className}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -784,54 +784,6 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('shiftsId')">
<if test="conditionParamRef.shiftsId != null ">
${_conditionType_} a.shiftsId = #{${_conditionParam_}.shiftsId}
</if>
<if test="conditionParamRef.shiftsId == null">
${_conditionType_} a.shiftsId is null
</if>
</if>
<if test="conditionParamRef.containsKey('shiftsIdList') and conditionParamRef.shiftsIdList.size() > 0">
${_conditionType_} a.shiftsId in
<foreach collection="conditionParamRef.shiftsIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('shiftsIdNotList') and conditionParamRef.shiftsIdNotList.size() > 0">
${_conditionType_} a.shiftsId not in
<foreach collection="conditionParamRef.shiftsIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('shiftsIdStart') and conditionParamRef.shiftsIdStart != null">
${_conditionType_} a.shiftsId <![CDATA[ >= ]]> #{${_conditionParam_}.shiftsIdStart}
</if>
<if test="conditionParamRef.containsKey('shiftsIdEnd') and conditionParamRef.shiftsIdEnd != null">
${_conditionType_} a.shiftsId <![CDATA[ <= ]]> #{${_conditionParam_}.shiftsIdEnd}
</if>
<if test="conditionParamRef.containsKey('shiftsName')">
<if test="conditionParamRef.shiftsName != null and conditionParamRef.shiftsName != ''">
${_conditionType_} a.shiftsName like #{${_conditionParam_}.shiftsName}
</if>
<if test="conditionParamRef.shiftsName == null">
${_conditionType_} a.shiftsName is null
</if>
</if>
<if test="conditionParamRef.containsKey('shiftsNameList') and conditionParamRef.shiftsNameList.size() > 0">
${_conditionType_} a.shiftsName in
<foreach collection="conditionParamRef.shiftsNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('shiftsNameNotList') and conditionParamRef.shiftsNameNotList.size() > 0">
${_conditionType_} a.shiftsName not in
<foreach collection="conditionParamRef.shiftsNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('attendanceDate')">
<if test="conditionParamRef.attendanceDate != null ">
......@@ -1054,6 +1006,54 @@
${_conditionType_} a.punchResult <![CDATA[ <= ]]> #{${_conditionParam_}.punchResultEnd}
</if>
<if test="conditionParamRef.containsKey('classId')">
<if test="conditionParamRef.classId != null ">
${_conditionType_} a.classId = #{${_conditionParam_}.classId}
</if>
<if test="conditionParamRef.classId == null">
${_conditionType_} a.classId is null
</if>
</if>
<if test="conditionParamRef.containsKey('classIdList') and conditionParamRef.classIdList.size() > 0">
${_conditionType_} a.classId in
<foreach collection="conditionParamRef.classIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('classIdNotList') and conditionParamRef.classIdNotList.size() > 0">
${_conditionType_} a.classId not in
<foreach collection="conditionParamRef.classIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('classIdStart') and conditionParamRef.classIdStart != null">
${_conditionType_} a.classId <![CDATA[ >= ]]> #{${_conditionParam_}.classIdStart}
</if>
<if test="conditionParamRef.containsKey('classIdEnd') and conditionParamRef.classIdEnd != null">
${_conditionType_} a.classId <![CDATA[ <= ]]> #{${_conditionParam_}.classIdEnd}
</if>
<if test="conditionParamRef.containsKey('className')">
<if test="conditionParamRef.className != null and conditionParamRef.className != ''">
${_conditionType_} a.className like #{${_conditionParam_}.className}
</if>
<if test="conditionParamRef.className == null">
${_conditionType_} a.className is null
</if>
</if>
<if test="conditionParamRef.containsKey('classNameList') and conditionParamRef.classNameList.size() > 0">
${_conditionType_} a.className in
<foreach collection="conditionParamRef.classNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('classNameNotList') and conditionParamRef.classNameNotList.size() > 0">
${_conditionType_} a.className not in
<foreach collection="conditionParamRef.classNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -1117,16 +1117,6 @@
<if test='orderCol.attendanceGroupName != null and "DESC".equalsIgnoreCase(orderCol.attendanceGroupName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('shiftsId')">
a.shiftsId
<if test='orderCol.shiftsId != null and "DESC".equalsIgnoreCase(orderCol.shiftsId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('shiftsName')">
a.shiftsName
<if test='orderCol.shiftsName != null and "DESC".equalsIgnoreCase(orderCol.shiftsName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('attendanceDate')">
a.attendanceDate
<if test='orderCol.attendanceDate != null and "DESC".equalsIgnoreCase(orderCol.attendanceDate)'>DESC</if>
......@@ -1177,6 +1167,16 @@
<if test='orderCol.punchResult != null and "DESC".equalsIgnoreCase(orderCol.punchResult)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('classId')">
a.classId
<if test='orderCol.classId != null and "DESC".equalsIgnoreCase(orderCol.classId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('className')">
a.className
<if test='orderCol.className != null and "DESC".equalsIgnoreCase(orderCol.className)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
......@@ -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