Explorar el Código

芯片数据拉取

zhouyy hace 1 mes
padre
commit
430df5a003

+ 37 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ErpOrderInfo.java

@@ -0,0 +1,37 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ErpOrderInfo extends Model<ErpOrderInfo> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("order_id")
+    private String orderId;
+
+    @TableField("project_id")
+    private String projectId;
+
+    @TableField("project_name")
+    private String projectName;
+
+    @TableField("line")
+    private Integer line;
+
+    @TableField("status")
+    private Integer status;
+
+    @TableField("moDId")
+    private String MoDId;
+}

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserFvTime.java

@@ -54,6 +54,12 @@ public class UserFvTime extends Model<UserFvTime> {
 //    @TableField("overtime_hours")
 //    private Float overTimeHours;
 
+    @TableField("overtime_seconds")
+    private Long overTimeSeconds;
+
+    @TableField("procinst_id")
+    private String procinstId;
+
     /**
      * 是否被标记排除异常范围
      */

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BusinessTripMapper.java

@@ -2,6 +2,7 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.BusinessTrip;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -19,4 +20,8 @@ public interface BusinessTripMapper extends BaseMapper<BusinessTrip> {
     public List<BusinessTrip> summaryData(String keyword, String startDate, String endDate, Integer companyId);
 
     List<Map<String,Object>> selectBusiness(String startDate, String endDate,String deptId);
+
+    void batchInsert(@Param("resList") List<BusinessTrip> resList);
+
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
 }

+ 15 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ErpOrderInfoMapper.java

@@ -0,0 +1,15 @@
+package com.management.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.ErpOrderInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ErpOrderInfoMapper extends BaseMapper<ErpOrderInfo> {
+    void batchInsert(@Param("resList") List<ErpOrderInfo> resList);
+
+    List<String> getExistIds(@Param("moIds") List<String> moIds);
+}

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java

@@ -27,4 +27,8 @@ public interface LeaveSheetMapper extends BaseMapper<LeaveSheet> {
     List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate,List<Integer> branchDepartment,List<Integer> deptIds);
 
     List<UserRestTimeVO> getCompanyUserRestTimeHours(@Param("companyId") Integer companyId,@Param("userId")String userId);
+
+    void batchInsert(@Param("resList") List<LeaveSheet> resList);
+
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserFvTimeMapper.java

@@ -17,4 +17,8 @@ import java.util.List;
 public interface UserFvTimeMapper extends BaseMapper<UserFvTime> {
 
     void batchInsert(@Param("toAddList") List<UserFvTime> toAddList);
+
+    void batchInsertCollect(@Param("resList") List<UserFvTime> resList);
+
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
 }

+ 327 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -0,0 +1,327 @@
+package com.management.platform.task;
+
+import com.management.platform.entity.BusinessTrip;
+import com.management.platform.entity.ErpOrderInfo;
+import com.management.platform.entity.LeaveSheet;
+import com.management.platform.entity.UserFvTime;
+import com.management.platform.mapper.BusinessTripMapper;
+import com.management.platform.mapper.ErpOrderInfoMapper;
+import com.management.platform.mapper.LeaveSheetMapper;
+import com.management.platform.mapper.UserFvTimeMapper;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.*;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@EnableScheduling
+@Component
+public class DataCollectTask {
+
+    @Resource
+    private UserFvTimeMapper userFvTimeMapper;
+    @Resource
+    private BusinessTripMapper businessTripMapper;
+    @Resource
+    private LeaveSheetMapper leaveSheetMapper;
+
+    @Resource
+    private ErpOrderInfoMapper erpOrderInfoMapper;
+
+    private static final String PREFIX_URL = "http://58.210.104.138:10020";
+
+
+
+    @Scheduled(cron = "0 0 1 * * ?")
+    public void sqlServerTask() {
+        System.out.println("开始测试任务定时=======================");
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerDataSum";
+        String listUrl = PREFIX_URL+"/dataCollect/getSqlServerDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            System.out.println("总数量为==== "+totalNum);
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<ErpOrderInfo> toAddList = new ArrayList<>();
+                List<ErpOrderInfo> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<ErpOrderInfo>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<ErpOrderInfo>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<ErpOrderInfo> dataList = listResponse.getBody();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> collect = dataList.stream().map(ErpOrderInfo::getMoDId).distinct().collect(Collectors.toList());
+                            List<String> existIds = erpOrderInfoMapper.getExistIds(collect);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getMoDId())).collect(Collectors.toList()));
+                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getMoDId())).collect(Collectors.toList()));
+                            }else{
+                                toAddList.addAll(dataList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                erpOrderInfoMapper.batchInsert(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (ErpOrderInfo orderInfo : toUpdateList) {
+                                    erpOrderInfoMapper.updateById(orderInfo);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    @Scheduled(cron = "0 21 11 * * ?")
+    public void workDayTask(){
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL+"/dataCollect/getWorkDayDataSum";
+        String listUrl = PREFIX_URL+"/dataCollect/getWorkDayDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<UserFvTime> toAddList = new ArrayList<>();
+                List<UserFvTime> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<UserFvTime>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<UserFvTime>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<UserFvTime> dataList = listResponse.getBody();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> collect = dataList.stream().map(UserFvTime::getProcinstId).distinct().collect(Collectors.toList());
+                            List<String> existIds = userFvTimeMapper.getExistIds(collect);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                            }else{
+                                toAddList.addAll(dataList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                userFvTimeMapper.batchInsertCollect(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (UserFvTime tmp : toUpdateList) {
+                                    userFvTimeMapper.updateById(tmp);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    @Scheduled(cron = "0 0 2 * * ?")
+    public void leaveSheetTask(){
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL + "/dataCollect/getLeaveSheetDataSum";
+        String listUrl = PREFIX_URL + "/dataCollect/getLeaveSheetDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<LeaveSheet> toAddList = new ArrayList<>();
+                List<LeaveSheet> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<LeaveSheet>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<LeaveSheet>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<LeaveSheet> dataList = listResponse.getBody();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> collect = dataList.stream().map(LeaveSheet::getProcinstId).distinct().collect(Collectors.toList());
+                            List<String> existIds = leaveSheetMapper.getExistIds(collect);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                            }else{
+                                toAddList.addAll(dataList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                leaveSheetMapper.batchInsert(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (LeaveSheet tmp : toUpdateList) {
+                                    leaveSheetMapper.updateById(tmp);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    @Scheduled(cron = "0 30 2 * * ?")
+    public void businessTripTask(){
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL+"/dataCollect/getBusinessTripDataSum";
+        String listUrl = PREFIX_URL+"/dataCollect/getBusinessTripDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<BusinessTrip> toAddList = new ArrayList<>();
+                List<BusinessTrip> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<BusinessTrip>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<BusinessTrip>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<BusinessTrip> dataList = listResponse.getBody();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> collect = dataList.stream().map(BusinessTrip::getProcinstId).distinct().collect(Collectors.toList());
+                            List<String> existIds = businessTripMapper.getExistIds(collect);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                            }else{
+                                toAddList.addAll(dataList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                businessTripMapper.batchInsert(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (BusinessTrip tmp : toUpdateList) {
+                                    businessTripMapper.updateById(tmp);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+}

+ 15 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BusinessTripMapper.xml

@@ -38,6 +38,15 @@
     <sql id="Base_Column_List">
         id, company_id, owner_id, owner_name, reason, start_date, end_date, way, city_from, city_to, go_back, day_count, remark, status, deny_reason, indate, is_linked, procinst_id, gmt_finished, auditor_id, auditor_name, auditor_type, cur_audit_setting_id
     </sql>
+    <insert id="batchInsert">
+        insert into business_trip(company_id, owner_id, owner_name, reason, start_date, end_date
+        , way, city_from, city_to,day_count, status, indate,  procinst_id)
+        VALUES
+        <foreach collection="resList" separator="," item="res">
+            (#{res.companyId},#{res.ownerId},#{res.ownerName},#{res.reason},#{res.startDate},#{res.endDate}
+            ,#{res.way},#{res.cityFrom},#{res.cityTo},#{res.dayCount},#{res.status},#{res.indate},#{res.procinstId})
+        </foreach>
+    </insert>
 
     <select id="summaryData"  resultMap="BaseResultMap1">
         select owner_id, owner_name, sum(day_count) as day_count, department.department_name as department_name from business_trip
@@ -65,4 +74,10 @@
             and business_trip.start_date &lt;= #{endDate} and business_trip.end_date >= #{startDate}
         </if>
     </select>
+    <select id="getExistIds" resultType="java.lang.String">
+        select procinst_id
+        from business_trip
+        where procinst_id in
+        <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
+    </select>
 </mapper>

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ErpOrderInfoMapper.xml

@@ -0,0 +1,18 @@
+<?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.ErpOrderInfoMapper">
+
+    <insert id="batchInsert">
+        insert into erp_order_info(order_id, project_id, project_name, line, status)
+        VALUES
+            <foreach collection="resList" separator="," item="res">
+                (#{res.orderId},#{res.projectId},#{res.projectName},#{res.line},#{res.status})
+            </foreach>
+    </insert>
+    <select id="getExistIds" resultType="java.lang.String">
+        select moDId
+        from erp_order_info
+        where moDId in <foreach collection="moIds" item="moId" separator="," open="(" close=")">#{moId}</foreach>
+    </select>
+</mapper>

+ 14 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml

@@ -31,6 +31,15 @@
     <sql id="Base_Column_List">
         id, company_id, owner_id, owner_name, start_date, end_date, leave_type, status, remark, operator_id, time_hours, time_days, indate, time_type, tel, auditor_id, auditor_name, auditor_type, procinst_id, gmt_finished, cur_audit_setting_id
     </sql>
+    <insert id="batchInsert">
+        insert into leave_sheet(company_id, owner_id, owner_name,start_date, end_date, leave_type, status, remark
+        , operator_id, time_hours, time_days, indate, time_type, tel, procinst_id) VALUES
+        <foreach collection="resList" separator="," item="res">
+            (#{res.companyId},#{res.ownerId},#{res.ownerName},#{res.startDate},#{res.endDate}
+            ,#{res.leaveType},#{res.status},#{res.remark},#{res.operatorId},#{res.timeHours},#{res.timeDays}
+            ,#{res.indate},#{res.timeType},#{res.tel},#{res.procinstId})
+        </foreach>
+    </insert>
     <select id="summaryData"  resultMap="BaseResultMap">
         select owner_id, owner_name, sum(time_hours) as time_hours, sum(time_days) as time_days from leave_sheet
         where start_date &gt;= #{startDate} and end_date &lt;= #{endDate}
@@ -99,4 +108,9 @@
                 group by owner_id
             ) tmp2 on tmp1.id = tmp2.userId
     </select>
+    <select id="getExistIds" resultType="java.lang.String">
+        select procinst_id
+        from leave_sheet
+        where procinst_id in <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
+    </select>
 </mapper>

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserFvTimeMapper.xml

@@ -26,5 +26,15 @@
             (#{toAdd.workDate},#{toAdd.userId},#{toAdd.companyId},#{toAdd.startTime},#{toAdd.endTime},#{toAdd.workHours},#{toAdd.overTimeHours})
             </foreach>
     </insert>
+    <insert id="batchInsertCollect">
+        insert into user_fv_time(work_date, user_id, company_id, start_time, end_time,work_hours,overtime_seconds,procinst_id) VALUES
+        <foreach collection="resList" separator="," item="res">
+            (#{res.workDate},#{res.userId},#{res.companyId},#{res.startTime},#{res.endTime},#{res.workHours},#{res.overTimeSeconds},#{res.procinstId})
+        </foreach>
+    </insert>
+    <select id="getExistIds" resultType="java.lang.String">
+        select procinst_id from user_fv_time where procinst_id in
+        <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
+    </select>
 
 </mapper>