9.17考勤记录保存
parent
a864d3aec3
commit
e0660ca428
|
@ -53,6 +53,120 @@ public class ProMobileAttendanceData extends BaseEntity
|
|||
|
||||
private String basePath;
|
||||
|
||||
/** 用户名 */
|
||||
@Excel(name = "用户名")
|
||||
private String userName;
|
||||
|
||||
/** 用户手机号 */
|
||||
@Excel(name = "用户手机号")
|
||||
private String userPhone;
|
||||
|
||||
/** 子部门名称 */
|
||||
@Excel(name = "子部门名称")
|
||||
private String subDeptName;
|
||||
|
||||
/** 子部门组别名称 */
|
||||
@Excel(name = "子部门组别名称")
|
||||
private String subDeptGroupName;
|
||||
|
||||
/** 工种名称 */
|
||||
@Excel(name = "工种名称")
|
||||
private String craftTypeName;
|
||||
|
||||
/** 岗位名称 */
|
||||
@Excel(name = "岗位名称")
|
||||
private String craftPostName;
|
||||
|
||||
/** 岗位名称 */
|
||||
@Excel(name = "岗位名称")
|
||||
private String userPost;
|
||||
|
||||
private Date startDate;
|
||||
private Date endDate;
|
||||
/** 用户性别 */
|
||||
@Excel(name = "用户性别")
|
||||
private String userSex;
|
||||
|
||||
public String getUserSex() {
|
||||
return userSex;
|
||||
}
|
||||
|
||||
public void setUserSex(String userSex) {
|
||||
this.userSex = userSex;
|
||||
}
|
||||
|
||||
public Date getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
public void setStartDate(Date startDate) {
|
||||
this.startDate = startDate;
|
||||
}
|
||||
|
||||
public Date getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
public void setEndDate(Date endDate) {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
public String getUserPhone() {
|
||||
return userPhone;
|
||||
}
|
||||
|
||||
public void setUserPhone(String userPhone) {
|
||||
this.userPhone = userPhone;
|
||||
}
|
||||
|
||||
public String getSubDeptName() {
|
||||
return subDeptName;
|
||||
}
|
||||
|
||||
public void setSubDeptName(String subDeptName) {
|
||||
this.subDeptName = subDeptName;
|
||||
}
|
||||
|
||||
public String getSubDeptGroupName() {
|
||||
return subDeptGroupName;
|
||||
}
|
||||
|
||||
public void setSubDeptGroupName(String subDeptGroupName) {
|
||||
this.subDeptGroupName = subDeptGroupName;
|
||||
}
|
||||
|
||||
public String getCraftTypeName() {
|
||||
return craftTypeName;
|
||||
}
|
||||
|
||||
public void setCraftTypeName(String craftTypeName) {
|
||||
this.craftTypeName = craftTypeName;
|
||||
}
|
||||
|
||||
public String getCraftPostName() {
|
||||
return craftPostName;
|
||||
}
|
||||
|
||||
public void setCraftPostName(String craftPostName) {
|
||||
this.craftPostName = craftPostName;
|
||||
}
|
||||
|
||||
public String getUserPost() {
|
||||
return userPost;
|
||||
}
|
||||
|
||||
public void setUserPost(String userPost) {
|
||||
this.userPost = userPost;
|
||||
}
|
||||
|
||||
public String getBasePath() {
|
||||
return basePath;
|
||||
}
|
||||
|
|
|
@ -21,31 +21,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="userName" column="user_name" />
|
||||
<result property="userPhone" column="user_phone" />
|
||||
<result property="subDeptName" column="sub_dept_name" />
|
||||
<result property="subDeptGroupName" column="sub_dept_group_name" />
|
||||
<result property="craftTypeName" column="craft_type_name" />
|
||||
<result property="craftPostName" column="craft_post_name" />
|
||||
<result property="userPost" column="user_post" />
|
||||
<result property="userSex" column="user_sex" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProMobileAttendanceDataVo">
|
||||
select id, user_id, project_id, cfg_id, in_out, longitude, latitude, att_date, att_img, is_del, remark, state, create_by, create_time, update_by, update_time from pro_mobile_attendance_data
|
||||
|
||||
select pma.id, pma.user_id, pma.project_id, pma.cfg_id, pma.in_out, pma.longitude, pma.latitude, pma.att_date, pma.att_img, pma.is_del,
|
||||
pma.remark, pma.state, pma.create_by, pma.create_time, pma.update_by, pma.update_time,
|
||||
dic1.dict_label as craft_type_name,dic2.dict_label as craft_post_name,
|
||||
psu.user_name, psu.user_phone,psu.sub_dept_name,psu.sub_dept_group_name,psu.user_post,psu.user_sex
|
||||
from pro_mobile_attendance_data pma
|
||||
left join pro_project_info_subdepts_users psu on pma.user_id=psu.user_id
|
||||
left join sys_dict_data dic1 on psu.`craft_type`=dic1.`dict_value` and dic1.`dict_type`='pro_craft_type'
|
||||
left join sys_dict_data dic2 on psu.`craft_post`=dic2.`dict_value` and dic2.`dict_type`='pro_craft_post'
|
||||
|
||||
</sql>
|
||||
|
||||
<select id="selectProMobileAttendanceDataList" parameterType="ProMobileAttendanceData" resultMap="ProMobileAttendanceDataResult">
|
||||
<include refid="selectProMobileAttendanceDataVo"/>
|
||||
<where>
|
||||
<if test="userId != null "> and user_id = #{userId}</if>
|
||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||
<if test="cfgId != null "> and cfg_id = #{cfgId}</if>
|
||||
<if test="inOut != null and inOut != ''"> and in_out = #{inOut}</if>
|
||||
<if test="longitude != null "> and longitude = #{longitude}</if>
|
||||
<if test="latitude != null "> and latitude = #{latitude}</if>
|
||||
<if test="attDate != null "> and att_date = #{attDate}</if>
|
||||
<if test="attImg != null and attImg != ''"> and att_img = #{attImg}</if>
|
||||
<if test="isDel != null "> and is_del = #{isDel}</if>
|
||||
<if test="state != null "> and state = #{state}</if>
|
||||
<if test="userId != null "> and pma.user_id = #{userId}</if>
|
||||
<if test="projectId != null "> and pma.project_id = #{projectId}</if>
|
||||
<if test="cfgId != null "> and pma.cfg_id = #{cfgId}</if>
|
||||
<if test="inOut != null and inOut != ''"> and pma.in_out = #{inOut}</if>
|
||||
<if test="longitude != null "> and pma.longitude = #{longitude}</if>
|
||||
<if test="latitude != null "> and pma.latitude = #{latitude}</if>
|
||||
<if test="attDate != null "> and pma.att_date = #{attDate}</if>
|
||||
<if test="attImg != null and attImg != ''"> and pma.att_img = #{attImg}</if>
|
||||
<if test="isDel != null "> and pma.is_del = #{isDel}</if>
|
||||
<if test="state != null "> and pma.state = #{state}</if>
|
||||
<if test="userName!=null and userName!=''"> and psu.user_name like concat('%', #{userName}, '%')</if>
|
||||
<if test="userPhone!=null and userPhone!=''"> and psu.user_phone like concat('%', #{userPhone}, '%')</if>
|
||||
<if test="startDate!=null"> and date(pma.att_date) >= date(#{startDate})</if>
|
||||
<if test="endDate!=null"> and date(pma.att_date) <= date(#{endDate})</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectProMobileAttendanceDataById" parameterType="Long" resultMap="ProMobileAttendanceDataResult">
|
||||
<include refid="selectProMobileAttendanceDataVo"/>
|
||||
where id = #{id}
|
||||
where pma.id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertProMobileAttendanceData" parameterType="ProMobileAttendanceData" useGeneratedKeys="true" keyProperty="id">
|
||||
|
|
|
@ -144,6 +144,16 @@ public class QuartzProjectAttendanceData extends BaseEntity
|
|||
}
|
||||
|
||||
|
||||
private String inOut;
|
||||
|
||||
public String getInOut() {
|
||||
return inOut;
|
||||
}
|
||||
|
||||
public void setInOut(String inOut) {
|
||||
this.inOut = inOut;
|
||||
}
|
||||
|
||||
private Long projectId;
|
||||
@Excel(name = "项目名称")
|
||||
private String projectName;
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.alibaba.fastjson2.JSON;
|
|||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.yanzhu.common.core.constant.SecurityConstants;
|
||||
import com.yanzhu.common.core.context.SecurityContextHolder;
|
||||
import com.yanzhu.common.core.domain.R;
|
||||
import com.yanzhu.common.core.enums.*;
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
|
@ -17,6 +18,8 @@ import com.yanzhu.common.redis.service.RedisService;
|
|||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
import com.yanzhu.job.domain.*;
|
||||
import com.yanzhu.job.service.*;
|
||||
import com.yanzhu.manage.domain.ProMobileAttendanceData;
|
||||
import com.yanzhu.manage.mapper.ProMobileAttendanceDataMapper;
|
||||
import com.yanzhu.system.api.RemoteFileService;
|
||||
import com.yanzhu.system.api.RemoteUserService;
|
||||
import com.yanzhu.system.api.domain.SysFile;
|
||||
|
@ -70,6 +73,9 @@ public class AttendanceJgwTask {
|
|||
@Autowired
|
||||
private IQuartzProAttendanceDataService quartzProAttendanceDataService;
|
||||
|
||||
@Autowired
|
||||
private ProMobileAttendanceDataMapper proMobileAttendanceDataMapper;
|
||||
|
||||
private final String code = "jgw";
|
||||
private static final String JGW_HOST = "http://api.gongyoumishu.com:80/gomeetapi/";
|
||||
|
||||
|
@ -1017,6 +1023,12 @@ public class AttendanceJgwTask {
|
|||
quartzProAttendanceDataQuery.setSubDeptId(quartzProSubdeptsUsers.getSubDeptId());
|
||||
quartzProAttendanceDataQuery.setUserId(quartzProSubdeptsUsers.getUserId());
|
||||
quartzProAttendanceDataQuery.setSearchValue(json.getString("signDate"));
|
||||
|
||||
ProMobileAttendanceData mobileAttendanceData = new ProMobileAttendanceData();
|
||||
mobileAttendanceData.setProjectId(quartzProAttendanceDataQuery.getProjectId());
|
||||
mobileAttendanceData.setUserId(quartzProAttendanceDataQuery.getUserId());
|
||||
mobileAttendanceData.setCfgId(it.getId());
|
||||
|
||||
List<QuartzProAttendanceData> attendanceDataList = quartzProAttendanceDataService.selectProAttendanceDataList(quartzProAttendanceDataQuery);
|
||||
if(attendanceDataList!=null && attendanceDataList.size()>0){
|
||||
QuartzProAttendanceData quartzProAttendanceData = attendanceDataList.get(0);
|
||||
|
@ -1026,22 +1038,34 @@ public class AttendanceJgwTask {
|
|||
quartzProAttendanceData.setInTime(DateUtils.parseDate(json.getString("checkinTime")));
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setInPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("in");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getInTime());
|
||||
}
|
||||
}else if(machineType.equals("3")){
|
||||
//签出
|
||||
quartzProAttendanceData.setOutTime(DateUtils.parseDate(json.getString("checkinTime")));
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setOutPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("in");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getOutTime());
|
||||
}else{
|
||||
//默认
|
||||
if(quartzProAttendanceData.getInData()==null){
|
||||
quartzProAttendanceData.setInTime(DateUtils.parseDate(json.getString("checkinTime")));
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setInPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("in");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getInTime());
|
||||
}else{
|
||||
quartzProAttendanceData.setOutTime(DateUtils.parseDate(json.getString("checkinTime")));
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setOutPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("out");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getOutTime());
|
||||
}
|
||||
}
|
||||
quartzProAttendanceData.setUpdateBy("JGW-TASK");
|
||||
|
@ -1067,16 +1091,25 @@ public class AttendanceJgwTask {
|
|||
quartzProAttendanceData.setInTime(checkinTime);
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setInPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("in");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getInTime());
|
||||
}else if(machineType.equals("3")){
|
||||
//签出
|
||||
quartzProAttendanceData.setOutTime(checkinTime);
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setOutPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("out");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getOutTime());
|
||||
}else{
|
||||
//默认
|
||||
quartzProAttendanceData.setInTime(checkinTime);
|
||||
String checkPhoto = getPhoto(appId, token, it.getProjectPackage(), datePath, json.getString("signimg"));
|
||||
quartzProAttendanceData.setInPhoto(checkPhoto);
|
||||
mobileAttendanceData.setInOut("in");
|
||||
mobileAttendanceData.setAttImg(checkPhoto);
|
||||
mobileAttendanceData.setAttDate(quartzProAttendanceData.getInTime());
|
||||
}
|
||||
quartzProAttendanceData.setDeviceNo(json.getString("deviceSerialNo"));
|
||||
quartzProAttendanceData.setCreateBy("JGW-TASK");
|
||||
|
@ -1084,6 +1117,12 @@ public class AttendanceJgwTask {
|
|||
quartzProAttendanceData.setSource(quartzProSubdeptsUsers.getSource());
|
||||
quartzProAttendanceDataService.insertProAttendanceData(quartzProAttendanceData);
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(mobileAttendanceData.getAttImg())){
|
||||
mobileAttendanceData.setCreateTime(new Date());
|
||||
mobileAttendanceData.setCreateBy(SecurityContextHolder.getUserName());
|
||||
proMobileAttendanceDataMapper.insertProMobileAttendanceData(mobileAttendanceData);
|
||||
}
|
||||
}
|
||||
}
|
||||
doSyncAttendanceData(jo, endId, it);
|
||||
|
|
|
@ -5,6 +5,7 @@ import cn.hutool.core.util.NumberUtil;
|
|||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.yanzhu.common.core.context.SecurityContextHolder;
|
||||
import com.yanzhu.common.core.enums.*;
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
import com.yanzhu.common.core.utils.DateUtils;
|
||||
|
@ -13,6 +14,8 @@ import com.yanzhu.common.core.utils.http.HttpUtils;
|
|||
import com.yanzhu.common.redis.service.RedisService;
|
||||
import com.yanzhu.job.domain.*;
|
||||
import com.yanzhu.job.service.*;
|
||||
import com.yanzhu.manage.domain.ProMobileAttendanceData;
|
||||
import com.yanzhu.manage.mapper.ProMobileAttendanceDataMapper;
|
||||
import com.yanzhu.system.api.RemoteFileService;
|
||||
import com.yanzhu.system.api.RemoteUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -58,6 +61,8 @@ public class AttendanceSzjTask {
|
|||
@Autowired
|
||||
private IQuartzProjectAttendanceDataService attendanceDataService;
|
||||
|
||||
@Autowired
|
||||
private ProMobileAttendanceDataMapper proMobileAttendanceDataMapper;
|
||||
|
||||
private final String code = "szj";
|
||||
private static final String SZJ_HOST = "https://sc.uni-ubi.com/sc/api/";
|
||||
|
@ -139,9 +144,11 @@ public class AttendanceSzjTask {
|
|||
QuartzProjectAttendanceData attendance = new QuartzProjectAttendanceData();
|
||||
attendance.setServerid(jo.getString("id"));
|
||||
if(1==jo.getInteger("doorType")){
|
||||
attendance.setInOut("in");
|
||||
attendance.setAttendanceTime(jo.getString("showTime"));
|
||||
}else{
|
||||
attendance.setAttendanceOutTime(jo.getString("showTime"));
|
||||
attendance.setInOut("out");
|
||||
}
|
||||
attendance.setIdentification(jo.getString("idCardNo"));
|
||||
attendance.setWorkerName(jo.getString("personName"));
|
||||
|
@ -625,6 +632,25 @@ public class AttendanceSzjTask {
|
|||
att.setId(attList.get(0).getId());
|
||||
attendanceDataService.updateSurProjectAttendanceData(att);
|
||||
}
|
||||
|
||||
ProMobileAttendanceData proMobileAttendanceData=new ProMobileAttendanceData();
|
||||
proMobileAttendanceData.setCfgId(cfg.getId());
|
||||
proMobileAttendanceData.setUserId(user.getId());
|
||||
proMobileAttendanceData.setProjectId(user.getProjectId());
|
||||
proMobileAttendanceData.setInOut(att.getInOut());
|
||||
if("in".equals(att.getInOut())){
|
||||
proMobileAttendanceData.setAttDate(DateUtil.parseDate(att.getAttendanceTime()));
|
||||
}else{
|
||||
proMobileAttendanceData.setAttDate(DateUtil.parseDate(att.getAttendanceOutTime()));
|
||||
}
|
||||
proMobileAttendanceData.setAttImg(att.getScanPhoto());
|
||||
proMobileAttendanceData.setCreateTime(new Date());
|
||||
proMobileAttendanceData.setCreateBy(SecurityContextHolder.getUserName());
|
||||
proMobileAttendanceData.setIsDel(0L);
|
||||
proMobileAttendanceData.setRemark("");
|
||||
proMobileAttendanceData.setState(0L);
|
||||
|
||||
//TODO 保存考勤日志未完成(第三方)
|
||||
}
|
||||
if(atts.size()==100){
|
||||
doSyncAttendance(token,cfg,offset,startTime,endTime);
|
||||
|
|
|
@ -19,10 +19,7 @@ import com.yanzhu.common.redis.service.RedisService;
|
|||
import com.yanzhu.common.security.service.TokenService;
|
||||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
import com.yanzhu.manage.api.vo.*;
|
||||
import com.yanzhu.manage.domain.SurProjectAttendanceData;
|
||||
import com.yanzhu.manage.domain.SurProjectAttendanceGroup;
|
||||
import com.yanzhu.manage.domain.SurProjectAttendanceUser;
|
||||
import com.yanzhu.manage.domain.SysApplyConfig;
|
||||
import com.yanzhu.manage.domain.*;
|
||||
import com.yanzhu.manage.enums.HttpStatusEnum;
|
||||
import com.yanzhu.manage.service.ISurProjectAttendanceDataService;
|
||||
import com.yanzhu.manage.service.ISurProjectAttendanceGroupService;
|
||||
|
@ -306,7 +303,11 @@ public class LabourApiController extends BaseController {
|
|||
findData.setAppId(sysApplyConfig.getAppId());
|
||||
findData.setWorkerId(req.getWorkerId());
|
||||
findData.setAttendanceTime(req.getAttendanceTime());
|
||||
//TODO 保存考勤日志未完成(第三方)
|
||||
SurProjectAttendanceData surProjectAttendanceData = surProjectAttendanceDataService.findCurrentAttendanceData(findData);
|
||||
ProMobileAttendanceData proMobileAttendanceData = new ProMobileAttendanceData();
|
||||
proMobileAttendanceData.setCfgId(sysApplyConfig.getCfgId());
|
||||
|
||||
if (surProjectAttendanceData != null) {
|
||||
//这里不能修改出勤时间
|
||||
if (Objects.equals("L", req.getAttendanceType())) {
|
||||
|
|
|
@ -6,11 +6,9 @@ import com.yanzhu.common.core.utils.StringUtils;
|
|||
import com.yanzhu.common.core.web.domain.AjaxResult;
|
||||
import com.yanzhu.manage.domain.AttendanceUbiData;
|
||||
import com.yanzhu.manage.domain.AttendanceUbiDevice;
|
||||
import com.yanzhu.manage.domain.ProMobileAttendanceData;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
|
||||
import com.yanzhu.manage.service.IAttendanceUbiDataService;
|
||||
import com.yanzhu.manage.service.IAttendanceUbiDeviceService;
|
||||
import com.yanzhu.manage.service.IProProjectInfoDeptsService;
|
||||
import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService;
|
||||
import com.yanzhu.manage.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
@ -35,6 +33,9 @@ public class UniCallBackController {
|
|||
@Autowired
|
||||
private IAttendanceUbiDeviceService attendanceUbiDeviceService;
|
||||
|
||||
@Autowired
|
||||
private IProMobileAttendanceDataService proMobileAttendanceDataService;
|
||||
|
||||
/**
|
||||
* 识别回调
|
||||
* @return
|
||||
|
@ -122,6 +123,7 @@ public class UniCallBackController {
|
|||
if(device==null){
|
||||
return AjaxResult.error("没有查询到设备No");
|
||||
}
|
||||
ProMobileAttendanceData attendanceData=new ProMobileAttendanceData();
|
||||
if(list.size()==0){
|
||||
//增加操作
|
||||
ProProjectInfoSubdeptsUsers userWhere=new ProProjectInfoSubdeptsUsers();
|
||||
|
@ -145,14 +147,22 @@ public class UniCallBackController {
|
|||
addData.setSubDeptGroupName(proUser.getSubDeptGroupName());
|
||||
addData.setCraftPost(proUser.getCraftPost());
|
||||
addData.setCraftType(proUser.getCraftType());
|
||||
attendanceData.setUserId(proUser.getUserId());
|
||||
attendanceData.setProjectId(projectId);
|
||||
attendanceData.setAttDate(showTime);
|
||||
attendanceData.setAttImg(filePath);
|
||||
if(device.getDirection()==0) {
|
||||
addData.setInTime(showTime);
|
||||
addData.setInData(data);
|
||||
addData.setInPhoto(filePath);
|
||||
attendanceData.setInOut("in");
|
||||
proMobileAttendanceDataService.addAttendanceData(attendanceData);
|
||||
}else{
|
||||
addData.setOutPhoto(filePath);
|
||||
addData.setOutData(data);
|
||||
addData.setOutTime(showTime);
|
||||
attendanceData.setInOut("out");
|
||||
proMobileAttendanceDataService.addAttendanceData(attendanceData);
|
||||
}
|
||||
addData.setDeviceNo(deviceNo);
|
||||
attendanceUbiDataService.insertAttendanceUbiData(addData);
|
||||
|
@ -166,12 +176,18 @@ public class UniCallBackController {
|
|||
}
|
||||
Date dt1=upData.getInTime();
|
||||
Date dt2=upData.getOutTime();
|
||||
attendanceData.setUserId(upData.getUserId());
|
||||
attendanceData.setProjectId(projectId);
|
||||
attendanceData.setAttDate(showTime);
|
||||
attendanceData.setAttImg(filePath);
|
||||
if(device.getDirection()==0){
|
||||
//入
|
||||
if(dt1==null || showTime.getTime()<dt1.getTime()){
|
||||
upData.setInPhoto(filePath);
|
||||
upData.setInData(data);
|
||||
upData.setInTime(showTime);
|
||||
attendanceData.setInOut("in");
|
||||
proMobileAttendanceDataService.addAttendanceData(attendanceData);
|
||||
}else{
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
@ -181,6 +197,8 @@ public class UniCallBackController {
|
|||
upData.setOutData(data);
|
||||
upData.setOutPhoto(filePath);
|
||||
upData.setOutTime(showTime);
|
||||
attendanceData.setInOut("out");
|
||||
proMobileAttendanceDataService.addAttendanceData(attendanceData);
|
||||
}else {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
|
|
@ -58,4 +58,9 @@ public interface IProMobileAttendanceDataService
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteProMobileAttendanceDataById(Long id);
|
||||
|
||||
/**
|
||||
* 新增考勤数据
|
||||
*/
|
||||
public int addAttendanceData(ProMobileAttendanceData attendanceData);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.yanzhu.manage.service;
|
||||
|
||||
import com.yanzhu.device.domain.ProjectPitMonitCfg;
|
||||
import com.yanzhu.manage.domain.ProMobileAttendanceData;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -74,4 +76,6 @@ public interface IProjectPitMonitCfgService
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteSurProjectPitMonitCfgById(Long id);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -97,4 +97,13 @@ public class ProMobileAttendanceDataServiceImpl implements IProMobileAttendanceD
|
|||
{
|
||||
return proMobileAttendanceDataMapper.deleteProMobileAttendanceDataById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addAttendanceData(ProMobileAttendanceData attendanceData) {
|
||||
attendanceData.setIsDel(0L);
|
||||
attendanceData.setRemark("");
|
||||
attendanceData.setCfgId(0L);
|
||||
attendanceData.setState(0L);
|
||||
return insertProMobileAttendanceData(attendanceData);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -102,7 +102,7 @@ public class ProUserInoutRecordServiceImpl implements IProUserInoutRecordService
|
|||
@Override
|
||||
public int addRecord(ProProjectInfoSubdeptsUsers user) {
|
||||
ProUserInoutRecord record = new ProUserInoutRecord();
|
||||
record.setUserId(user.getId());
|
||||
record.setUserId(user.getUserId());
|
||||
record.setUseStatus(user.getUseStatus());
|
||||
record.setUserName(user.getUserName());
|
||||
record.setUserPhone(user.getUserPhone());
|
||||
|
|
|
@ -4,10 +4,12 @@ import com.yanzhu.common.core.utils.DateUtils;
|
|||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
import com.yanzhu.device.domain.ProjectPitMonitCfg;
|
||||
import com.yanzhu.device.mapper.ProjectPitMonitCfgMapper;
|
||||
import com.yanzhu.manage.domain.ProMobileAttendanceData;
|
||||
import com.yanzhu.manage.service.IProjectPitMonitCfgService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -112,4 +114,5 @@ public class ProjectPitMonitCfgServiceImpl implements IProjectPitMonitCfgService
|
|||
{
|
||||
return projectPitMonitCfgMapper.deleteSurProjectPitMonitCfgById(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,77 +1,15 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="用户ID" prop="userId">
|
||||
<el-input
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请输入用户ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="用户名" prop="userName">
|
||||
<el-input v-model="queryParams.userName" placeholder="请输入用户名" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目ID" prop="projectId">
|
||||
<el-input
|
||||
v-model="queryParams.projectId"
|
||||
placeholder="请输入项目ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="用户手机" prop="userPhone">
|
||||
<el-input v-model="queryParams.userPhone" placeholder="请输入用户手机" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="配置ID" prop="cfgId">
|
||||
<el-input
|
||||
v-model="queryParams.cfgId"
|
||||
placeholder="请输入配置ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="进还是出" prop="inOut">
|
||||
<el-input
|
||||
v-model="queryParams.inOut"
|
||||
placeholder="请输入进还是出"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="经度" prop="longitude">
|
||||
<el-input
|
||||
v-model="queryParams.longitude"
|
||||
placeholder="请输入经度"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="纬度" prop="latitude">
|
||||
<el-input
|
||||
v-model="queryParams.latitude"
|
||||
placeholder="请输入纬度"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="考勤时间" prop="attDate">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.attDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择考勤时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input
|
||||
v-model="queryParams.isDel"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="state">
|
||||
<el-input
|
||||
v-model="queryParams.state"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="考勤日期" style="width: 308px">
|
||||
<el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
|
@ -79,81 +17,54 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['manage:mobileAttendanceData:add']"
|
||||
>新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:mobileAttendanceData:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="Edit"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['manage:mobileAttendanceData:edit']"
|
||||
>修改</el-button>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['manage:mobileAttendanceData:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['manage:mobileAttendanceData:remove']"
|
||||
>删除</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['manage:mobileAttendanceData:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="Download"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['manage:mobileAttendanceData:export']"
|
||||
>导出</el-button>
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport"
|
||||
v-hasPermi="['manage:mobileAttendanceData:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</el-row> -->
|
||||
|
||||
<el-table v-loading="loading" :data="mobileAttendanceDataList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="${comment}" align="center" prop="id" />
|
||||
<el-table-column label="用户ID" align="center" prop="userId" />
|
||||
<el-table-column label="项目ID" align="center" prop="projectId" />
|
||||
<el-table-column label="配置ID" align="center" prop="cfgId" />
|
||||
<el-table-column label="进还是出" align="center" prop="inOut" />
|
||||
<el-table-column label="经度" align="center" prop="longitude" />
|
||||
<el-table-column label="纬度" align="center" prop="latitude" />
|
||||
|
||||
<el-table-column label="用户名" align="center" prop="userName" />
|
||||
<el-table-column label="用户手机" align="center" prop="userPhone" />
|
||||
<el-table-column label="所属单位" align="center" prop="subDeptName" />
|
||||
<el-table-column label="班组" align="center" prop="subDeptGroupName" />
|
||||
<el-table-column label="进出标识" align="center" prop="inOut">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.inOut === 'in'" type="success">进</el-tag>
|
||||
<el-tag v-else type="danger">出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="考勤时间" align="center" prop="attDate" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.attDate, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="考勤照片" align="center" prop="attImg" />
|
||||
<el-table-column label="${comment}" align="center" prop="isDel" />
|
||||
<el-table-column label="${comment}" align="center" prop="remark" />
|
||||
<el-table-column label="${comment}" align="center" prop="state" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="考勤照片" align="center" prop="attImg">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:mobileAttendanceData:edit']">修改</el-button>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:mobileAttendanceData:remove']">删除</el-button>
|
||||
<el-image v-if="scope.row.attImg" :src="scope.row.attImg" style="height:60px;" :preview-teleported="true" :preview-src-list="[scope.row.attImg]"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
|
||||
<!-- 添加或修改人员考勤记录对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
|
@ -177,11 +88,7 @@
|
|||
<el-input v-model="form.latitude" placeholder="请输入纬度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="考勤时间" prop="attDate">
|
||||
<el-date-picker clearable
|
||||
v-model="form.attDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择考勤时间">
|
||||
<el-date-picker clearable v-model="form.attDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择考勤时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="考勤照片" prop="attImg">
|
||||
|
@ -221,7 +128,7 @@ const single = ref(true);
|
|||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const title = ref("");
|
||||
|
||||
const dateRange = ref([]);
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
|
@ -247,7 +154,14 @@ const { queryParams, form, rules } = toRefs(data);
|
|||
/** 查询人员考勤记录列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
listMobileAttendanceData(queryParams.value).then(response => {
|
||||
let postData={
|
||||
...queryParams.value
|
||||
};
|
||||
if(dateRange.value && dateRange.value.length>0){
|
||||
postData.startDate=dateRange.value[0];
|
||||
postData.endDate=dateRange.value[1];
|
||||
}
|
||||
listMobileAttendanceData(postData).then(response => {
|
||||
mobileAttendanceDataList.value = response.rows;
|
||||
total.value = response.total;
|
||||
loading.value = false;
|
||||
|
|
|
@ -216,11 +216,10 @@ const { queryParams, form, rules } = toRefs(data);
|
|||
/** 查询员工出入场记录列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
console.log(dateRange)
|
||||
let postData={
|
||||
...queryParams.value
|
||||
};
|
||||
if(dateRange.value.length>0){
|
||||
if(dateRange.value && dateRange.value.length>0){
|
||||
postData.startDate=dateRange.value[0];
|
||||
postData.endDate=dateRange.value[1];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue