Explorar o código

考勤报表逻辑修改。

zhengqiang %!s(int64=5) %!d(string=hai) anos
pai
achega
4ef134895e

+ 1 - 1
common/src/main/java/com/jpsoft/smart/modules/business/dao/WorkAttendanceDAO.java

@@ -20,7 +20,7 @@ public interface WorkAttendanceDAO {
 	List<WorkAttendance> list();
 	List<WorkAttendance> search(Map<String,Object> searchParams,List<Sort> sortList);
     List<WorkAttendance> findByPersonIdAndDate(Long personId, Date startDate, Date endDate);
-    int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate);
+    int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate,String sources);
     List<WorkAttendance> findByPeriod(Long personId, String alarmConfigId, Date recordTime);
 	List<PersonInfo> queryUnAttendanceList(String companyCode, Date startDate, Date endDate);
 }

+ 1 - 1
common/src/main/java/com/jpsoft/smart/modules/business/service/WorkAttendanceService.java

@@ -19,7 +19,7 @@ public interface WorkAttendanceService {
 	List<WorkAttendance> list();
 	Page<WorkAttendance> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
     List<WorkAttendance> findByPersonIdAndDate(Long personId, Date startDate, Date endDate);
-    int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate);
+    int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate, String sources);
 
 	/**
 	 * 打卡

+ 3 - 2
common/src/main/java/com/jpsoft/smart/modules/business/service/impl/WorkAttendanceServiceImpl.java

@@ -101,8 +101,8 @@ public class WorkAttendanceServiceImpl implements WorkAttendanceService {
 	}
 
 	@Override
-	public int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate) {
-		return workAttendanceDAO.deleteByCompanyCodeAndDate(companyCode,startDate,endDate);
+	public int deleteByCompanyCodeAndDate(String companyCode, Date startDate, Date endDate,String sources) {
+		return workAttendanceDAO.deleteByCompanyCodeAndDate(companyCode,startDate,endDate,sources);
 	}
 
 	@Override
@@ -218,6 +218,7 @@ public class WorkAttendanceServiceImpl implements WorkAttendanceService {
 						workAttendance.setAlarmConfigId(alarmConfig.getId());
 						workAttendance.setCreateTime(new Date());
 						workAttendance.setDelFlag(false);
+						workAttendance.setSources("1");
 
 						workAttendance.setTemperature(temperature);
 						workAttendance.setResult(attendanceResult);

+ 1 - 0
common/src/main/resources/mapper/business/WorkAttendance.xml

@@ -162,6 +162,7 @@
         <![CDATA[
             and record_time>=#{startDate}
             and record_time<=#{endDate}
+            and sources_=#{sources}
         ]]>
     </delete>
 </mapper>

+ 20 - 12
web/src/main/java/com/jpsoft/smart/schduled/UnmeasureTemperatureAlarmTask.java

@@ -102,7 +102,8 @@ public class UnmeasureTemperatureAlarmTask {
 
         CompanyInfo companyInfo = companyInfoService.get(companyId);
 
-        workAttendanceService.deleteByCompanyCodeAndDate(companyInfo.getCode() + "%",startDate,endDate);
+        //只删除设备测温打卡记录
+        workAttendanceService.deleteByCompanyCodeAndDate(companyInfo.getCode() + "%",startDate,endDate, "1");
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 
@@ -150,7 +151,7 @@ public class UnmeasureTemperatureAlarmTask {
                     companyCode += "%";
                 }
 
-                //todo 查询当前时间段学生测温情况
+                //todo 查询当前时间段打卡情况
                 List<PersonInfo> attendanceList = personDeviceLogService.queryAttendanceList(companyCode,startTime.toDate(),endTime.toDate());
 
                 for (PersonInfo personInfo: attendanceList) {
@@ -160,6 +161,7 @@ public class UnmeasureTemperatureAlarmTask {
                     workAttendance.setAlarmConfigId(alarmConfig.getId());
                     workAttendance.setCreateTime(new Date());
                     workAttendance.setDelFlag(false);
+                    workAttendance.setSources("1");
 
                     List<PersonDeviceLog> logList = personDeviceLogService.findByPersonAndDate(personInfo.getId(),startTime.toDate(),endTime.toDate());
 
@@ -359,16 +361,22 @@ public class UnmeasureTemperatureAlarmTask {
         List<PersonInfo> attendanceList = personDeviceLogService.queryUnAttendanceList(companyCode, startDate, endDate);
 
         for (PersonInfo personInfo : attendanceList) {
-            WorkAttendance workAttendance = new WorkAttendance();
-            workAttendance.setId(UUID.randomUUID().toString());
-            workAttendance.setPersonId(personInfo.getId());
-            workAttendance.setAlarmConfigId(alarmConfig.getId());
-            workAttendance.setCreateTime(new Date());
-            workAttendance.setRecordTime(attendanceDate);
-            workAttendance.setResult(result);
-            workAttendance.setDelFlag(false);
-
-            affectCount+= workAttendanceService.insert(workAttendance);
+            //当前考勤时间是否有外勤打卡
+            List<WorkAttendance> workAttendances = workAttendanceService.findByPersonIdAndDate(personInfo.getId() , startDate, endDate);
+
+            if (workAttendances.size()==0) {
+                //没有机器打卡和外勤打卡记录,则算缺卡
+                WorkAttendance workAttendance = new WorkAttendance();
+                workAttendance.setId(UUID.randomUUID().toString());
+                workAttendance.setPersonId(personInfo.getId());
+                workAttendance.setAlarmConfigId(alarmConfig.getId());
+                workAttendance.setCreateTime(new Date());
+                workAttendance.setRecordTime(attendanceDate);
+                workAttendance.setResult(result);
+                workAttendance.setDelFlag(false);
+
+                affectCount += workAttendanceService.insert(workAttendance);
+            }
         }
 
         return affectCount;