Min 1 рік тому
батько
коміт
5eebd52380

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BeisenConfigController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-13
+ */
+@RestController
+@RequestMapping("/beisen-config")
+public class BeisenConfigController {
+
+}
+

+ 26 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserWithBeisenController.java

@@ -4,7 +4,9 @@ package com.management.platform.controller;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.BeisenConfig;
 import com.management.platform.entity.UserWithBeisen;
+import com.management.platform.mapper.BeisenConfigMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserWithBeisenMapper;
 import com.management.platform.service.UserWithBeisenService;
@@ -39,14 +41,21 @@ public class UserWithBeisenController {
     private HttpServletRequest request;
     @Resource
     private UserWithBeisenService userWithBeisenService;
+    @Resource
+    private BeisenConfigMapper beisenConfigMapper;
 
     @RequestMapping("/getByTimeWindow")
     public HttpRespMsg getByTimeWindow(String startTime,String stopTime){
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        BeisenConfig beisenConfig = beisenConfigMapper.selectById(companyId);
+        if(beisenConfig==null){
+            httpRespMsg.setError("北森基础数据配置未完成,请联系服务商完成配置");
+            return httpRespMsg;
+        }
         List<UserWithBeisen> allBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, companyId));
         List<UserWithBeisen> userWithBeisenList=new ArrayList<>();
-        List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",startTime,stopTime);
+        List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",startTime,stopTime,beisenConfig.getAppKey(),beisenConfig.getAppSecret());
         for (JSONArray array : byTimeWindow) {
             for (int i = 0; i < array.size(); i++) {
                 UserWithBeisen userWithBeisen=new UserWithBeisen();
@@ -82,9 +91,24 @@ public class UserWithBeisenController {
     public HttpRespMsg getSwipingCards(String createDate){
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        BeisenConfig beisenConfig = beisenConfigMapper.selectById(companyId);
+        if(beisenConfig==null){
+            httpRespMsg.setError("北森基础数据配置未完成,请联系服务商完成配置");
+            return httpRespMsg;
+        }
         List<UserWithBeisen> allBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, companyId));
         List<UserWithBeisen> userWithBeisenList=new ArrayList<>();
-        JSONArray swipingCards = BeiSenUtils.getSwipingCards(createDate);
+        JSONArray swipingCards = BeiSenUtils.getSwipingCards(createDate,beisenConfig.getAppKey(),beisenConfig.getAppSecret());
+        httpRespMsg.setData(swipingCards);
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/getSwipingCardsTest")
+    public HttpRespMsg getSwipingCardsTest(String createDate){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        JSONArray swipingCards = BeiSenUtils.getSwipingCards(createDate,"70FD83474FB946E5A6A122BB2989E8D9","F494856D0BCC49D18C63429D4F2CB42EDE9480D5C075449E9C97E7AEA5C7D9E1");
+        System.out.println("获取到的打卡数据====>"+swipingCards.toJSONString());
         httpRespMsg.setData(swipingCards);
         return httpRespMsg;
     }

+ 41 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/BeisenConfig.java

@@ -0,0 +1,41 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BeisenConfig extends Model<BeisenConfig> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    @TableField("app_key")
+    private String appKey;
+
+    @TableField("app_secret")
+    private String appSecret;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BeisenConfigMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.BeisenConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-13
+ */
+public interface BeisenConfigMapper extends BaseMapper<BeisenConfig> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BeisenConfigService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.BeisenConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-13
+ */
+public interface BeisenConfigService extends IService<BeisenConfig> {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BeisenConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.BeisenConfig;
+import com.management.platform.mapper.BeisenConfigMapper;
+import com.management.platform.service.BeisenConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-13
+ */
+@Service
+public class BeisenConfigServiceImpl extends ServiceImpl<BeisenConfigMapper, BeisenConfig> implements BeisenConfigService {
+
+}

+ 24 - 19
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -174,6 +174,8 @@ public class TimingTask {
     private SapSyncLogService sapSyncLogService;
     @Resource
     private UserWithBeisenService userWithBeisenService;
+    @Resource
+    private BeisenConfigMapper beisenConfigMapper;
 
 
     private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
@@ -2000,27 +2002,30 @@ public class TimingTask {
         LocalDate now=LocalDate.now();
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         String time=df.format(now.plusDays(1));
-        List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",time,time);
-        for (JSONArray array : byTimeWindow) {
-            for (int i = 0; i < array.size(); i++) {
-                UserWithBeisen userWithBeisen=new UserWithBeisen();
-                JSONObject targetItem = array.getJSONObject(i);
-                JSONObject employeeInfo = targetItem.getJSONObject("employeeInfo");
-                JSONObject recordInfo = targetItem.getJSONObject("recordInfo");
-                userWithBeisen.setCompanyId(936);
-                userWithBeisen.setJobNumber(recordInfo.getString("jobNumber"));
-                userWithBeisen.setMobilePhone(employeeInfo.getString("mobilePhone"));
-                userWithBeisen.setName(employeeInfo.getString("name"));
-                userWithBeisen.setUserId(employeeInfo.getString("userID"));
-                Optional<UserWithBeisen> first = allBeisenList.stream().filter(a -> a.getUserId().equals(employeeInfo.getString("userID"))).findFirst();
-                if(first.isPresent()){
-                    userWithBeisen.setId(first.get().getId());
+        BeisenConfig beisenConfig = beisenConfigMapper.selectById(936);
+        if(beisenConfig!=null){
+            List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",time,time,beisenConfig.getAppKey(),beisenConfig.getAppSecret());
+            for (JSONArray array : byTimeWindow) {
+                for (int i = 0; i < array.size(); i++) {
+                    UserWithBeisen userWithBeisen=new UserWithBeisen();
+                    JSONObject targetItem = array.getJSONObject(i);
+                    JSONObject employeeInfo = targetItem.getJSONObject("employeeInfo");
+                    JSONObject recordInfo = targetItem.getJSONObject("recordInfo");
+                    userWithBeisen.setCompanyId(936);
+                    userWithBeisen.setJobNumber(recordInfo.getString("jobNumber"));
+                    userWithBeisen.setMobilePhone(employeeInfo.getString("mobilePhone"));
+                    userWithBeisen.setName(employeeInfo.getString("name"));
+                    userWithBeisen.setUserId(employeeInfo.getString("userID"));
+                    Optional<UserWithBeisen> first = allBeisenList.stream().filter(a -> a.getUserId().equals(employeeInfo.getString("userID"))).findFirst();
+                    if(first.isPresent()){
+                        userWithBeisen.setId(first.get().getId());
+                    }
+                    userWithBeisenList.add(userWithBeisen);
                 }
-                userWithBeisenList.add(userWithBeisen);
             }
-        }
-        if(userWithBeisenList.size()>0){
-            userWithBeisenService.saveOrUpdateBatch(userWithBeisenList);
+            if(userWithBeisenList.size()>0){
+                userWithBeisenService.saveOrUpdateBatch(userWithBeisenList);
+            }
         }
     }
 

+ 11 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/BeiSenUtils.java

@@ -59,7 +59,7 @@ public class BeiSenUtils {
 //        dockWithMLD.getResult("http://"+port+"/api/cube/restful/interface/getModeDataPageList/getTravelRecord",jsonString);
     }
 
-    public static String getToken(){
+    public static String getToken(String appkey,String appSecret){
         String result="";
         String url = "https://openapi.italent.cn/token";
         HttpHeaders headers = new HttpHeaders();
@@ -68,8 +68,8 @@ public class BeiSenUtils {
         headers.setContentType(type);
         JSONObject requestMap = new JSONObject();
         requestMap.put("grant_type","client_credentials");
-        requestMap.put("app_key","0AE887ADF87148EABF38B64BBE5B6BA6");
-        requestMap.put("app_secret","23054CE7CBAF4B1A8BA5FC878077A35A5BF7FF3AAC4D4A828CC7043E8017FF5A");
+        requestMap.put("app_key",appkey);
+        requestMap.put("app_secret",appSecret);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
@@ -80,14 +80,14 @@ public class BeiSenUtils {
         return result;
     }
 
-    public static List<JSONArray> getByTimeWindow(String scrollId,String startTime,String stopTime){
+    public static List<JSONArray> getByTimeWindow(String scrollId,String startTime,String stopTime,String appkey,String appSecret){
         List<JSONArray> resultList=new ArrayList<>();
         String url = "https://openapi.italent.cn/TenantBaseExternal/api/v5/Employee/GetByTimeWindow";
         HttpHeaders headers = new HttpHeaders();
         RestTemplate restTemplate = new RestTemplate();
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
-        String accessToken = getToken();
+        String accessToken = getToken(appkey,appSecret);
         System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
@@ -108,7 +108,7 @@ public class BeiSenUtils {
                 resultList.add(respJson.getJSONArray("data"));
                 String nextScrollId = respJson.getString("scrollId");
                 if(!StringUtils.isEmpty(nextScrollId)&&respJson.getJSONArray("data").size()>0){
-                    List<JSONArray> byTimeWindow = getByTimeWindow(nextScrollId,startTime,stopTime);
+                    List<JSONArray> byTimeWindow = getByTimeWindow(nextScrollId,startTime,stopTime,appkey,appSecret);
                     resultList.addAll(byTimeWindow);
                 }
                 return resultList;
@@ -117,13 +117,13 @@ public class BeiSenUtils {
         return resultList;
     }
 
-    public static JSONArray getSwipingCards(String createDate){
+    public static JSONArray getSwipingCards(String createDate,String appkey,String appSecret){
         String url = "https://openapi.italent.cn/AttendanceOpen/api/v1/SwipingCardData/GetSwipingCards";
         HttpHeaders headers = new HttpHeaders();
         RestTemplate restTemplate = new RestTemplate();
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
-        String accessToken = getToken();
+        String accessToken = getToken(appkey,appSecret);
         System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
@@ -143,6 +143,9 @@ public class BeiSenUtils {
                 return resultData;
             }
         }
+        //todo:景昱 计算工作时长 默认工作日 8小时+当天人员加班(审核状态:通过)时长 非工作日考勤数据以加班数据为准
+
+        //todo:如何分页 循环调用接口 当天接口返回数据为空 取消调用
         return new JSONArray();
     }
 

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BeisenConfigMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.BeisenConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.BeisenConfig">
+        <id column="company_id" property="companyId" />
+        <result column="app_key" property="appKey" />
+        <result column="app_secret" property="appSecret" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, app_key, app_secret
+    </sql>
+
+</mapper>