Bläddra i källkod

Merge branch 'master' into master_batch

yumeng 5 år sedan
förälder
incheckning
32a99e7593

+ 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;
     }
 
+
+    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 {
-        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);
     }
 
     /**

+ 28 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.entity.*;
 import cn.com.ctop.common.module.enums.MaterialSupplierEnum;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.CloudVideoProcessUtil;
 import cn.com.ctop.common.module.utils.JsonUtil;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouCleanMaterialReport;
@@ -32,6 +33,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.net.URLDecoder;
 import java.text.ParseException;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -196,6 +198,7 @@ public class MaterialInfoController {
         result.setResult(pageList);
         return result;
     }
+
     @Autowired
     private ISysRoleService roleService;
 
@@ -470,6 +473,28 @@ public class MaterialInfoController {
                 url = KuaishouInterfaceConstant.HTTPS_PREFIX + url;
             }
             materialInfo.setUrl(url);
+            MaterialCutFrame cutFrame = materialCutFrameService.getCutFrameByCode(materialInfo.getCode());
+            if (Check.isNull(cutFrame)) {
+                String videoUrl = URLDecoder.decode(url).replace("https://media-1301855440.cos.ap-chongqing.myqcloud.com/", "");
+                String loadImage = "cutFrame/" + materialInfo.getCode() + "/zero.jpg";
+                String coverUrl = CloudVideoProcessUtil.videoCutPictureHandle(videoUrl, loadImage);
+                materialInfo.setCoverUrl(coverUrl);
+                Thread thread = new Thread() {
+                    @Override
+                    public void run() {
+                        try {
+                            log.info("开始抽帧,code:{}", materialInfo.getCode());
+                            materialCutFrameService.getTencentCutFrame(videoUrl, materialInfo.getCode(), coverUrl);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                };
+                thread.start();
+            } else {
+                materialInfo.setCoverUrl(cutFrame.getUrl());
+            }
+
         }
 
         //  修改素材库 相关联code
@@ -649,7 +674,7 @@ public class MaterialInfoController {
     }
 
     /**
-     *  adlab 新加查询素材库接口
+     * adlab 新加查询素材库接口
      */
     @PostMapping(value = "/listByAccountIds")
     public Result<IPage<MaterialInfo>> listByAccountIds(@RequestBody JSONObject requestBody) {
@@ -657,13 +682,13 @@ public class MaterialInfoController {
         Result<IPage<MaterialInfo>> result = new Result<>();
         QueryWrapper<MaterialInfo> queryWrapper = new QueryWrapper<>();
         if (!Check.isNull(requestBody.getString("userId"))) {
-            queryWrapper.eq("user_id",requestBody.getString("userId"));
+            queryWrapper.eq("user_id", requestBody.getString("userId"));
             List<Long> projects = memberService.getProjectByAccountIds(requestBody.getJSONArray("accountIds"));
             if (!Check.isNull(projects)) {
                 queryWrapper.in("project_id", projects);
             }
         }
-        queryWrapper.orderByDesc(true,"create_time");
+        queryWrapper.orderByDesc(true, "create_time");
         Page<MaterialInfo> page = new Page<>(requestBody.getInteger("pageNo"), requestBody.getInteger("pageSize"));
         IPage<MaterialInfo> pageList = materialInfoService.page(page, queryWrapper);
         result.setSuccess(true);

+ 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.graphql.service.IKuaishouWebInterfaceService;
 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -48,19 +49,18 @@ public class SampleTest {
     private IKuaiShouHistoryReportTaskService kuaiShouHistoryReportTaskService;
     @Autowired
     private IMaterialImageInfoService imageInfoService;
+    @Autowired
+    private IWechatCheckinDataService wechatCheckinDataService;
+
     @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
-    public void initImageCode(){
+    public void initImageCode() {
         List<MaterialImageInfo> imageInfos = imageInfoService.list();
-        for (MaterialImageInfo image:imageInfos) {
+        for (MaterialImageInfo image : imageInfos) {
             imageInfoService.initImageCode(image);
         }
     }
@@ -71,10 +71,10 @@ public class SampleTest {
         QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("media_id", 2);
         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
-    public void testBytedanceVideoReport(){
+    public void testBytedanceVideoReport() {
         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);
             }
         }

+ 1 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -517,7 +517,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             MaterialInfo info = new MaterialInfo();
             Long projectId = json.getLong("projectId");
             String code = json.getString("code");
-            info.setId(code + projectId);
+           // info.setId(code + projectId);
             info.setCode(code);
             if (!Check.isNull(json.getString("watermarkUrl"))) {
                 info.setWatermarkUrl(json.getString("watermarkUrl"));

+ 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)
     @ApiModelProperty(value = "打卡设备id")
     private String deviceid;
+
+
+    private Integer overtimeOrNot; // 是否加班
+    private Double overtime; // 加班时长
+
+
     /**
      * createTime
      */

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

@@ -39,38 +39,27 @@ public class WechatCheckinDataServiceImpl extends ServiceImpl<WechatCheckinDataM
     public void getCheckinData() {
         try {
             Map<String, Object> qywxAccessToken = tokenService.getOAAccessToken();
-            System.err.println(qywxAccessToken);
             if ((Integer) qywxAccessToken.get("code") != 0) {
                 log.error("企业微信获取token失败,返回信息:{}", qywxAccessToken.get("message"));
                 throw new Exception("企业微信获取token失败");
             }
-
             List<WechatUserList> list = userListService.list();
             if (Check.isNull(list)) {
                 return;
             }
 
-
-            //  params.put("access_token", (String) qywxAccessToken.get("accessToken"));
             for (WechatUserList userList : list) {
-                // params.remove("useridlist");
                 JSONObject params = new JSONObject();
-
                 String userId = userList.getUserId();
                 String departId = userList.getDepartId();
                 params.put("opencheckindatatype", 3);
-
                 JSONArray userArr = new JSONArray();
-
                 userArr.add(userId);
                 params.put("useridlist", userArr);
                 params.put("starttime", 1598889600);
                 params.put("endtime", 1600099200);
-
-
                 String resultStr = HttpUtils.httpPostRequestTest(QYWxConstant.QYWX_CHECKIN_DATA + "?access_token=" + qywxAccessToken.get("accessToken"), params.toJSONString(), null);
                 JSONObject resultJson = JSONObject.parseObject(resultStr);
-                System.err.println(resultJson);
                 Integer errcode = resultJson.getInteger("errcode");
                 if (errcode == 0) {
                     JSONArray checkindata = resultJson.getJSONArray("checkindata");
@@ -81,31 +70,37 @@ public class WechatCheckinDataServiceImpl extends ServiceImpl<WechatCheckinDataM
                                 WechatCheckinData checkinData = new WechatCheckinData();
                                 checkinData.setDepartId(departId);
                                 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);
+                                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.setNotes(jsonObject.getString("notes"));
                                 checkinData.setLat(jsonObject.getString("lng"));
                                 checkinData.setLocationDetail(jsonObject.getString("location_detail"));
                                 checkinData.setGroupName(jsonObject.getString("groupname"));
                                 checkinData.setDeviceid(jsonObject.getString("deviceid"));
-                                checkinData.setCheckinType(jsonObject.getString("checkin_type"));
                                 checkinData.setExceptionType(jsonObject.getString("exception_type"));
                                 checkinData.setLocationTitle(jsonObject.getString("location_title"));
                                 checkinData.setWifimac(jsonObject.getString("wifimac"));
                                 checkinData.setMediaids(jsonObject.getJSONArray("mediaids").toJSONString());
                                 checkinData.setLat(jsonObject.getString("lat"));
                                 this.save(checkinData);
-
                             }
                         }
-
                     }
 
-
                 } else {
-                    //     throw new Exception("企业微信获取部门列表");
-
+                    log.error("获取打卡数据异常");
                 }
             }
         } catch (Exception e) {