diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
index 792e138..a26fdcb 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
@@ -269,7 +269,17 @@ public class PmWorkerServiceImpl implements PmWorkerService{
Integer contractId = mapper.getContractIdByWorkerId(o.getId());
o.setContractId(contractId);
addEinRecord(o);
- return AjaxResult.success("添加成功");
+ StringBuilder sb = new StringBuilder();
+ //下发人脸到考勤机
+ try {
+ urkSendService.sendUserToDevice(o.getId(),o.getProId(),o.getSubId(), o.getTeamId(),"0");
+ sb.append("新增工程入场成功,人员下发考勤机成功--");
+ return AjaxResult.success(sb.toString());
+ } catch (Exception e) {
+ log.error("人员下发考勤机失败:",e);
+ sb.append("人员下发考勤机失败--");
+ return AjaxResult.error(sb.toString());
+ }
}
/**
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml
index 4d1857d..c0b0047 100644
--- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml
@@ -165,6 +165,9 @@
and bwedr.id_number = #{idNumber}
+
+ and bwedr.pro_id = #{proId}
+
ORDER BY bwedr.worker_id
@@ -176,15 +179,15 @@
FROM
bm_att_person a
INNER JOIN bm_worker_ein_day_record e ON a.worker_id = e.worker_id
- AND a.att_day = e.ein_day
+ AND a.att_day = e.ein_day and a.pro_id = e.pro_id
WHERE
a.att_day >= #{startDate}
AND a.att_day <= #{endDate}
- and a.pro_id = #{proId}
+ and a.pro_id = #{proId}
- and a.team_id = #{teamId}
+ and a.team_id = #{teamId}
GROUP BY
a.worker_id
@@ -205,7 +208,7 @@
FROM
bm_worker_ein_day_record bwedr
LEFT JOIN bm_att_person bap ON bwedr.worker_id = bap.worker_id
- AND bap.att_day = bwedr.ein_day
+ AND bap.att_day = bwedr.ein_day and bwedr.pro_id = bap.pro_id
left join pm_worker pw on bwedr.worker_id = pw.id
WHERE
bwedr.ein_day >= #{startDate}
diff --git a/bonus-modules/bonus-job/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java b/bonus-modules/bonus-job/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
index c9930f2..76d9b51 100644
--- a/bonus-modules/bonus-job/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
+++ b/bonus-modules/bonus-job/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
@@ -99,4 +99,13 @@ public interface WorkerJobMapper {
void updateProMonthData(AttProMonthPo attProMonthPo);
void updateMonthId(AttProMonthPo attProMonthPo);
+
+ /**
+ * 获取人员考勤记录
+ * @param currentDay
+ * @return
+ */
+ List getNotAttWorker(String currentDay);
+
+ int updateWorkerEinDayRecord(List matchedWorkers);
}
diff --git a/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/WorkerEinDayRecordTask.java b/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/WorkerEinDayRecordTask.java
index ab3eded..026a87e 100644
--- a/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/WorkerEinDayRecordTask.java
+++ b/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/WorkerEinDayRecordTask.java
@@ -43,8 +43,32 @@ public class WorkerEinDayRecordTask{
private void updateWorkerEinDayRecord(List dateList) {
for (String currentDay : dateList) {
List workerList = mapper.getWorkerEinDayRecord(currentDay);
- if (!workerList.isEmpty()) {
- mapper.insertEinDayRecord(workerList);
+ //如果这个人没换工程,换了分包或班组,没打卡,想在新分包换班组打卡会打不上
+ //执行时将未打卡的人数据更新一下
+ //已记录入场,未打卡的人员
+ List workerEinDayRecord = mapper.getNotAttWorker(currentDay);
+ // 分成两个list:匹配和不匹配
+ List matchedWorkers = new ArrayList<>();
+ List unmatchedWorkers = new ArrayList<>();
+ for (PmWorkerJob worker : workerList) {
+ boolean isMatched = false;
+ for (PmWorkerJob notAttWorker : workerEinDayRecord) {
+ if (worker.getWorkerId().equals(notAttWorker.getWorkerId())
+ && worker.getProId().equals(notAttWorker.getProId())) {
+ matchedWorkers.add(worker);
+ isMatched = true;
+ break;
+ }
+ }
+ if (!isMatched) {
+ unmatchedWorkers.add(worker);
+ }
+ }
+ if (!unmatchedWorkers.isEmpty()) {
+ mapper.insertEinDayRecord(unmatchedWorkers);
+ }
+ if (!matchedWorkers.isEmpty()) {
+ mapper.updateWorkerEinDayRecord(matchedWorkers);
}
}
}
diff --git a/bonus-modules/bonus-job/src/main/resources/mapper/job/WorkerJobMapper.xml b/bonus-modules/bonus-job/src/main/resources/mapper/job/WorkerJobMapper.xml
index 2f6abad..02c6747 100644
--- a/bonus-modules/bonus-job/src/main/resources/mapper/job/WorkerJobMapper.xml
+++ b/bonus-modules/bonus-job/src/main/resources/mapper/job/WorkerJobMapper.xml
@@ -34,6 +34,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bwepr.post_id,
bwepr.post_name,
bwepr.contract_id,
+ bwepr.ein_time,
#{currentDay} as ein_day
FROM
bm_worker_ein_pro_record bwepr
@@ -45,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bwepr.ein_time DESC
LIMIT 10000000
) aa
+ ORDER BY ein_time ASC
@@ -58,6 +60,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+ update bm_worker_ein_day_record
+ set sub_id = #{item.subId},
+ sub_name = #{item.subName},
+ team_id = #{item.teamId},
+ team_name = #{item.teamName},
+ post_id = #{item.postId},
+ post_name = #{item.postName},
+ contract_id = #{item.contractId}
+ where worker_id = #{item.workerId} and pro_id = #{item.proId} and ein_day = #{item.einDay}
+
+
+
+