Forráskód Böngészése

数据拉取定时任务、逻辑补充

zhouyy 1 hónapja
szülő
commit
ee4d8d4d13

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

@@ -26,8 +26,8 @@ public class FinanceMonthlyWorktimeController {
     private FinanceMonthlyWorktimeService financeMonthlyWorktimeService;
 
     @RequestMapping("/send")
-    public HttpRespMsg send(@RequestParam("fmwId")String fmwId, HttpServletRequest request) {
-        return financeMonthlyWorktimeService.send(fmwId,request);
+    public HttpRespMsg send(@RequestParam("fmwId")String fmwId, @RequestParam("timesheetDate") String timesheetDate, HttpServletRequest request) {
+        return financeMonthlyWorktimeService.send(fmwId,timesheetDate,request);
     }
 
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/FmwDetailMapper.java

@@ -18,4 +18,6 @@ import java.util.List;
 public interface FmwDetailMapper extends BaseMapper<FmwDetail> {
 
     List<TisTimeVO> getTisTime(@Param("fmwId") String fmwId);
+
+    List<TisTimeVO> getTisTimeByFmwId(@Param("id") Integer id);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/FinanceMonthlyWorktimeService.java

@@ -16,5 +16,5 @@ import javax.servlet.http.HttpServletRequest;
  */
 public interface FinanceMonthlyWorktimeService extends IService<FinanceMonthlyWorktime> {
 
-    HttpRespMsg send(String fmwId, HttpServletRequest request);
+    HttpRespMsg send(String fmwId, String timesheetDate, HttpServletRequest request);
 }

+ 36 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.FinanceMonthlyWorktime;
 import com.management.platform.entity.User;
@@ -10,6 +11,7 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.FinanceMonthlyWorktimeService;
 import com.management.platform.task.DataCollectTask;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -17,9 +19,12 @@ import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -41,11 +46,11 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
     @Resource
     private UserMapper userMapper;
     @Override
-    public HttpRespMsg send(String fmwId, HttpServletRequest request) {
+    public HttpRespMsg send(String fmwId, String timesheetDate, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String userId = request.getHeader("Token");
         User user = userMapper.selectById(userId);
-        String dateStr = "currentDate";//TODO 填充日期
+//        String dateStr = "currentDate";//TODO 填充日期
         FinanceMonthlyWorktime financeMonthlyWorktime = financeMonthlyWorktimeMapper.selectById(fmwId);
         if(null == financeMonthlyWorktime){
             httpRespMsg.setError("未找到当前内容");
@@ -55,24 +60,46 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
             httpRespMsg.setError("未定稿,无法发送");
             return httpRespMsg;
         }
+        financeMonthlyWorktimeMapper.update(null,new LambdaUpdateWrapper<FinanceMonthlyWorktime>()
+                .eq(FinanceMonthlyWorktime::getId,fmwId)
+                .set(FinanceMonthlyWorktime::getTimesheetDate, LocalDate.parse(timesheetDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")))
+        );
+
 
         List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTime(fmwId);
 
         RestTemplate restTemplate = new RestTemplate();
         String insertUrl = DataCollectTask.PREFIX_URL +"/dataCollect/insertCisData";
+        String checkUrl = DataCollectTask.PREFIX_URL +"/dataCollect/checkCisData";
         if(!CollectionUtils.isEmpty(timeVOList)){
-            timeVOList.forEach(t->t.setDateStr(dateStr));
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
             Map<String, Object> requestBody = new HashMap<>();
-            requestBody.put("tisList", timeVOList);
+            requestBody.put("toSendList", timeVOList);
             HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
-            ResponseEntity<String> tisResponse = restTemplate.exchange(insertUrl, HttpMethod.POST, requestEntity, String.class);
-            if (tisResponse.getStatusCode() == HttpStatus.OK) {
-//                System.out.println("插入成功");
-            }else{
-                httpRespMsg.setError("发送失败");
+            ResponseEntity<List<TisTimeVO>> checkResponse = restTemplate.exchange(checkUrl, HttpMethod.POST, requestEntity
+                    ,new  ParameterizedTypeReference<List<TisTimeVO>>(){});
+            if(checkResponse.getStatusCode() == HttpStatus.OK){
+                List<TisTimeVO> resList = checkResponse.getBody();
+                List<TisTimeVO> tmpCheck = resList.stream().filter(t -> null != t.getCoId()).collect(Collectors.toList());
+                if(tmpCheck.size() != resList.size()){
+                    httpRespMsg.setError("财务尚未完成操作,无法获取cppid");
+                    return httpRespMsg;
+                }
+                timeVOList.forEach(t->t.setDateStr(timesheetDate));
+                HttpHeaders insertHeaders = new HttpHeaders();
+                insertHeaders.setContentType(MediaType.APPLICATION_JSON);
+                Map<String, Object> insertBody = new HashMap<>();
+                insertBody.put("tisList", resList);
+                HttpEntity<Object> insertEntity = new HttpEntity<>(insertBody, insertHeaders);
+                ResponseEntity<String> tisResponse = restTemplate.exchange(insertUrl, HttpMethod.POST, insertEntity, String.class);
+                if (tisResponse.getStatusCode() == HttpStatus.OK) {
+                    System.out.println("插入成功");
+                }else{
+                    System.out.println("插入失败");
+                }
             }
+
         }
 
         return httpRespMsg;

+ 44 - 22
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -2,6 +2,7 @@ package com.management.platform.task;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.management.platform.entity.*;
+import com.management.platform.entity.vo.TisTimeVO;
 import com.management.platform.mapper.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +17,7 @@ import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -68,11 +70,13 @@ public class DataCollectTask {
 //        sqlServerDataSource = new HikariDataSource(sqlServerConfig);
 //    }
 
-
+    @Scheduled(cron = "0 30 0 L * ?")
+    @Async
     public void caDayTisTask(){
         RestTemplate restTemplate = new RestTemplate();
         String insertUrl = PREFIX_URL+"/dataCollect/insertCisData";
-        SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
+        String checkUrl = PREFIX_URL+"/dataCollect/checkCisData";
+//        SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat sdfYm = new SimpleDateFormat("yyyy-MM");
         Date date = new Date();
         String dateYm = sdfYm.format(date);
@@ -83,29 +87,47 @@ public class DataCollectTask {
                 .eq(FinanceMonthlyWorktime::getStatus, 1)
         );
         if(!CollectionUtils.isEmpty(financeMonthlyWorktimes)){
-//            for (FinanceMonthlyWorktime financeMonthlyWorktime : financeMonthlyWorktimes) {
-////                sdfYmd.format(financeMonthlyWorktime.get)
-//                List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByDateYm(financeMonthlyWorktime.getId());
-//                if(!CollectionUtils.isEmpty(timeVOList)){
-//                    timeVOList.forEach(t->t.setDateStr(dateStr));
-//                    HttpHeaders headers = new HttpHeaders();
-//                    headers.setContentType(MediaType.APPLICATION_JSON);
-//                    Map<String, Object> requestBody = new HashMap<>();
-//                    requestBody.put("tisList", timeVOList);
-//                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
-//
-//                    ResponseEntity<String> tisResponse = restTemplate.exchange(insertUrl, HttpMethod.POST, requestEntity, String.class);
-//                    if (tisResponse.getStatusCode() == HttpStatus.OK) {
-//                        System.out.println("插入成功");
-//                    }else{
-//                        System.out.println(dateStr + "插入失败");
-//                    }
-//                }
-//            }
+            List<TisTimeVO> toSendList = new ArrayList<>();
+            for (FinanceMonthlyWorktime financeMonthlyWorktime : financeMonthlyWorktimes) {
+                String ymd = financeMonthlyWorktime.getTimesheetDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByFmwId(financeMonthlyWorktime.getId());
+                if(!CollectionUtils.isEmpty(timeVOList)){
+                    timeVOList.forEach(t->t.setDateStr(ymd));
+                    toSendList.addAll(timeVOList);
+                }
+            }
+            if(!CollectionUtils.isEmpty(toSendList)){
+                //校验cppid
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.APPLICATION_JSON);
+                Map<String, Object> requestBody = new HashMap<>();
+                requestBody.put("toSendList", toSendList);
+                HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                ResponseEntity<List<TisTimeVO>> checkResponse = restTemplate.exchange(checkUrl, HttpMethod.POST, requestEntity
+                        ,new  ParameterizedTypeReference<List<TisTimeVO>>(){});
+                if (checkResponse.getStatusCode() == HttpStatus.OK) {
+                    List<TisTimeVO> resList = checkResponse.getBody();
+                    List<TisTimeVO> tmpCheck = resList.stream().filter(t -> null != t.getCoId()).collect(Collectors.toList());
+                    if(tmpCheck.size() == resList.size()){
+                        //执行插入操作
+                        HttpHeaders insertHeaders = new HttpHeaders();
+                        insertHeaders.setContentType(MediaType.APPLICATION_JSON);
+                        Map<String, Object> insertBody = new HashMap<>();
+                        insertBody.put("tisList", resList);
+                        HttpEntity<Object> insertEntity = new HttpEntity<>(insertBody, insertHeaders);
+                        ResponseEntity<String> tisResponse = restTemplate.exchange(insertUrl, HttpMethod.POST, insertEntity, String.class);
+                        if (tisResponse.getStatusCode() == HttpStatus.OK) {
+                            System.out.println("插入成功");
+                        }else{
+                            System.out.println("插入失败");
+                        }
+                    }
+
+                }
+            }
 
         }
 
-        String dateStr = sdfYmd.format(date);
 //        List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByDateYm(specialCompanyId,dateStr);
 //        List<TisTimeVO> timeVOList =  reportMapper.getTisTimeByDate(specialCompanyId,dateStr);
 

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/FmwDetailMapper.xml

@@ -10,4 +10,10 @@
         where fmw_id = #{fmwId}
         group by extra_field4,extra_field5
     </select>
+    <select id="getTisTimeByFmwId" resultType="com.management.platform.entity.vo.TisTimeVO">
+        select extra_field4 as orderId,extra_field5 as line
+             ,sum(maintance_time+debug_time+waiting_time+assist_time+public_time) as workTime
+        from fmw_detail
+        where fmw_id = #{fmwId}
+    </select>
 </mapper>