From ee0f0377ceef6244b057795d85309b7818c7c125 Mon Sep 17 00:00:00 2001 From: guo Date: Thu, 28 Sep 2023 17:14:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=91=E7=AD=91=E5=B7=A5=E5=AE=9E=E5=90=8D?= =?UTF-8?q?=E5=88=B6=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worker/mapper/WorkerAttendanceMapper.java | 2 + .../mapper/xml/WorkerAttendanceMapper.xml | 13 ++ src/main/java/com/zhgd/xmgl/task/JzgTask.java | 135 ++++++++++++++++-- 3 files changed, 137 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendanceMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendanceMapper.java index a6cf05a43..31cb78486 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendanceMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendanceMapper.java @@ -83,4 +83,6 @@ public interface WorkerAttendanceMapper extends BaseMapper { Page getPassRecord(@Param("q") GetPassRecordDto dto, Page page); List queryAttendanceTrend(Map map); + + List queryPresenceList(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml index 6a3057d04..a6c50a1e1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml @@ -793,4 +793,17 @@ ) t1 GROUP BY t1.daytime + + diff --git a/src/main/java/com/zhgd/xmgl/task/JzgTask.java b/src/main/java/com/zhgd/xmgl/task/JzgTask.java index 1e599c524..ff072ba4b 100644 --- a/src/main/java/com/zhgd/xmgl/task/JzgTask.java +++ b/src/main/java/com/zhgd/xmgl/task/JzgTask.java @@ -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 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().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 map = new HashMap<>(); + map.put("projectSn", projectSn); + + //计算在场 + List 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() .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 jzgList = getPostAllList(appKey, appSecret, projectCode, JzgTeamInfo.class, "/api/v1/getTeamInfo", host); HashMap 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 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 queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TeamInfo::getProjectSn, teamInfo.getProjectSn()) .eq(TeamInfo::getEnterpriseId, teamInfo.getEnterpriseId())