Browse Source

节假日不记录考勤记录。

zhengqiang 5 years ago
parent
commit
49036f636f

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

@@ -2,10 +2,7 @@ package com.jpsoft.smart.modules.business.service.impl;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import javax.annotation.Resource;
 
 import com.jpsoft.smart.modules.base.dao.AlarmConfigDAO;
@@ -14,6 +11,7 @@ import com.jpsoft.smart.modules.base.dao.PersonInfoDAO;
 import com.jpsoft.smart.modules.base.entity.AlarmConfig;
 import com.jpsoft.smart.modules.base.entity.CompanyInfo;
 import com.jpsoft.smart.modules.base.entity.PersonInfo;
+import com.jpsoft.smart.modules.base.service.HolidayInfoService;
 import com.jpsoft.smart.modules.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.weaver.patterns.PerSingleton;
@@ -44,6 +42,9 @@ public class WorkAttendanceServiceImpl implements WorkAttendanceService {
 	@Autowired
 	private AlarmConfigDAO alarmConfigDAO;
 
+	@Autowired
+	private HolidayInfoService holidayInfoService;
+
 	@Override
 	public WorkAttendance get(String id) {
 		// TODO Auto-generated method stub
@@ -108,6 +109,17 @@ public class WorkAttendanceServiceImpl implements WorkAttendanceService {
 		boolean result = false;
 
 		try {
+			DateTime recordTime = new DateTime(recordDate);
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+			String date = recordTime.toString("yyyy-MM-dd");
+
+			//是否节假日
+			Set<String> holidaySet = holidayInfoService.getHolidaySetByDate(recordDate,recordDate);
+
+			if (holidaySet.contains(recordDate)){
+				return false;
+			}
+
 			PersonInfo personInfo = personInfoDAO.get(personId);
 			CompanyInfo companyInfo = companyInfoDAO.get(personInfo.getCompanyId());
 
@@ -123,10 +135,6 @@ public class WorkAttendanceServiceImpl implements WorkAttendanceService {
 				}
 			}
 
-			DateTime recordTime = new DateTime(recordDate);
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-			String date = recordTime.toString("yyyy-MM-dd");
-
 			if (configList != null) {
 				for (AlarmConfig alarmConfig : configList) {
 					//是否工作日

+ 3 - 2
common/src/main/resources/mapper/base/HolidayInfo.xml

@@ -94,11 +94,12 @@
             ${sort.name} ${sort.order}
         </foreach>
     </select>
+    <!--取时间交集-->
     <select id="findByDate" resultMap="HolidayInfoMap">
         <![CDATA[
             select * from base_holiday_info
-            where begin_date>=#{startDate}
-            and end_date<=#{endDate}
+            where begin_date<=#{endDate}
+            and end_date>=#{startDate}
             and del_flag=0
             order by begin_date asc
         ]]>

+ 7 - 0
web/src/main/java/com/jpsoft/smart/schduled/UnmeasureTemperatureAlarmTask.java

@@ -103,11 +103,18 @@ public class UnmeasureTemperatureAlarmTask {
 
         int affectCount = 0;
 
+        //更新时间段内节假日
+        Set<String> holidaySet = holidayInfoService.getHolidaySetByDate(startDate,endDate);
+
         for (int i=0;i<days;i++){
             DateTime now = dt1.plusDays(i);
 
             String date = now.toString("yyyy-MM-dd");
 
+            if (holidaySet.contains(date)){
+                continue;
+            }
+
             for (AlarmConfig alarmConfig : configList) {
                 //是否工作日
                 if (alarmConfig.getWeekdays().indexOf(String.valueOf(now.getDayOfWeek())) == -1) {