金筑工实名制同步数据
This commit is contained in:
parent
2a5561927d
commit
ee0f0377ce
@ -83,4 +83,6 @@ public interface WorkerAttendanceMapper extends BaseMapper<WorkerAttendance> {
|
||||
Page<WorkerAttendanceBo> getPassRecord(@Param("q") GetPassRecordDto dto, Page<WorkerAttendanceBo> page);
|
||||
|
||||
List<NumberTimeTableVo> queryAttendanceTrend(Map<String, Object> map);
|
||||
|
||||
List<WorkerAttendance> queryPresenceList(Map<String, Object> map);
|
||||
}
|
||||
|
||||
@ -793,4 +793,17 @@
|
||||
) t1
|
||||
GROUP BY t1.daytime
|
||||
</select>
|
||||
|
||||
<select id="queryPresenceList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerAttendance">
|
||||
SELECT a.* FROM worker_attendance a WHERE a.id in (
|
||||
SELECT
|
||||
max( id )
|
||||
FROM
|
||||
`worker_attendance`
|
||||
WHERE
|
||||
project_sn = #{projectSn}
|
||||
AND create_time > DATE_SUB(CURRENT_DATE,INTERVAL 1 day)
|
||||
GROUP BY
|
||||
person_sn ) AND a.pass_type = 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -20,13 +19,11 @@ import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectEnterpriseService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.*;
|
||||
import com.zhgd.xmgl.modules.worker.service.*;
|
||||
import com.zhgd.xmgl.task.jzg.*;
|
||||
import com.zhgd.xmgl.util.IdCardUtils;
|
||||
import com.zhgd.xmgl.util.MessageUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
@ -73,6 +70,8 @@ public class JzgTask {
|
||||
@Autowired
|
||||
private TeamInfoMapper teamInfoMapper;
|
||||
@Autowired
|
||||
private WorkerTypeMapper workerTypeMapper;
|
||||
@Autowired
|
||||
private DepartmentInfoMapper departmentInfoMapper;
|
||||
@Autowired
|
||||
private IDepartmentInfoService departmentInfoService;
|
||||
@ -87,6 +86,8 @@ public class JzgTask {
|
||||
@Autowired
|
||||
private WorkerAttendanceMapper workerAttendanceMapper;
|
||||
@Autowired
|
||||
private WorkerAttendancePresenceMapper workerAttendancePresenceMapper;
|
||||
@Autowired
|
||||
private RedisRepository redisRepository;
|
||||
/**
|
||||
* prefix+projectSn:time
|
||||
@ -117,7 +118,7 @@ public class JzgTask {
|
||||
if (StrUtil.isNotBlank(appKey) && StrUtil.isNotBlank(appSecret) && StrUtil.isNotBlank(projectCode) && StrUtil.isNotBlank(jzgHost)) {
|
||||
log.info("realNameSystem实名制同步开始,projectSn:{}", projectSn);
|
||||
syncEnterpriseInfo(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
syncTeamInfo(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
syncTeamInfoAndWorkType(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
syncManagerInfo(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
syncWorker(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
syncWorkerAttendance(appKey, appSecret, projectCode, projectSn, jzgHost);
|
||||
@ -128,10 +129,11 @@ public class JzgTask {
|
||||
ArrayList<JzgWorkerAttendance> jzgList = getPostAllList(appKey, appSecret, projectCode, JzgWorkerAttendance.class, "/api/v1/getAttendanceInfo", host);
|
||||
String key = JZG_WORKER_ATTENDANCE_LAST_TIME_PREFIX + projectSn;
|
||||
Long time = (Long) redisRepository.get(key);
|
||||
workerAttendancePresenceMapper.delete(new LambdaQueryWrapper<WorkerAttendancePresence>().eq(WorkerAttendancePresence::getProjectSn, projectSn));
|
||||
for (JzgWorkerAttendance attendance : jzgList) {
|
||||
try {
|
||||
if (time == null || attendance.getCheckDate() > time) {
|
||||
saveWorkerInfo(attendance, projectSn);
|
||||
saveWorkerAttendance(attendance, projectSn);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
@ -143,9 +145,25 @@ public class JzgTask {
|
||||
redisRepository.set(key, checkDate);
|
||||
}
|
||||
}
|
||||
setPresence(projectSn);
|
||||
}
|
||||
|
||||
private void saveWorkerInfo(JzgWorkerAttendance jzg, String projectSn) {
|
||||
private void setPresence(String projectSn) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("projectSn", projectSn);
|
||||
|
||||
//计算在场
|
||||
List<WorkerAttendance> presenceList = workerAttendanceMapper.queryPresenceList(map);
|
||||
for (WorkerAttendance workerAttendance : presenceList) {
|
||||
WorkerAttendancePresence p = new WorkerAttendancePresence();
|
||||
p.setPersonSn(workerAttendance.getPersonSn());
|
||||
p.setCreateTime(DateUtil.now());
|
||||
p.setProjectSn(projectSn);
|
||||
workerAttendancePresenceMapper.insert(p);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveWorkerAttendance(JzgWorkerAttendance jzg, String projectSn) {
|
||||
WorkerAttendance workerAttendance = new WorkerAttendance();
|
||||
WorkerInfo wi = workerInfoMapper.selectOne(new LambdaQueryWrapper<WorkerInfo>()
|
||||
.eq(WorkerInfo::getJzgUserId, jzg.getUserId()));
|
||||
@ -282,6 +300,7 @@ public class JzgTask {
|
||||
wi.setExitDate(DateUtil.formatDate(new Date(jzg.getExitTime())));
|
||||
}
|
||||
wi.setJzgUserId(jzg.getUserId());
|
||||
wi.setBirthday(MapUtils.getString(IdCardUtils.getBirthdayAgeSex(jzg.getIdCardNumber()), "birthday"));
|
||||
return wi;
|
||||
}
|
||||
|
||||
@ -310,12 +329,89 @@ public class JzgTask {
|
||||
//wi.setTeamId();
|
||||
//wi.setDepartmentId();
|
||||
wi.setJobName(getJobName(jzg.getJobType()));
|
||||
wi.setJobType(getJobType(jzg.getJobType()));
|
||||
if (jzg.getExitTime() != null) {
|
||||
wi.setExitDate(DateUtil.formatDate(new Date(jzg.getExitTime())));
|
||||
}
|
||||
wi.setBirthday(MapUtils.getString(IdCardUtils.getBirthdayAgeSex(jzg.getIdCardNumber()), "birthday"));
|
||||
return wi;
|
||||
}
|
||||
|
||||
private String getJobType(String jobType) {
|
||||
if (StrUtil.isBlank(jobType)) {
|
||||
return null;
|
||||
}
|
||||
switch (jobType) {
|
||||
case "1001":
|
||||
return "19";
|
||||
case "1002":
|
||||
return "19";
|
||||
case "1003":
|
||||
return "19";
|
||||
case "1004":
|
||||
return "19";
|
||||
case "1005":
|
||||
return "19";
|
||||
case "1006":
|
||||
return "19";
|
||||
case "1007":
|
||||
return "19";
|
||||
case "1008":
|
||||
return "5";
|
||||
case "1009":
|
||||
return "5";
|
||||
case "1010":
|
||||
return "5";
|
||||
case "1011":
|
||||
return "5";
|
||||
case "1012":
|
||||
return "5";
|
||||
case "1013":
|
||||
return "5";
|
||||
case "1014":
|
||||
return "5";
|
||||
case "1015":
|
||||
return "5";
|
||||
case "1016":
|
||||
return "26";
|
||||
case "1017":
|
||||
return "26";
|
||||
case "1018":
|
||||
return "26";
|
||||
case "1019":
|
||||
return "26";
|
||||
case "1020":
|
||||
return "26";
|
||||
case "1021":
|
||||
return "26";
|
||||
case "1022":
|
||||
return "26";
|
||||
case "1023":
|
||||
return "26";
|
||||
case "1024":
|
||||
return "26";
|
||||
case "1025":
|
||||
return "26";
|
||||
case "1026":
|
||||
return "26";
|
||||
case "1027":
|
||||
return "26";
|
||||
case "1028":
|
||||
return "26";
|
||||
case "1029":
|
||||
return "26";
|
||||
case "1030":
|
||||
return "26";
|
||||
case "1031":
|
||||
return "26";
|
||||
case "1032":
|
||||
return "26";
|
||||
case "1099":
|
||||
return "26";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getNation(String nation) {
|
||||
if (StrUtil.isBlank(nation)) {
|
||||
return null;
|
||||
@ -560,7 +656,7 @@ public class JzgTask {
|
||||
}
|
||||
|
||||
|
||||
private void syncTeamInfo(String appKey, String appSecret, String projectCode, String projectSn, String host) {
|
||||
private void syncTeamInfoAndWorkType(String appKey, String appSecret, String projectCode, String projectSn, String host) {
|
||||
ArrayList<JzgTeamInfo> jzgList = getPostAllList(appKey, appSecret, projectCode, JzgTeamInfo.class, "/api/v1/getTeamInfo", host);
|
||||
HashMap<String, Object> eMap = new HashMap<>();
|
||||
eMap.put("projectSn", projectSn);
|
||||
@ -574,9 +670,9 @@ public class JzgTask {
|
||||
String teamSysNo = teamInfo.getTeamSysNo();
|
||||
TeamInfo info = recordMap.get(teamSysNo);
|
||||
if (info == null) {
|
||||
saveTeamInfo(getTeamInfo(teamInfo, null, projectSn));
|
||||
saveTeamInfoAndWorkType(getTeamInfo(teamInfo, null, projectSn));
|
||||
} else {
|
||||
editTeamInfo(getTeamInfo(teamInfo, info, projectSn));
|
||||
editTeamInfoAndWorkType(getTeamInfo(teamInfo, info, projectSn));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
@ -587,6 +683,7 @@ public class JzgTask {
|
||||
JzgTeamInfo jzgTeamInfo = jzgEnterpriseInfoMap.get(teamInfo.getJzgTeamSn());
|
||||
if (jzgTeamInfo == null) {
|
||||
teamInfoMapper.deleteById(teamInfo.getId());
|
||||
workerTypeMapper.deleteById(teamInfo.getWorkerTypeId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
@ -619,7 +716,13 @@ public class JzgTask {
|
||||
return jzgList;
|
||||
}
|
||||
|
||||
private void editTeamInfo(TeamInfo teamInfo) {
|
||||
private void editTeamInfoAndWorkType(TeamInfo teamInfo) {
|
||||
WorkerType wt = new WorkerType();
|
||||
wt.setId(teamInfo.getWorkerTypeId());
|
||||
wt.setTypeName(teamInfo.getTeamName());
|
||||
wt.setProjectSn(teamInfo.getProjectSn());
|
||||
workerTypeMapper.updateById(wt);
|
||||
|
||||
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(TeamInfo::getProjectSn, teamInfo.getProjectSn())
|
||||
.eq(TeamInfo::getTeamName, teamInfo.getTeamName())
|
||||
@ -632,7 +735,13 @@ public class JzgTask {
|
||||
teamInfoMapper.updateById(teamInfo);
|
||||
}
|
||||
|
||||
private void saveTeamInfo(TeamInfo teamInfo) {
|
||||
private void saveTeamInfoAndWorkType(TeamInfo teamInfo) {
|
||||
WorkerType wt = new WorkerType();
|
||||
wt.setTypeName(teamInfo.getTeamName());
|
||||
wt.setProjectSn(teamInfo.getProjectSn());
|
||||
workerTypeMapper.insert(wt);
|
||||
teamInfo.setWorkerTypeId(wt.getId());
|
||||
|
||||
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(TeamInfo::getProjectSn, teamInfo.getProjectSn())
|
||||
.eq(TeamInfo::getEnterpriseId, teamInfo.getEnterpriseId())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user