Pārlūkot izejas kodu

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

# Conflicts:
#	fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/FmwDetailMapper.xml
QuYueTing 1 mēnesi atpakaļ
vecāks
revīzija
535e81d15a

+ 52 - 7
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java

@@ -67,27 +67,41 @@ public class DataCollectController {
 //    @Autowired
 //    private ErpOrderInfoMapper erpOrderInfoMapper;
 
-    @RequestMapping("/insertCisData")
-    public String insertCisData(@RequestBody List<TisTimeVO> tisList) {
-//        List<TisTimeVO> tisTimeVOS = JSONArray.parseArray(jsonarray, TisTimeVO.class);
+    @RequestMapping("/checkCisData")
+    public List<TisTimeVO> checkCisData(@RequestBody List<TisTimeVO> tisList) {
         if(!CollectionUtils.isEmpty(tisList)){
             for (TisTimeVO tisTimeVO : tisList) {
                 String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";
                 try (Connection connection = sqlServerDataSource.getConnection()) {
                     PreparedStatement queryStmt = connection.prepareStatement(sqlQuery);
-                    queryStmt.setString(1,tisTimeVO.getOrderId());
-                    queryStmt.setInt(2,tisTimeVO.getLine());
+                    queryStmt.setString(1, tisTimeVO.getOrderId());
+                    queryStmt.setInt(2, tisTimeVO.getLine());
                     ResultSet queryRs = queryStmt.executeQuery();
                     if (queryRs.next()) {
                         tisTimeVO.setCoId(queryRs.getString("iRealCOID"));
                     }
-                    String sqlInsert = "insert into CA_DayTiS(cPPID,iRealWkt,dDate) values(?,?,?)";
+                } catch (SQLException e) {
+                    System.err.println("数据库操作错误: " + e.getMessage());
+                }
+            }
+        }
+        return tisList;
+    }
+
+    @RequestMapping("/insertCisData")
+    public String insertCisData(@RequestBody List<TisTimeVO> tisList) {
+        if(!CollectionUtils.isEmpty(tisList)){
+            int count = 0;
+            for (TisTimeVO tisTimeVO : tisList) {
+                String sqlInsert = "insert into CA_DayTiS(cPPID,iRealWkt,dDate) values(?,?,?)";
+                try (Connection connection = sqlServerDataSource.getConnection()) {
                     PreparedStatement insertStmt = connection.prepareStatement(sqlInsert);
                     insertStmt.setString(1,tisTimeVO.getCoId());
                     insertStmt.setBigDecimal(2,tisTimeVO.getWorkTime());
                     insertStmt.setString(3,tisTimeVO.getDateStr());
                     int i = insertStmt.executeUpdate();
                     if(i>0){
+                        count++;
 //                        System.out.println("执行成功");
                     }else{
                         System.out.println(tisTimeVO.getCoId()+"执行失败");
@@ -96,8 +110,39 @@ public class DataCollectController {
                     System.err.println("数据库操作错误: " + e.getMessage());
                 }
             }
-
+            System.out.println("本批次总数量:"+tisList.size()+",成功插入条数:"+count);
         }
+//        List<TisTimeVO> tisTimeVOS = JSONArray.parseArray(jsonarray, TisTimeVO.class);
+//        if(!CollectionUtils.isEmpty(tisList)){
+//            int count = 0;
+//            for (TisTimeVO tisTimeVO : tisList) {
+//                String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";
+//                try (Connection connection = sqlServerDataSource.getConnection()) {
+//                    PreparedStatement queryStmt = connection.prepareStatement(sqlQuery);
+//                    queryStmt.setString(1,tisTimeVO.getOrderId());
+//                    queryStmt.setInt(2,tisTimeVO.getLine());
+//                    ResultSet queryRs = queryStmt.executeQuery();
+//                    if (queryRs.next()) {
+//                        tisTimeVO.setCoId(queryRs.getString("iRealCOID"));
+//                        String sqlInsert = "insert into CA_DayTiS(cPPID,iRealWkt,dDate) values(?,?,?)";
+//                        PreparedStatement insertStmt = connection.prepareStatement(sqlInsert);
+//                        insertStmt.setString(1,tisTimeVO.getCoId());
+//                        insertStmt.setBigDecimal(2,tisTimeVO.getWorkTime());
+//                        insertStmt.setString(3,tisTimeVO.getDateStr());
+//                        int i = insertStmt.executeUpdate();
+//                        if(i>0){
+//                            count++;
+////                        System.out.println("执行成功");
+//                        }else{
+//                            System.out.println(tisTimeVO.getCoId()+"执行失败");
+//                        }
+//                    }
+//                } catch (SQLException e) {
+//                    System.err.println("数据库操作错误: " + e.getMessage());
+//                }
+//            }
+//            System.out.println("本批次总数量:"+tisList.size()+",成功插入条数:"+count);
+//        }
         return "ok";
     }
 

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

@@ -1,10 +1,15 @@
 package com.management.platform.controller;
 
 
+import com.management.platform.service.FinanceMonthlyWorktimeService;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
-
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * <p>
  *  前端控制器
@@ -17,5 +22,13 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/finance-monthly-worktime")
 public class FinanceMonthlyWorktimeController {
 
+    @Resource
+    private FinanceMonthlyWorktimeService financeMonthlyWorktimeService;
+
+    @RequestMapping("/send")
+    public HttpRespMsg send(@RequestParam("fmwId")String fmwId, @RequestParam("timesheetDate") String timesheetDate, HttpServletRequest request) {
+        return financeMonthlyWorktimeService.send(fmwId,timesheetDate,request);
+    }
+
 }
 

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

@@ -2,6 +2,10 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.FmwDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.vo.TisTimeVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface FmwDetailMapper extends BaseMapper<FmwDetail> {
 
+    List<TisTimeVO> getTisTime(@Param("fmwId") String fmwId);
+
+    List<TisTimeVO> getTisTimeByFmwId(@Param("id") Integer id);
 }

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

@@ -2,6 +2,9 @@ package com.management.platform.service;
 
 import com.management.platform.entity.FinanceMonthlyWorktime;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface FinanceMonthlyWorktimeService extends IService<FinanceMonthlyWorktime> {
 
+    HttpRespMsg send(String fmwId, String timesheetDate, HttpServletRequest request);
 }

+ 88 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java

@@ -1,10 +1,30 @@
 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;
+import com.management.platform.entity.vo.TisTimeVO;
 import com.management.platform.mapper.FinanceMonthlyWorktimeMapper;
+import com.management.platform.mapper.FmwDetailMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.FinanceMonthlyWorktimeService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+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>
@@ -17,4 +37,71 @@ import org.springframework.stereotype.Service;
 @Service
 public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthlyWorktimeMapper, FinanceMonthlyWorktime> implements FinanceMonthlyWorktimeService {
 
+    @Resource
+    private FinanceMonthlyWorktimeMapper financeMonthlyWorktimeMapper;
+
+    @Resource
+    private FmwDetailMapper fmwDetailMapper;
+
+    @Resource
+    private UserMapper userMapper;
+    @Override
+    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 填充日期
+        FinanceMonthlyWorktime financeMonthlyWorktime = financeMonthlyWorktimeMapper.selectById(fmwId);
+        if(null == financeMonthlyWorktime){
+            httpRespMsg.setError("未找到当前内容");
+            return httpRespMsg;
+        }
+        if(0 == financeMonthlyWorktime.getStatus()){
+            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)){
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            Map<String, Object> requestBody = new HashMap<>();
+            requestBody.put("toSendList", timeVOList);
+            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()){
+                    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;
+    }
 }

+ 61 - 21
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -5,6 +5,7 @@ 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;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.*;
 import org.springframework.scheduling.annotation.Async;
@@ -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;
 
@@ -39,7 +41,7 @@ public class DataCollectTask {
     @Resource
     private ProjectCategoryMapper projectCategoryMapper;
 
-    private static final String PREFIX_URL = "http://58.210.104.138:10020";
+    public static final String PREFIX_URL = "http://58.210.104.138:10020";
 
     private static final int specialCompanyId = 7536;
 
@@ -53,6 +55,8 @@ public class DataCollectTask {
 
     @Resource
     private FmwDetailMapper fmwDetailMapper;
+    @Autowired
+    private FinanceMonthlyWorktimeMapper financeMonthlyWorktimeMapper;
 
 
 //    private static HikariDataSource sqlServerDataSource;
@@ -66,15 +70,66 @@ 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 dateStr = sdfYmd.format(date);
-//        List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByDate(specialCompanyId,dateStr);
-        List<TisTimeVO> timeVOList =  reportMapper.getTisTimeByDate(specialCompanyId,dateStr);
+        String dateYm = sdfYm.format(date);
+
+        List<FinanceMonthlyWorktime> financeMonthlyWorktimes = financeMonthlyWorktimeMapper.selectList(new LambdaQueryWrapper<FinanceMonthlyWorktime>()
+                .eq(FinanceMonthlyWorktime::getCompanyId, specialCompanyId)
+                .eq(FinanceMonthlyWorktime::getYmonth, dateYm)
+                .eq(FinanceMonthlyWorktime::getStatus, 1)
+        );
+        if(!CollectionUtils.isEmpty(financeMonthlyWorktimes)){
+            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("插入失败");
+                        }
+                    }
+
+                }
+            }
+
+        }
+
+//        List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByDateYm(specialCompanyId,dateStr);
+//        List<TisTimeVO> timeVOList =  reportMapper.getTisTimeByDate(specialCompanyId,dateStr);
 
 //        for (TisTimeVO tisTimeVO : timeVOList) {
 //            String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";
@@ -91,21 +146,6 @@ public class DataCollectTask {
 //                System.err.println("数据库操作错误: " + e.getMessage());
 //            }
 //        }
-        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 + "插入失败");
-            }
-        }
 
 //        for (TisTimeVO tisTimeVO : timeVOList) {
 //            String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";

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

@@ -1,8 +1,8 @@
-<?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">
+<?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.FmwDetailMapper">
-
-    <!-- 閫氱敤鏌ヨ�鏄犲皠缁撴灉 -->
+<!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.management.platform.entity.FmwDetail">
         <id column="id" property="id" />
         <result column="fmw_id" property="fmwId" />
@@ -20,9 +20,21 @@
         <result column="public_time" property="publicTime" />
     </resultMap>
 
-    <!-- 通用查询结果列 -->
+    <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id, fmw_id, dept_id, dept_name, dept_code, project_id, project_code, extra_field4, extra_field5, maintance_time, debug_time, waiting_time, assist_time, public_time
     </sql>
-
+    <select id="getTisTime" 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}
+        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>