feat(REQ-3714) 工人退场流程优化 - 考勤记录API对接

This commit is contained in:
luofu 2025-03-05 14:46:42 +08:00
parent 28f6b7736c
commit 01e2b05443
5 changed files with 192 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package cn.axzo.orgmanax.infra.client.attendance;
import cn.axzo.orgmanax.infra.client.attendance.dto.AttendanceClockRecordListReq;
import cn.axzo.orgmanax.infra.client.attendance.dto.AttendanceClockRecordResp;
import java.util.List;
/**
* @author luofu
* @version 1.0
* @description 考勤记录相关的API
* @date 2025/3/5
*/
public interface AttendanceRecordClient {
/**
* 考勤打卡记录通用查询
*
* @param request 入参
* @return 打卡记录列表
*/
List<AttendanceClockRecordResp> listClockRecords(AttendanceClockRecordListReq request);
}

View File

@ -0,0 +1,71 @@
package cn.axzo.orgmanax.infra.client.attendance.dto;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import java.util.Date;
import java.util.List;
/**
* @author luofu
* @version 1.0
* @description 考勤打卡记录列表查询参数
* @date 2025/3/5
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceClockRecordListReq {
/**
* 项目部id - 必传
*/
@NonNull
private Long workspaceId;
/**
* personId列表
*/
private List<Long> personIds;
/**
* 用户类型用户类型
* 1工人
* 2从业人员
* 4班组长
*/
private Integer userType;
/**
* 班组id集合
*/
private List<Long> teamIds;
/**
* 打卡开始时间
*/
private Date clockAtFrom;
/**
* 打卡结束时间
*/
private Date clockAtTo;
/**
* 打卡类型1进场2出场
*/
private Integer clockType;
/**
* 打卡方式0-闸机 1-电子围栏 2-考勤补卡
*/
private Integer clockMethod;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

View File

@ -0,0 +1,53 @@
package cn.axzo.orgmanax.infra.client.attendance.dto;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author luofu
* @version 1.0
* @description 考勤打卡记录
* @date 2025/3/5
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceClockRecordResp {
/**
* 项目部id
*/
private Long workspaceId;
/**
* 用户类型用户类型
* 1工人
* 2从业人员
* 4班组长
*/
private Integer userType;
/**
* 用户名称
*/
private String userName;
/**
* personId
*/
private Long personId;
/**
* 班组id
*/
private Long teamId;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

View File

@ -62,6 +62,12 @@
</exclusion>
</exclusions>
</dependency>
<!-- 考勤依赖 -->
<dependency>
<groupId>cn.axzo.attendance</groupId>
<artifactId>attendance-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,39 @@
package cn.axzo.orgmanax.integration.sdk.attendance;
import cn.axzo.attendance.api.AttendanceRecordApi;
import cn.axzo.attendance.req.AttendancePersonQueryReq;
import cn.axzo.attendance.res.AttendancePersonInfoRes;
import cn.axzo.orgmanax.infra.client.attendance.AttendanceRecordClient;
import cn.axzo.orgmanax.infra.client.attendance.dto.AttendanceClockRecordListReq;
import cn.axzo.orgmanax.infra.client.attendance.dto.AttendanceClockRecordResp;
import cn.axzo.orgmanax.integration.core.RpcWrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author luofu
* @version 1.0
* @description 考勤打卡记录相关API
* @date 2025/3/5
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class AttendanceRecordClientImpl implements AttendanceRecordClient {
private final AttendanceRecordApi attendanceRecordApi;
@Override
public List<AttendanceClockRecordResp> listClockRecords(AttendanceClockRecordListReq request) {
AttendancePersonQueryReq req = new AttendancePersonQueryReq();
BeanUtils.copyProperties(request, req);
List<AttendancePersonInfoRes> records = RpcWrapper.commonRes(() -> attendanceRecordApi.listExistAttendancePerson(req));
return CollUtil.map(records, record -> BeanUtil.copyProperties(record, AttendanceClockRecordResp.class), true);
}
}