Min 1 年之前
父节点
当前提交
f25b4322ac

+ 77 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserWithBeisenController.java

@@ -0,0 +1,77 @@
+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.UserWithBeisen;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.mapper.UserWithBeisenMapper;
+import com.management.platform.service.UserWithBeisenService;
+import com.management.platform.util.BeiSenUtils;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-09
+ */
+@RestController
+@RequestMapping("/user-with-beisen")
+public class UserWithBeisenController {
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private UserWithBeisenService userWithBeisenService;
+
+    @RequestMapping("/getByTimeWindow")
+    public HttpRespMsg getByTimeWindow(String startTime,String stopTime){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<UserWithBeisen> allBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, companyId));
+        List<UserWithBeisen> userWithBeisenList=new ArrayList<>();
+        List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",startTime,stopTime);
+        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");
+                userWithBeisen.setCompanyId(companyId);
+                userWithBeisen.setJobNumber(employeeInfo.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);
+            }
+        }
+        if(userWithBeisenList.size()>0){
+            if(!userWithBeisenService.saveOrUpdateBatch(userWithBeisenList)){
+                httpRespMsg.setError("验证失败");
+                return httpRespMsg;
+            }
+        }
+        return httpRespMsg;
+    }
+
+}
+

+ 66 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserWithBeisen.java

@@ -0,0 +1,66 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+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-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class UserWithBeisen extends Model<UserWithBeisen> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 人员编号 唯一
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 人员名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 电话号码
+     */
+    @TableField("mobile_phone")
+    private String mobilePhone;
+
+    /**
+     * 人员工号
+     */
+    @TableField("job_number")
+    private String jobNumber;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

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

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

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

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

+ 18 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -11714,6 +11714,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<String> stagesUUIDList = stagesList.stream().map(ProjectTask::getUUID).collect(Collectors.toList());
                     //抽调出最末级
                     List<ProjectTask> taskList = projectTasks.stream().filter(p ->p.getParentTaskUUID() != null &&stagesUUIDList.contains(p.getParentTaskUUID())&&(p.getSummaryTaskIndicator()==null||(p.getSummaryTaskIndicator()!=null && !p.getSummaryTaskIndicator().equals("true")))).collect(Collectors.toList());
+                    List<Task> tasks=new ArrayList<>();
                     if(taskGroupList!=null && taskGroupList.size()>0){
                         for (ProjectTask group : taskGroupList) {
                             //如果作为第二层数据是不存在下级数据的 把当前数据作为第四层数据 手动添加阶段数据 作为该数据的上级数据
@@ -11748,7 +11749,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 if(three!=null){
                                     task.setId(three.getId());
                                 }
-                                taskService.saveOrUpdate(task);
+//                                taskService.saveOrUpdate(task);
+                                tasks.add(task);
                             }else {
                                 TaskGroup taskGroup=new TaskGroup();
                                 taskGroup.setProjectId(project.getId());
@@ -11797,7 +11799,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 if(two!=null){
                                     task.setId(two.getId());
                                 }
-                                taskService.saveOrUpdate(task);
+//                                taskService.saveOrUpdate(task);
+                                tasks.add(task);
                             }else {
                                 Stages stage = new Stages();
                                 stage.setSequence(1);
@@ -11835,9 +11838,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             if(one!=null){
                                 task.setId(one.getId());
                             }
-                            taskService.saveOrUpdate(task);
+//                            taskService.saveOrUpdate(task);
+                            tasks.add(task);
                         }
                     }
+                    if(tasks.size()>0){
+                        Map<Integer, List<Task>> listMap = tasks.stream().collect(Collectors.groupingBy(t -> t.getStagesId()));
+                        List<Integer> list = tasks.stream().map(Task::getStagesId).collect(Collectors.toList());
+                        for (Integer id : list) {
+                            List<Task> subList = listMap.get(id);
+                            for (int i = 0; i < subList.size(); i++) {
+                                subList.get(i).setSeq(i);
+                            }
+                        }
+                        taskService.saveOrUpdateBatch(tasks);
+                    }
                 }
             }
         }

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.UserWithBeisen;
+import com.management.platform.mapper.UserWithBeisenMapper;
+import com.management.platform.service.UserWithBeisenService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-09
+ */
+@Service
+public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper, UserWithBeisen> implements UserWithBeisenService {
+
+}

+ 18 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1839,6 +1839,7 @@ public class TimingTask {
                         List<String> stagesUUIDList = stagesList.stream().map(ProjectTask::getUUID).collect(Collectors.toList());
                         //抽调出最末级
                         List<ProjectTask> taskList = projectTasks.stream().filter(p ->p.getParentTaskUUID() != null &&stagesUUIDList.contains(p.getParentTaskUUID())&&(p.getSummaryTaskIndicator()==null||(p.getSummaryTaskIndicator()!=null && !p.getSummaryTaskIndicator().equals("true")))).collect(Collectors.toList());
+                        List<Task> tasks=new ArrayList<>();
                         if(taskGroupList!=null && taskGroupList.size()>0){
                             for (ProjectTask group : taskGroupList) {
                                 //如果作为第二层数据是不存在下级数据的 把当前数据作为第四层数据 手动添加阶段数据 作为该数据的上级数据
@@ -1873,7 +1874,8 @@ public class TimingTask {
                                     if(three!=null){
                                         task.setId(three.getId());
                                     }
-                                    taskService.saveOrUpdate(task);
+//                                taskService.saveOrUpdate(task);
+                                    tasks.add(task);
                                 }else {
                                     TaskGroup taskGroup=new TaskGroup();
                                     taskGroup.setProjectId(project.getId());
@@ -1922,7 +1924,8 @@ public class TimingTask {
                                     if(two!=null){
                                         task.setId(two.getId());
                                     }
-                                    taskService.saveOrUpdate(task);
+//                                taskService.saveOrUpdate(task);
+                                    tasks.add(task);
                                 }else {
                                     Stages stage = new Stages();
                                     stage.setSequence(1);
@@ -1960,9 +1963,21 @@ public class TimingTask {
                                 if(one!=null){
                                     task.setId(one.getId());
                                 }
-                                taskService.saveOrUpdate(task);
+//                            taskService.saveOrUpdate(task);
+                                tasks.add(task);
                             }
                         }
+                        if(tasks.size()>0){
+                            Map<Integer, List<Task>> listMap = tasks.stream().collect(Collectors.groupingBy(t -> t.getStagesId()));
+                            List<Integer> list = tasks.stream().map(Task::getStagesId).collect(Collectors.toList());
+                            for (Integer id : list) {
+                                List<Task> subList = listMap.get(id);
+                                for (int i = 0; i < subList.size(); i++) {
+                                    subList.get(i).setSeq(i);
+                                }
+                            }
+                            taskService.saveOrUpdateBatch(tasks);
+                        }
                     }
                 }
             }

+ 103 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/BeiSenUtils.java

@@ -0,0 +1,103 @@
+package com.management.platform.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.management.platform.entity.FeishuInfo;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.springframework.http.*;
+import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+public class BeiSenUtils {
+    static String port="10.1.10.41:20170";
+
+    public static void main(String[] args) {
+        BeiSenUtils dockWithMLD=new BeiSenUtils();
+        JSONObject jsonObject=new JSONObject();
+        LocalDateTime startDate=LocalDateTime.parse("2022-08-01 00:00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        LocalDateTime endDate=LocalDateTime.parse("2022-08-31 00:00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        jsonObject.put("startDate",startDate);
+        jsonObject.put("endDate",endDate);
+        String jsonString = jsonObject.toJSONString();
+//        dockWithMLD.getResult("http://"+port+"/api/cube/restful/interface/getModeDataPageList/getTravelRecord",jsonString);
+    }
+
+    public static String getToken(){
+        String result="";
+        String url = "https://openapi.italent.cn/token";
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        JSONObject requestMap = new JSONObject();
+        requestMap.put("grant_type","client_credentials");
+        requestMap.put("app_key","94DC8A7C7D3146FD9ECA8641208D7A2D");
+        requestMap.put("app_secret","FAC17C75768B4160A3D0C5250629AD92B5AF0AF70B824809BFBD20F1A6C9CF88");
+        HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+        ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+        if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+            String resp = ResponseEntity.getBody();
+            JSONObject respJson = JSONObject.parseObject(resp);
+            result=respJson.getString("access_token");
+        }
+        return result;
+    }
+
+    public static List<JSONArray> getByTimeWindow(String scrollId,String startTime,String stopTime){
+        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();
+        System.out.println("--------Bearer TOKEN--------"+accessToken);
+        headers.add("Authorization","Bearer "+accessToken);
+        JSONObject requestMap = new JSONObject();
+        requestMap.put("timeWindowQueryType",1);
+        requestMap.put("startTime",startTime+"T00:00:00");
+        requestMap.put("stopTime",stopTime+"T23:59:59");
+        System.out.println("--------headers请求头数据-------"+headers);
+        System.out.println("--------requestMap请求参数-------"+requestMap);
+        if(!StringUtils.isEmpty(scrollId)){
+            requestMap.put("scrollId",scrollId);
+        }
+        HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+        ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+        if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+            String resp= ResponseEntity.getBody();
+            JSONObject respJson = JSONObject.parseObject(resp);
+            if(respJson.getIntValue("code")==200){
+                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);
+                    resultList.addAll(byTimeWindow);
+                }
+                return resultList;
+            }
+        }
+        return resultList;
+    }
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserWithBeisenMapper.xml

@@ -0,0 +1,20 @@
+<?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.UserWithBeisenMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.UserWithBeisen">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="name" property="name" />
+        <result column="mobile_phone" property="mobilePhone" />
+        <result column="job_number" property="jobNumber" />
+        <result column="company_id" property="companyId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_id, name, mobile_phone, job_number, company_id
+    </sql>
+
+</mapper>