Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

yanliming 4 lat temu
rodzic
commit
68cfdc559c

+ 2 - 1
common/src/main/java/com/jpsoft/shinestar/modules/base/dao/HolidayInfoDAO.java

@@ -17,6 +17,7 @@ public interface HolidayInfoDAO {
 	int delete(String id);
 	List<HolidayInfo> list();
 	List<HolidayInfo> search(Map<String, Object> searchParams, List<Sort> sortList);
-	List<HolidayInfo> findByDate(String childrenCode, Date startDate, Date endDate);
+	List<HolidayInfo> findByCompanyCodeAndTimeRange(String childrenCode, Date startDate, Date endDate);
+	List<HolidayInfo> findByDate(Date date);
 	HolidayInfo existByDateAndCompanyId(Date attendanceDate, String companyId);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/service/HolidayInfoService.java

@@ -39,4 +39,6 @@ public interface HolidayInfoService {
 	Map<String,HolidayInfo> getHolidayMapByDate(String childrenCode, Date startDate, Date endDate, Boolean working);
 
     boolean existByDateAndCompanyId(Date attendanceDate, String companyId);
+
+    List<HolidayInfo> findByDate(Date time);
 }

+ 7 - 2
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/HolidayInfoServiceImpl.java

@@ -72,7 +72,7 @@ public class HolidayInfoServiceImpl implements HolidayInfoService {
 
 	@Override
 	public Set<String> getHolidaySetByDate(String childrenCode, Date startDate, Date endDate, Boolean working) {
-		List<HolidayInfo> list = holidayInfoDAO.findByDate(childrenCode,startDate,endDate);
+		List<HolidayInfo> list = holidayInfoDAO.findByCompanyCodeAndTimeRange(childrenCode,startDate,endDate);
 
 		Set<String> holidaySet = new TreeSet<>();
 
@@ -94,7 +94,7 @@ public class HolidayInfoServiceImpl implements HolidayInfoService {
 
 	@Override
 	public Map<String,HolidayInfo> getHolidayMapByDate(String childrenCode, Date startDate, Date endDate, Boolean working) {
-		List<HolidayInfo> list = holidayInfoDAO.findByDate(childrenCode,startDate,endDate);
+		List<HolidayInfo> list = holidayInfoDAO.findByCompanyCodeAndTimeRange(childrenCode,startDate,endDate);
 
 		Map<String,HolidayInfo> holidayMap = new HashMap<>();
 
@@ -120,4 +120,9 @@ public class HolidayInfoServiceImpl implements HolidayInfoService {
 
 		return holidayInfo!=null;
 	}
+
+	@Override
+	public List<HolidayInfo> findByDate(Date date) {
+		return holidayInfoDAO.findByDate(date);
+	}
 }

+ 11 - 1
common/src/main/resources/mapper/base/HolidayInfo.xml

@@ -130,7 +130,7 @@
         查询本单位或上级单位是否设置了假日
         取时间交集
     -->
-    <select id="findByDate" resultMap="HolidayInfoMap">
+    <select id="findByCompanyCodeAndTimeRange" resultMap="HolidayInfoMap">
         <![CDATA[
             select a.*,b.name_ as company_name
             from base_holiday_info a
@@ -142,6 +142,16 @@
             order by a.begin_date asc
         ]]>
     </select>
+    <select id="findByDate" resultMap="HolidayInfoMap">
+        <![CDATA[
+            select a.*
+            from base_holiday_info a
+            where a.del_flag=0
+            and a.begin_date<=#{date}
+            and a.end_date>=#{date}
+            order by a.begin_date asc
+        ]]>
+    </select>
     <select id="existByDateAndCompanyId" resultMap="HolidayInfoMap">
         <![CDATA[
             select * from base_holiday_info

+ 14 - 24
web/src/main/java/com/jpsoft/shinestar/modules/business/controller/WorkScheduleAttendanceController.java

@@ -72,6 +72,8 @@ public class WorkScheduleAttendanceController {
     private BusinessOutService businessOutService;
     @Autowired
     private RequestForLeaveInfoService requestForLeaveInfoService;
+    @Autowired
+    private HolidayInfoService holidayInfoService;
 
     @Autowired
     private OSSConfig ossConfig;
@@ -1996,21 +1998,9 @@ public class WorkScheduleAttendanceController {
         return msgResult;
     }
 
-    public static void main(String[] args) {
-        try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date t1 = sdf.parse("2021-06-01 00:00:00");
-            Date t2 = sdf.parse("2021-08-31 23:59:59");
-            int count = calculateNotSunDays(t1, t2);
-            System.out.println("有多少天:" + count);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
     //根据传入的查询日期 统计有多少天 除去周日
-    public static int calculateNotSunDays(Date t1,Date t2){
-        int holidays = 0;
+    public int calculateNotSunDays(Date t1,Date t2){
+        int workdays = 0;
         try {
             //初始化第一个日期
             Calendar cal1 = Calendar.getInstance();
@@ -2026,7 +2016,6 @@ public class WorkScheduleAttendanceController {
             cal1.setTime(date1);
             cal2.setTime(date2);
 
-
             //确定一个 大日期
             if (cal1.compareTo(cal2) > 0) {
                 Calendar temp = cal1;
@@ -2034,24 +2023,25 @@ public class WorkScheduleAttendanceController {
                 cal2 = temp;
                 temp = null;
             }
+
             while (cal1.compareTo(cal2) <= 0) {
-                //if (cal1.get(Calendar.DAY_OF_WEEK) == 1 || cal1.get(Calendar.DAY_OF_WEEK) == 7) {
-//                System.out.println("日期1:" + new SimpleDateFormat("yyyy-MM-dd").format(cal1.getTime()));
-//                System.out.println("日期2:" + Calendar.DAY_OF_WEEK);
-//
-//                System.out.println("日期3:" + cal1.get(Calendar.DAY_OF_WEEK));
-//                System.out.println("日期4:" + cal1.getTime());
+                //不是星期天
                 if (cal1.get(Calendar.DAY_OF_WEEK) != 1) {
-                    holidays++;
-                    System.out.println("周末:" + new SimpleDateFormat("yyyy-MM-dd").format(cal1.getTime()));
+                    List<HolidayInfo> holidayInfoList = holidayInfoService.findByDate(cal1.getTime());
+
+                    //不是节假日
+                    if(holidayInfoList.size()==0){
+                        workdays++;
+                    }
                 }
+
                 cal1.add(Calendar.DAY_OF_YEAR, 1);
             }
         }catch(Exception ex){
             ex.printStackTrace();
         }
 
-        return holidays;
+        return workdays;
     }
 
 }