Browse Source

计算加班时间

yumeng 4 years ago
parent
commit
abff653731

+ 73 - 2
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -731,9 +731,80 @@ public class DateUtils extends PropertyEditorSupport {
         return temp;
         return temp;
     }
     }
 
 
+
+    private static Calendar zeroFromHour(long milliseconds) {
+        Calendar calendar = Calendar.getInstance(); // 获得一个日历
+
+        calendar.setTimeInMillis(completMilliseconds(milliseconds));
+        zeroFromHour(calendar);
+        return calendar;
+    }
+
+    private static long completMilliseconds(long milliseconds) {
+        String milStr = Long.toString(milliseconds);
+        if (milStr.length() == 10) {
+            milliseconds = milliseconds * 1000;
+        }
+        return milliseconds;
+    }
+
+    private static void zeroFromHour(Calendar calendar) {
+        calendar.set(Calendar.HOUR_OF_DAY, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+    }
+
+
+    public static String getWhatDay(long timeStamp) {
+        Calendar cal = zeroFromHour(timeStamp);
+        String whatDay = "";
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
+            whatDay = "星期六";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
+            whatDay = "星期日";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
+            whatDay = "星期一";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.TUESDAY) {
+            whatDay = "星期二";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) {
+            whatDay = "星期三";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.THURSDAY) {
+            whatDay = "星期四";
+        }
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
+            whatDay = "星期五";
+        }
+        return whatDay;
+    }
+
+    /* //日期转换为时间戳 */
+    public static long timeToStamp(String timers) {
+        Date d = new Date();
+        long timeStemp = 0;
+        try {
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            d = sf.parse(timers);// 日期转换为时间戳
+        } catch (ParseException e) {
+
+            e.printStackTrace();
+        }
+        timeStemp = d.getTime();
+        return timeStemp / 1000;
+    }
+
+
     public static void main(String[] args) throws ParseException {
     public static void main(String[] args) throws ParseException {
-        Date date = stampToTime(1599524171L);
-        System.err.println(date);
+        /*Date date = stampToTime(1599458521L);
+        String s = formatDate(date);
+        System.err.println(s);*/
+        Long s1 = timeToStamp("2020-09-23 21:30:00");
+        System.err.println(s1);
     }
     }
 
 
     /**
     /**

+ 15 - 15
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -15,6 +15,7 @@ import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
+import cn.com.ctop.oa.modules.service.IWechatCheckinDataService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -48,19 +49,18 @@ public class SampleTest {
     private IKuaiShouHistoryReportTaskService kuaiShouHistoryReportTaskService;
     private IKuaiShouHistoryReportTaskService kuaiShouHistoryReportTaskService;
     @Autowired
     @Autowired
     private IMaterialImageInfoService imageInfoService;
     private IMaterialImageInfoService imageInfoService;
+    @Autowired
+    private IWechatCheckinDataService wechatCheckinDataService;
+
     @Test
     @Test
-    public void loadBytedanceMatData(){
-        executorService = Executors.newFixedThreadPool(5);
-        List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
-        for (CtopOauthToken token:tokens) {
-            reportService.getAdvertiserPlanReport(token,new Date(),new Date(),CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
-        }
+    public void loadBytedanceMatData() {
+        wechatCheckinDataService.getCheckinData();
     }
     }
 
 
     @Test
     @Test
-    public void initImageCode(){
+    public void initImageCode() {
         List<MaterialImageInfo> imageInfos = imageInfoService.list();
         List<MaterialImageInfo> imageInfos = imageInfoService.list();
-        for (MaterialImageInfo image:imageInfos) {
+        for (MaterialImageInfo image : imageInfos) {
             imageInfoService.initImageCode(image);
             imageInfoService.initImageCode(image);
         }
         }
     }
     }
@@ -71,10 +71,10 @@ public class SampleTest {
         QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
         QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("media_id", 2);
         queryWrapper.eq("media_id", 2);
         List<CtopOauthToken> list = oauthTokenService.list(queryWrapper);
         List<CtopOauthToken> list = oauthTokenService.list(queryWrapper);
-         for (CtopOauthToken token : list) {
-        kuaiShouHistoryReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), "2020-09-20", "2020-09-20", "daily");
+        for (CtopOauthToken token : list) {
+            kuaiShouHistoryReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), "2020-09-20", "2020-09-20", "daily");
 
 
-         }
+        }
 
 
     }
     }
 
 
@@ -189,11 +189,11 @@ public class SampleTest {
     }
     }
 
 
     @Test
     @Test
-    public void testBytedanceVideoReport(){
+    public void testBytedanceVideoReport() {
         List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
         List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
-        for(int i=2;i<100;i++){
-            String date = DateUtils.formatDate(DateUtils.addDay(new Date(),-i));
-            for (CtopOauthToken token:tokens) {
+        for (int i = 2; i < 100; i++) {
+            String date = DateUtils.formatDate(DateUtils.addDay(new Date(), -i));
+            for (CtopOauthToken token : tokens) {
 //                bytedanceReportService.bytedanceVideoMaterialReport(token, date, date);
 //                bytedanceReportService.bytedanceVideoMaterialReport(token, date, date);
             }
             }
         }
         }

+ 6 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/entity/WechatCheckinData.java

@@ -121,6 +121,12 @@ public class WechatCheckinData {
     @Excel(name = "打卡设备id", width = 15)
     @Excel(name = "打卡设备id", width = 15)
     @ApiModelProperty(value = "打卡设备id")
     @ApiModelProperty(value = "打卡设备id")
     private String deviceid;
     private String deviceid;
+
+
+    private Integer overtimeOrNot; // 是否加班
+    private Double overtime; // 加班时长
+
+
     /**
     /**
      * createTime
      * createTime
      */
      */

+ 14 - 5
module-oa/src/main/java/cn/com/ctop/oa/modules/service/impl/WechatCheckinDataServiceImpl.java

@@ -66,11 +66,8 @@ public class WechatCheckinDataServiceImpl extends ServiceImpl<WechatCheckinDataM
                 params.put("useridlist", userArr);
                 params.put("useridlist", userArr);
                 params.put("starttime", 1598889600);
                 params.put("starttime", 1598889600);
                 params.put("endtime", 1600099200);
                 params.put("endtime", 1600099200);
-
-
                 String resultStr = HttpUtils.httpPostRequestTest(QYWxConstant.QYWX_CHECKIN_DATA + "?access_token=" + qywxAccessToken.get("accessToken"), params.toJSONString(), null);
                 String resultStr = HttpUtils.httpPostRequestTest(QYWxConstant.QYWX_CHECKIN_DATA + "?access_token=" + qywxAccessToken.get("accessToken"), params.toJSONString(), null);
                 JSONObject resultJson = JSONObject.parseObject(resultStr);
                 JSONObject resultJson = JSONObject.parseObject(resultStr);
-                System.err.println(resultJson);
                 Integer errcode = resultJson.getInteger("errcode");
                 Integer errcode = resultJson.getInteger("errcode");
                 if (errcode == 0) {
                 if (errcode == 0) {
                     JSONArray checkindata = resultJson.getJSONArray("checkindata");
                     JSONArray checkindata = resultJson.getJSONArray("checkindata");
@@ -81,15 +78,27 @@ public class WechatCheckinDataServiceImpl extends ServiceImpl<WechatCheckinDataM
                                 WechatCheckinData checkinData = new WechatCheckinData();
                                 WechatCheckinData checkinData = new WechatCheckinData();
                                 checkinData.setDepartId(departId);
                                 checkinData.setDepartId(departId);
                                 checkinData.setUserId(userId);
                                 checkinData.setUserId(userId);
-                                java.util.Date checkDate = DateUtils.stampToTime(jsonObject.getLong("checkin_time"));
+                                checkinData.setCheckinType(jsonObject.getString("checkin_type"));
+
+
+                                Long checkinTimeStamp = jsonObject.getLong("checkin_time"); //下班打卡时间
+                                java.util.Date checkDate = DateUtils.stampToTime(checkinTimeStamp);
                                 checkinData.setCheckinTime(checkDate);
                                 checkinData.setCheckinTime(checkDate);
+                                String dateStr = DateUtils.formatDate(checkDate) + " 21:30:00";
+                                Long dateStamp = DateUtils.timeToStamp(dateStr); // 每天九点半时间戳
+                                if (checkinTimeStamp >= dateStamp) {
+                                    checkinData.setOvertimeOrNot(1);
+                                    String overtimeStr = DateUtils.formatDate(checkDate) + " 19:00:00";
+                                    Long overtimeStamp = DateUtils.timeToStamp(overtimeStr); // 每天九点半时间戳
+                                    Double overtime = Double.valueOf(checkinTimeStamp - overtimeStamp) / 3600;
+                                    checkinData.setOvertime(overtime);
+                                }
                                 checkinData.setWifiname(jsonObject.getString("wifiname"));
                                 checkinData.setWifiname(jsonObject.getString("wifiname"));
                                 checkinData.setNotes(jsonObject.getString("notes"));
                                 checkinData.setNotes(jsonObject.getString("notes"));
                                 checkinData.setLat(jsonObject.getString("lng"));
                                 checkinData.setLat(jsonObject.getString("lng"));
                                 checkinData.setLocationDetail(jsonObject.getString("location_detail"));
                                 checkinData.setLocationDetail(jsonObject.getString("location_detail"));
                                 checkinData.setGroupName(jsonObject.getString("groupname"));
                                 checkinData.setGroupName(jsonObject.getString("groupname"));
                                 checkinData.setDeviceid(jsonObject.getString("deviceid"));
                                 checkinData.setDeviceid(jsonObject.getString("deviceid"));
-                                checkinData.setCheckinType(jsonObject.getString("checkin_type"));
                                 checkinData.setExceptionType(jsonObject.getString("exception_type"));
                                 checkinData.setExceptionType(jsonObject.getString("exception_type"));
                                 checkinData.setLocationTitle(jsonObject.getString("location_title"));
                                 checkinData.setLocationTitle(jsonObject.getString("location_title"));
                                 checkinData.setWifimac(jsonObject.getString("wifimac"));
                                 checkinData.setWifimac(jsonObject.getString("wifimac"));