From 5f3cf501f9f6c216df17ee8af6618b55b537d21a Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期五, 21 十月 2022 16:57:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into local_20221014

---
 flower_city/src/main/java/com/dg/core/util/TestDate.java |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)

diff --git a/flower_city/src/main/java/com/dg/core/util/TestDate.java b/flower_city/src/main/java/com/dg/core/util/TestDate.java
new file mode 100644
index 0000000..1a13a9a
--- /dev/null
+++ b/flower_city/src/main/java/com/dg/core/util/TestDate.java
@@ -0,0 +1,154 @@
+package com.dg.core.util;
+
+
+import cn.hutool.core.date.DateTime;
+import com.alibaba.fastjson.JSONObject;
+import com.iceyyy.workday.WorkUtils;
+import com.squareup.okhttp.OkHttpClient;
+import com.squareup.okhttp.Request;
+import com.squareup.okhttp.Response;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>TestDate 此类用于:</p>
+ * <p>@author:hujm</p>
+ * <p>@date:2021年04月22日 17:43</p>
+ * <p>@remark:</p>
+ */
+public class TestDate {
+
+    public static void main(String[] args) {
+        System.out.println(getJjr(2021, 4));
+        System.out.println(getMonthWekDay(2021, 4));
+        System.out.println(JJR(2021, 4));
+
+    }
+
+    /**
+     * 获取周末和节假日
+     *
+     * @param year
+     * @param month
+     * @return
+     */
+    public static Set<String> JJR(int year, int month) {
+        //获取所有的周末
+        Set<String> monthWekDay = getMonthWekDay(year, month);
+        //http://timor.tech/api/holiday api文档地址
+        Map jjr = getJjr(year, month + 1);
+        Integer code = (Integer) jjr.get("code");
+        if (code != 0) {
+            return monthWekDay;
+        }
+        Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) jjr.get("holiday");
+        Set<String> strings = holiday.keySet();
+        for (String str : strings) {
+            Map<String, Object> stringObjectMap = holiday.get(str);
+            Integer wage = (Integer) stringObjectMap.get("wage");
+            String date = (String) stringObjectMap.get("date");
+            //筛选掉补班
+            if (wage.equals(1)) {
+                monthWekDay.remove(date);
+            } else {
+                monthWekDay.add(date);
+            }
+        }
+        return monthWekDay;
+    }
+
+    /**
+     * 获取节假日不含周末
+     *
+     * @param year
+     * @param month
+     * @return
+     */
+    private static Map getJjr(int year, int month) {
+        String url = "http://timor.tech/api/holiday/year/";
+        OkHttpClient client = new OkHttpClient();
+        Response response;
+        //解密数据
+        String rsa = null;
+        Request request = new Request.Builder()
+                .url(url)
+                .get()
+                .addHeader("Content-Type", "application/x-www-form-urlencoded")
+                .build();
+        try {
+            response = client.newCall(request).execute();
+            rsa = response.body().string();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return JSONObject.parseObject(rsa, Map.class);
+    }
+
+    /**
+     * 获取周末  月从0开始
+     *
+     * @param year
+     * @param mouth
+     * @return
+     */
+    public static Set<String> getMonthWekDay(int year, int mouth) {
+        Set<String> dateList = new HashSet<>();
+        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = new GregorianCalendar(year, mouth, 1);
+        Calendar endCalendar = new GregorianCalendar(year, mouth, 1);
+        endCalendar.add(Calendar.MONTH, 1);
+        while (true) {
+            int weekday = calendar.get(Calendar.DAY_OF_WEEK);
+            if (weekday == 1 || weekday == 7) {
+                dateList.add(simdf.format(calendar.getTime()));
+            }
+            calendar.add(Calendar.DATE, 1);
+            if (calendar.getTimeInMillis() >= endCalendar.getTimeInMillis()) {
+                break;
+            }
+        }
+        return dateList;
+    }
+
+    /**
+     * 判断该日期是否为工作日
+     *
+     * @param dateTime
+     * @return
+     */
+    public Boolean  isWeekday(DateTime dateTime){
+        TestDate td=new TestDate();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(dateTime);
+        Set<String> jjr = td.JJR(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH));
+        String strdate = dateTime.toString("yyyy-MM-dd");
+        for (String ans: jjr ) {
+            if (ans.equals(strdate))
+                return  false;
+        }
+        return  true;
+    }
+
+    /**
+     * 获取该日期的下个工作日是多少
+     *
+     * @param dateTime
+     * @return
+     */
+    public  DateTime nextWeekDay(DateTime dateTime){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(dateTime);
+        while (true){
+          calendar.add(calendar.DATE,1);
+          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+          String dateTimeToday = sdf.format(calendar.getTime());
+          if (!WorkUtils.isWorkendDay(dateTimeToday)){
+              return new DateTime(calendar);//返回日期
+          }
+        }
+
+    }
+
+}

--
Gitblit v1.7.1