Browse Source

增加手动操作接口,修改氚云数据时间区间。

Cyangbin 3 years ago
parent
commit
31e78164ef

+ 2 - 2
deploy.sh

@@ -9,7 +9,7 @@ ACTION=$1
 APP_START_TIMEOUT=20    # 等待应用启动的时间
 APP_START_TIMEOUT=20    # 等待应用启动的时间
 APP_PORT=8080          # 应用端口
 APP_PORT=8080          # 应用端口
 HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}  # 应用健康检查URL
 HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}  # 应用健康检查URL
-APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
+APP_HOME=/home/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
 JAR_NAME=${APP_HOME}/manatee-1.0.jar # jar包的名字
 JAR_NAME=${APP_HOME}/manatee-1.0.jar # jar包的名字
 JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志
 JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志
 
 
@@ -49,7 +49,7 @@ usage() {
 #}
 #}
 start_application() {
 start_application() {
     echo "starting java process"
     echo "starting java process"
-    nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
+    nohup java -Xms256m -Xmx1024m -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
     echo "started java process"
     echo "started java process"
 }
 }
 
 

+ 1 - 1
src/main/java/com/galaxis/manatee/ManateeApplication.java

@@ -19,7 +19,7 @@ public class ManateeApplication {
 
 
     @PostConstruct
     @PostConstruct
     void started() {
     void started() {
-        TimeZone.setDefault(TimeZone.getTimeZone("UTC+8"));
+        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
     }
     }
 
 
     public static void main(String[] args) {
     public static void main(String[] args) {

+ 73 - 10
src/main/java/com/galaxis/manatee/controller/TestController.java

@@ -1,14 +1,18 @@
 package com.galaxis.manatee.controller;
 package com.galaxis.manatee.controller;
 
 
-import com.galaxis.manatee.service.LogCheckService;
-import com.galaxis.manatee.service.LogService;
-import com.galaxis.manatee.service.LogStandardService;
-import com.galaxis.manatee.service.LogUpdateService;
+import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
+import com.galaxis.manatee.service.*;
+import com.galaxis.manatee.task.ChuanyunBasicDataScheduledTask;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
 /**
  * @author zcj
  * @author zcj
  * @version 0.1
  * @version 0.1
@@ -22,12 +26,21 @@ public class TestController {
     private final LogStandardService logStandardService;
     private final LogStandardService logStandardService;
     private final LogCheckService logCheckService;
     private final LogCheckService logCheckService;
     private final LogService logService;
     private final LogService logService;
+    private final LogDownloadService logDownloadService;
+
+    private final ProjectMemberService projectMemberService;
+
+    private final ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask;
 
 
-    public TestController(LogUpdateService logUpdateService, LogStandardService logStandardService, LogCheckService logCheckService, LogService logService) {
+
+    public TestController(LogUpdateService logUpdateService, LogStandardService logStandardService, LogCheckService logCheckService, LogService logService, LogDownloadService logDownloadService, ProjectMemberService projectMemberService, ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask) {
         this.logUpdateService = logUpdateService;
         this.logUpdateService = logUpdateService;
         this.logStandardService = logStandardService;
         this.logStandardService = logStandardService;
         this.logCheckService = logCheckService;
         this.logCheckService = logCheckService;
         this.logService = logService;
         this.logService = logService;
+        this.logDownloadService = logDownloadService;
+        this.projectMemberService = projectMemberService;
+        this.chuanyunBasicDataScheduledTask = chuanyunBasicDataScheduledTask;
     }
     }
 
 
     @GetMapping("/test/helloGet")
     @GetMapping("/test/helloGet")
@@ -39,7 +52,7 @@ public class TestController {
      * 标准化所有周工时
      * 标准化所有周工时
      */
      */
     @GetMapping("/test/api/standardAllWeekMemberHour")
     @GetMapping("/test/api/standardAllWeekMemberHour")
-    public void standardAllWeekMemberHour(){
+    public void standardAllWeekMemberHour() {
         logService.standardAllWeekMemberHour();
         logService.standardAllWeekMemberHour();
     }
     }
 
 
@@ -47,13 +60,14 @@ public class TestController {
      * 标准化所有月工时
      * 标准化所有月工时
      */
      */
     @GetMapping("/test/api/standardAllSelfCost")
     @GetMapping("/test/api/standardAllSelfCost")
-    public void standardAllSelfCost(){
+    public void standardAllSelfCost() {
         logService.standardAllSelfCost();
         logService.standardAllSelfCost();
     }
     }
 
 
     /**
     /**
      * 根据用户Id标准化日工时
      * 根据用户Id标准化日工时
-     * @param userId    用户Id
+     *
+     * @param userId 用户Id
      */
      */
     @GetMapping("/test/api/standardSelfWorkHourByUserId")
     @GetMapping("/test/api/standardSelfWorkHourByUserId")
     public void standardSelfWorkHourByUserId(@RequestParam("userId") String userId) {
     public void standardSelfWorkHourByUserId(@RequestParam("userId") String userId) {
@@ -62,7 +76,8 @@ public class TestController {
 
 
     /**
     /**
      * 根据用户Id标准化周工时
      * 根据用户Id标准化周工时
-     * @param userId    用户Id
+     *
+     * @param userId 用户Id
      */
      */
     @GetMapping("/test/api/standardWeekMemberHourByUserId")
     @GetMapping("/test/api/standardWeekMemberHourByUserId")
     public void standardWeekMemberHourByUserId(@RequestParam("userId") String userId) {
     public void standardWeekMemberHourByUserId(@RequestParam("userId") String userId) {
@@ -71,7 +86,8 @@ public class TestController {
 
 
     /**
     /**
      * 根据用户Id标准化月工时
      * 根据用户Id标准化月工时
-     * @param userId    用户Id
+     *
+     * @param userId 用户Id
      */
      */
     @GetMapping("/test/api/standardSelfCostByUserId")
     @GetMapping("/test/api/standardSelfCostByUserId")
     public void standardSelfCostByUserId(@RequestParam("userId") String userId) {
     public void standardSelfCostByUserId(@RequestParam("userId") String userId) {
@@ -149,6 +165,53 @@ public class TestController {
 
 
     }
     }
 
 
+    /**
+     * 核查工时信息
+     *
+     * @param
+     */
+    @GetMapping("/test/api/checkWorkHour")
+    public void checkWorkHour() {
+//        List<String> allUserIdList = chuanyunUserCompanyDao.findAll().stream().map(ChuanyunUserCompanyDO::getUserId).collect(Collectors.toList());
+//        logCheckService.checkHalfYearDayWorkHour(allUserIdList);
+//        logCheckService.checkHalfYearWeekWorkHour(allUserIdList);
+//        logCheckService.checkHalfYearMonthWorkHour(allUserIdList);
+
+    }
+
+    /**
+     * 下载工时日志
+     *
+     * @param
+     */
+    @GetMapping("/test/api/pullChuanyunLog")
+    public void pullChuanyunLog() {
+        logDownloadService.saveChuanyunLogDO(false);
+    }
+
+    /**
+     * 手动更新项目组成员
+     */
+    @GetMapping("/test/api/manual/updateProjectMember")
+    public void updateProjectMember() {
+        try {
+            projectMemberService.updateManagerMember("bfc36277-b201-4a80-b61c-e632bc664d82");
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 手动更新项目组成员
+     */
+    @GetMapping("/test/api/manual/getGroupProjectForSynchronizationManually")
+    public void getGroupProjectForSynchronizationManually() {
+
+        chuanyunBasicDataScheduledTask.getGroupProjectForSynchronizationManually();
+
+    }
+
+
 }
 }
 
 
 
 

+ 38 - 5
src/main/java/com/galaxis/manatee/controller/WorkHourController.java

@@ -1,6 +1,9 @@
 package com.galaxis.manatee.controller;
 package com.galaxis.manatee.controller;
 
 
 import com.galaxis.manatee.service.LogCheckService;
 import com.galaxis.manatee.service.LogCheckService;
+import com.galaxis.manatee.service.LogService;
+import com.galaxis.manatee.service.LogStandardService;
+import com.galaxis.manatee.service.LogUpdateService;
 import com.galaxis.manatee.task.WorkHourStatistics;
 import com.galaxis.manatee.task.WorkHourStatistics;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -16,11 +19,17 @@ import org.springframework.web.bind.annotation.RestController;
 public class WorkHourController {
 public class WorkHourController {
 
 
     private final LogCheckService logCheckService;
     private final LogCheckService logCheckService;
+    private final LogStandardService logStandardService;
+    private final LogUpdateService logUpdateService;
     private final WorkHourStatistics workHourStatistics;
     private final WorkHourStatistics workHourStatistics;
+    private final LogService logService;
 
 
-    public WorkHourController(LogCheckService logCheckService, WorkHourStatistics workHourStatistics) {
+    public WorkHourController(LogCheckService logCheckService, WorkHourStatistics workHourStatistics,LogStandardService logStandardService,LogUpdateService logUpdateService,LogService logService) {
         this.logCheckService = logCheckService;
         this.logCheckService = logCheckService;
         this.workHourStatistics = workHourStatistics;
         this.workHourStatistics = workHourStatistics;
+        this.logStandardService = logStandardService;
+        this.logUpdateService = logUpdateService;
+        this.logService = logService;
     }
     }
 
 
     /**
     /**
@@ -37,11 +46,35 @@ public class WorkHourController {
     }
     }
 
 
     /**
     /**
-     * 更新全部工时信息
+     * 标准化全部工时信息
      */
      */
-    @GetMapping("/test/workHour/updateWorkHour")
-    public void updateWorkHour(){
-        workHourStatistics.updateHour();
+    @GetMapping("/test/workHour/standardDayWorkHourApi")
+    public void standardDayWorkHourApi(){
+        workHourStatistics.standardDayWorkHour();
+    }
+
+    /**
+     * 上传日工时至氚云数据库
+     */
+    @GetMapping("/test/workHour/pullDayWorkHourApi")
+    public void pullDayWorkHourApi(){
+        workHourStatistics.pullDayWorkHour();
+    }
+
+    /**
+     * 标准化半年内工时信息
+     */
+    @GetMapping("/test/workHour/standardHalfYearDayWorkHourApi")
+    public void standardHalfYearDayWorkHourApi(){
+        logStandardService.standardHalfYearWorkHour();
+    }
+
+    /**
+     * 上传半年内日工时至氚云数据库
+     */
+    @GetMapping("/test/workHour/pullHalfYearDayWorkHourApi")
+    public void pullHalfYearDayWorkHourApi(){
+        logService.updateHalfYearChuanyunSelfWorkHour();
     }
     }
 
 
 
 

+ 73 - 26
src/main/java/com/galaxis/manatee/dao/ChuanyunSelfWorkHourDao.java

@@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
 
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
@@ -16,36 +17,39 @@ import java.util.List;
  * @author kxuan
  * @author kxuan
  */
  */
 @Repository
 @Repository
-public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfWorkHourDO,String> {
+public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfWorkHourDO, String> {
 
 
     /**
     /**
      * 根据项目id,用户id,日期获取工时数据
      * 根据项目id,用户id,日期获取工时数据
-     * @param userId    用户Id
-     * @param projectId 项目Id
-     * @param dayLogDate    日志日期
-     * @return  日工时记录
+     *
+     * @param userId     用户Id
+     * @param projectId  项目Id
+     * @param dayLogDate 日志日期
+     * @return 日工时记录
      */
      */
-    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectTypeAndStatus(String userId, String projectId, LocalDateTime dayLogDate,String projectType,String status);
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectTypeAndStatus(String userId, String projectId, LocalDateTime dayLogDate, String projectType, String status);
 
 
     /**
     /**
      * 根据项目id,用户id,日期获取工时数据
      * 根据项目id,用户id,日期获取工时数据
+     *
      * @param userId
      * @param userId
      * @param projectId
      * @param projectId
      * @param dayLogDate
      * @param dayLogDate
      * @param projectType
      * @param projectType
      * @return
      * @return
      */
      */
-    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectType(String userId, String projectId, LocalDateTime dayLogDate,String projectType);
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectType(String userId, String projectId, LocalDateTime dayLogDate, String projectType);
 
 
     /**
     /**
      * 根据userId获取工时数据
      * 根据userId获取工时数据
+     *
      * @param userId
      * @param userId
      * @return
      * @return
      */
      */
     List<ChuanyunSelfWorkHourDO> findByUserId(String userId);
     List<ChuanyunSelfWorkHourDO> findByUserId(String userId);
 
 
 
 
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.project_id," +
@@ -66,38 +70,42 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
 
 
     /**
     /**
      * 根据用户id,日期获取工时
      * 根据用户id,日期获取工时
+     *
      * @param userId
      * @param userId
      * @param dayLogDate
      * @param dayLogDate
      * @return
      * @return
      */
      */
-    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDate(String userId,LocalDateTime dayLogDate);
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDate(String userId, LocalDateTime dayLogDate);
 
 
     /**
     /**
      * 根据用户Id,项目Id,起止时间获取工时列表
      * 根据用户Id,项目Id,起止时间获取工时列表
+     *
      * @param userId    用户Id
      * @param userId    用户Id
      * @param projectId 项目Id
      * @param projectId 项目Id
      * @param status    状态
      * @param status    状态
      * @param start     开始时间
      * @param start     开始时间
      * @param end       结束时间
      * @param end       结束时间
-     * @return  日工时列表
+     * @return 日工时列表
      */
      */
-    List<ChuanyunSelfWorkHourDO> findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(String userId,String projectId,String projectType,String status,LocalDateTime start,LocalDateTime end);
+    List<ChuanyunSelfWorkHourDO> findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(String userId, String projectId, String projectType, String status, LocalDateTime start, LocalDateTime end);
 
 
     /**
     /**
      * 获取最近一个月日工时
      * 获取最近一个月日工时
+     *
      * @param pageable
      * @param pageable
      * @return
      * @return
      */
      */
-    @Query(value="SELECT * FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",
-            countQuery="SELECT count(1) FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",nativeQuery = true)
+    @Query(value = "SELECT * FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",
+            countQuery = "SELECT count(1) FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n", nativeQuery = true)
     Page<ChuanyunSelfWorkHourDO> getRecentlyDayHour(PageRequest pageable);
     Page<ChuanyunSelfWorkHourDO> getRecentlyDayHour(PageRequest pageable);
 
 
     /**
     /**
      * 获取人员-项目-月度标准总工时
      * 获取人员-项目-月度标准总工时
-     * @param userId    用户ID
-     * @return  汇总数据
+     *
+     * @param userId 用户ID
+     * @return 汇总数据
      */
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.project_id," +
@@ -119,10 +127,11 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
 
 
     /**
     /**
      * 获取最近一个月工时
      * 获取最近一个月工时
+     *
      * @param userId
      * @param userId
      * @return
      * @return
      */
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.project_id," +
@@ -144,12 +153,13 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
 
 
     /**
     /**
      * 获取人员月度标准工时汇总
      * 获取人员月度标准工时汇总
-     * @param userId    用户ID
-     * @param dayLogDate    查询月份日期
-     * @param status        工时状态
-     * @return  汇总数据
+     *
+     * @param userId     用户ID
+     * @param dayLogDate 查询月份日期
+     * @param status     工时状态
+     * @return 汇总数据
      */
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.status," +
             "chuanyun_self_work_hour.status," +
@@ -157,14 +167,51 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.department_id," +
             "chuanyun_self_work_hour.department_id," +
             "chuanyun_self_work_hour.department_name," +
             "chuanyun_self_work_hour.department_name," +
-            "chuanyun_self_work_hour.object_id "+
+            "chuanyun_self_work_hour.object_id " +
             "FROM chuanyun_self_work_hour " +
             "FROM chuanyun_self_work_hour " +
             "WHERE chuanyun_self_work_hour.user_id= ?1 " +
             "WHERE chuanyun_self_work_hour.user_id= ?1 " +
-            "AND  chuanyun_self_work_hour.status= ?3 "+
-            "AND DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')=DATE_FORMAT(?2,'%Y-%m') "+
+            "AND  chuanyun_self_work_hour.status= ?3 " +
+            "AND DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')=DATE_FORMAT(?2,'%Y-%m') " +
             "GROUP BY chuanyun_self_work_hour.user_id," +
             "GROUP BY chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.status," +
             "chuanyun_self_work_hour.status," +
             "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')",
             "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')",
             nativeQuery = true)
             nativeQuery = true)
-    ChuanyunSelfWorkHourDO getMonthHour(@Param("userId") String userId,@Param("dayLogDate") String dayLogDate,@Param("status")String status);
+    ChuanyunSelfWorkHourDO getMonthHour(@Param("userId") String userId, @Param("dayLogDate") String dayLogDate, @Param("status") String status);
+
+
+    /**
+     * 根据userId获取工时数据
+     *
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDateAfter(String userId, LocalDateTime halfYearDate);
+
+
+    /**
+     * 获取人员-项目-月度标准总工时
+     *
+     * @param userId 用户ID
+     * @return 汇总数据
+     */
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+            "chuanyun_self_work_hour.day_log_date," +
+            "chuanyun_self_work_hour.user_id," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.project_type," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.department_name," +
+            "chuanyun_self_work_hour.department_id," +
+            "chuanyun_self_work_hour.object_id " +
+            "FROM chuanyun_self_work_hour " +
+            "WHERE chuanyun_self_work_hour.user_id=? " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) > -180 " +
+            "GROUP BY chuanyun_self_work_hour.user_id," +
+            "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.project_type",
+            nativeQuery = true)
+    List<ChuanyunSelfWorkHourDO> getHalfYearMonthProjectHour(String userId);
 }
 }

+ 35 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java

@@ -20,6 +20,7 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
     /**
     /**
      * 人员-项目-周度工时汇总
      * 人员-项目-周度工时汇总
      * 作废
      * 作废
+     *
      * @return
      * @return
      */
      */
     @Query(value = "SELECT chuanyun_self_work_hour.object_id," +
     @Query(value = "SELECT chuanyun_self_work_hour.object_id," +
@@ -147,9 +148,43 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
 
 
     /**
     /**
      * 根据用户ID查询周工时
      * 根据用户ID查询周工时
+     *
      * @param userId
      * @param userId
      * @return
      * @return
      */
      */
     List<ChuanyunWeekMemberHourDO> findByUserId(String userId);
     List<ChuanyunWeekMemberHourDO> findByUserId(String userId);
 
 
+    /**
+     * 根据用户Id获取周工时列表
+     *
+     * @param userId 用户ID
+     * @return 周工时列表
+     */
+    @Query(value = "SELECT chuanyun_self_work_hour.object_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4)as year, " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2) AS week, " +
+            "project_id,user_id, " +
+            "SUM(standard_work_hour)AS standard_work_hour, " +
+            "project_type, " +
+            "`status` " +
+            "FROM chuanyun_self_work_hour  " +
+            "WHERE project_id !='' and user_id=?1 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) > -180 " +
+            "GROUP BY chuanyun_self_work_hour.project_id, " +
+            "chuanyun_self_work_hour.project_type, " +
+            "chuanyun_self_work_hour.user_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4), " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2), " +
+            "chuanyun_self_work_hour.`status`", nativeQuery = true)
+    List<ChuanyunWeekMemberHourDO> getHalfYearWeekMemberHourByUserId(@Param("userId") String userId);
+
+    /**
+     * 根据用户ID查询周工时
+     *
+     * @param userId
+     * @return
+     */
+    List<ChuanyunWeekMemberHourDO> findByUserIdAndYearAfterAndWeekAfter(String userId, int year, int week);
+
 }
 }

+ 26 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunWorkHourDao.java

@@ -143,4 +143,30 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
             "\tchuanyun_day_log.day_log_date",nativeQuery = true)
             "\tchuanyun_day_log.day_log_date",nativeQuery = true)
     ChuanyunWorkHourDO getQuitDayWorkHour(@Param("userId")String userId,@Param("dayLogDate")LocalDateTime dayLogDate);
     ChuanyunWorkHourDO getQuitDayWorkHour(@Param("userId")String userId,@Param("dayLogDate")LocalDateTime dayLogDate);
 
 
+    /**
+     * 获取半年内工时列表
+     *
+     * @param userId
+     * @return
+     */
+    @Query(value = "SELECT chuanyun_day_log.object_id," +
+            "SUM(chuanyun_day_log.hours_worked) AS hours_worked," +
+            "chuanyun_day_log.project_id," +
+            "chuanyun_day_log.project_type," +
+            "chuanyun_log.user_id," +
+            "chuanyun_log.department_name," +
+            "chuanyun_log.status," +
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.day_log_date " +
+            "FROM chuanyun_day_log "+
+            "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
+            " WHERE chuanyun_log.user_id = ? " +
+            "and DATEDIFF(chuanyun_day_log.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_day_log.day_log_date,NOW()) > -180 " +
+            "GROUP BY chuanyun_day_log.project_id," +
+            "chuanyun_log.user_id," +
+            "chuanyun_day_log.project_type," +
+            "chuanyun_log.status," +
+            "chuanyun_day_log.day_log_date",nativeQuery = true)
+    List<ChuanyunWorkHourDO> getHalfYearSelfWorkHour(String userId);
 }
 }

+ 1 - 0
src/main/java/com/galaxis/manatee/service/ChuanyunService.java

@@ -49,4 +49,5 @@ public interface ChuanyunService {
 
 
     void importProduct(List<ChuanyunProductDO> list);
     void importProduct(List<ChuanyunProductDO> list);
 
 
+    void manualUpdateProjectMember();
 }
 }

+ 0 - 5
src/main/java/com/galaxis/manatee/service/DataArcherService.java

@@ -34,7 +34,6 @@ public class DataArcherService {
     /**
     /**
      * 异步更新每日工时
      * 异步更新每日工时
      */
      */
-    @Async
     public void updateSelfWorkHour(ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO) {
     public void updateSelfWorkHour(ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO) {
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
         try {
@@ -75,7 +74,6 @@ public class DataArcherService {
      *
      *
      * @param chuanyunWeekMemberHourDTO 每周工时数据对象
      * @param chuanyunWeekMemberHourDTO 每周工时数据对象
      */
      */
-    @Async
     public void updateWeekMemberHour(ChuanyunWeekMemberHourDTO chuanyunWeekMemberHourDTO) {
     public void updateWeekMemberHour(ChuanyunWeekMemberHourDTO chuanyunWeekMemberHourDTO) {
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
         try {
@@ -113,7 +111,6 @@ public class DataArcherService {
      *
      *
      * @param chuanyunSelfCostDTO 每周工时数据对象
      * @param chuanyunSelfCostDTO 每周工时数据对象
      */
      */
-    @Async
     public void updateChuanyunSelfCost(ChuanyunSelfCostDTO chuanyunSelfCostDTO) {
     public void updateChuanyunSelfCost(ChuanyunSelfCostDTO chuanyunSelfCostDTO) {
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
         try {
@@ -149,7 +146,6 @@ public class DataArcherService {
      * 删除审核中的每月工时
      * 删除审核中的每月工时
      * @param chuanyunSelfCostDO    氚云每月工时
      * @param chuanyunSelfCostDO    氚云每月工时
      */
      */
-    @Async
     public void deleteSelfCostInProcess(ChuanyunSelfCostDO chuanyunSelfCostDO) {
     public void deleteSelfCostInProcess(ChuanyunSelfCostDO chuanyunSelfCostDO) {
         ObjectMapper objectMapper=new ObjectMapper();
         ObjectMapper objectMapper=new ObjectMapper();
         //删除氚云中的在审核工时
         //删除氚云中的在审核工时
@@ -182,7 +178,6 @@ public class DataArcherService {
     /**
     /**
      * 删除状态为审核中数据
      * 删除状态为审核中数据
      */
      */
-    @Async
     public void deleteExamineStatus(String schemaCode, String statusCode, String projectCode, String projectId, String userCode, String userId, String yearCode, String year, String monthCode, String month, String weekCode, String week, String typeCode, String projectType) {
     public void deleteExamineStatus(String schemaCode, String statusCode, String projectCode, String projectId, String userCode, String userId, String yearCode, String year, String monthCode, String month, String weekCode, String week, String typeCode, String projectType) {
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
         try {

+ 71 - 0
src/main/java/com/galaxis/manatee/service/LogCheckService.java

@@ -1,5 +1,6 @@
 package com.galaxis.manatee.service;
 package com.galaxis.manatee.service;
 
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.manatee.constant.ChuanYunConstant;
 import com.galaxis.manatee.constant.ChuanYunConstant;
@@ -8,13 +9,17 @@ import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
 import com.galaxis.manatee.dao.ChuanyunWeekMemberHourDao;
 import com.galaxis.manatee.dao.ChuanyunWeekMemberHourDao;
 import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
 import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
 import com.galaxis.manatee.entity.chuanyun.data.object.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.*;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunFindAllBizDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
+import java.time.DayOfWeek;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
@@ -221,4 +226,70 @@ public class LogCheckService {
         }
         }
     }
     }
 
 
+    @Async
+    public void checkHalfYearDayWorkHour(List<String> allUserIdList) {
+        allUserIdList.parallelStream().forEach(userId -> {
+            // 获取半年期的工时
+            List<ChuanyunWorkHourDO> halfYearSelfWorkHour = chuanyunWorkHourDao.getHalfYearSelfWorkHour(userId);
+            LocalDateTime localDateTime = LocalDateTime.now().minusDays(180);
+            List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList = chuanyunSelfWorkHourDao.findByUserIdAndDayLogDateAfter(userId, localDateTime);
+            compareDayWorkHour(halfYearSelfWorkHour, chuanyunSelfWorkHourList);
+        });
+
+    }
+
+    @Async
+    public void checkHalfYearWeekWorkHour(List<String> allUserIdList) {
+        allUserIdList.parallelStream().forEach(userId -> {
+            log.info("开始核对用户: {} 标准化周工时", userId);
+            // 根据日工时聚合得到周工时
+            List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getHalfYearWeekMemberHourByUserId(userId);
+            // 数据库已存在的周工时
+            LocalDateTime localDateTime = LocalDateTime.now().minusDays(180);
+            int year = localDateTime.getYear();
+            int week = localDateTime.getDayOfWeek().getValue();
+            List<ChuanyunWeekMemberHourDO> oldList = chuanyunWeekMemberHourDao.findByUserIdAndYearAfterAndWeekAfter(userId, year, week);
+            Map<String, Integer> map = new HashMap<>(list.size() + oldList.size());
+
+            if (list.size() != oldList.size()) {
+                for (ChuanyunWeekMemberHourDO chuanyunWeekMemberHourDO : list) {
+                    String key = chuanyunWeekMemberHourDO.getUserId() + chuanyunWeekMemberHourDO.getProjectId() + chuanyunWeekMemberHourDO.getProjectType() + chuanyunWeekMemberHourDO.getYear() + chuanyunWeekMemberHourDO.getWeek();
+                    map.put(key, 1);
+                }
+                for (ChuanyunWeekMemberHourDO chuanyunWeekMemberHourDO : oldList) {
+                    String key = chuanyunWeekMemberHourDO.getUserId() + chuanyunWeekMemberHourDO.getProjectId() + chuanyunWeekMemberHourDO.getProjectType() + chuanyunWeekMemberHourDO.getYear() + chuanyunWeekMemberHourDO.getWeek();
+                    Integer count = map.get(key);
+                    if (count == null) {
+                        chuanyunWeekMemberHourDao.delete(chuanyunWeekMemberHourDO);
+                        List<String> matchers = new ArrayList<>();
+                        matchers.add("F0000001_2," + chuanyunWeekMemberHourDO.getProjectId());
+                        matchers.add("F0000002_2," + chuanyunWeekMemberHourDO.getUserId());
+                        matchers.add("F0000006_2," + chuanyunWeekMemberHourDO.getWeek());
+                        matchers.add("F0000008_2," + chuanyunWeekMemberHourDO.getYear());
+
+                        var filter = Filter.instance(0, 1, true, "And", matchers);
+                        ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = null;
+                        try {
+                            chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, filter);
+                        } catch (JsonProcessingException e) {
+                            e.printStackTrace();
+                        }
+                        ChuanyunSaveDTO chuanyunSaveDTO;
+                        if (chuanyunFindAllResponse.getReturnData() != null) {
+                            List<ChuanyunProjectMemberWeekHourDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
+                            });
+                            chuanyunSaveDTO = chuanYunManager.delete(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, result.get(0).getObjectId());
+                        }
+                        log.info(chuanyunWeekMemberHourDO.getUserId() + "删除项目" + chuanyunWeekMemberHourDO.getProjectId() + "时间为" + chuanyunWeekMemberHourDO.getYear() + "年" + chuanyunWeekMemberHourDO.getWeek() + "周工时");
+                    }
+                }
+            }
+        });
+    }
+
+    @Async
+    public void checkHalfYearMonthWorkHour(List<String> allUserIdList) {
+        allUserIdList.parallelStream().forEach(userId -> {
+        });
+    }
 }
 }

+ 5 - 1
src/main/java/com/galaxis/manatee/service/LogDownloadService.java

@@ -61,9 +61,13 @@ public class LogDownloadService {
         List<String> matchersString=new ArrayList<>();
         List<String> matchersString=new ArrayList<>();
         //由于需要统计流程中的日志,在日志数据同步时将状态为2的数据一并统计
         //由于需要统计流程中的日志,在日志数据同步时将状态为2的数据一并统计
         matchersString.add("Status_6,[1;2;3]");
         matchersString.add("Status_6,[1;2;3]");
+        // 默认获取半年的日志
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        // 按要求同步两个月的记录
+        LocalDateTime localDateTime = LocalDateTime.now().minusDays(60);
+        matchersString.add("logDate_1," + df.format(localDateTime));
         if(isRecent){
         if(isRecent){
             //获取当前时间30天前日期
             //获取当前时间30天前日期
-            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
             LocalDateTime now = LocalDateTime.now();
             LocalDateTime now = LocalDateTime.now();
             now = now.minus(30, ChronoUnit.DAYS);
             now = now.minus(30, ChronoUnit.DAYS);
             matchersString.add("logDate_1,"+df.format(now));
             matchersString.add("logDate_1,"+df.format(now));

+ 9 - 0
src/main/java/com/galaxis/manatee/service/LogService.java

@@ -53,6 +53,15 @@ public class LogService {
     }
     }
 
 
     /**
     /**
+     * 更新半年内日工时
+     */
+    public void updateHalfYearChuanyunSelfWorkHour() {
+        long startTime = Instant.now().getEpochSecond();
+        chuanyunUserCompanyDao.findAll().parallelStream().forEach(chuanyunUserCompanyDO -> logUpdateService.pullHalfYearDayWorkHour(chuanyunUserCompanyDO.getUserId()));
+        log.info("更新所有每日工时花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
+    }
+
+    /**
      * 更新所有周工时
      * 更新所有周工时
      */
      */
     public void updateAllChuanyunWeekMemberHour() {
     public void updateAllChuanyunWeekMemberHour() {

+ 46 - 1
src/main/java/com/galaxis/manatee/service/LogStandardService.java

@@ -83,7 +83,7 @@ public class LogStandardService {
      */
      */
     @Async
     @Async
     public void standardSelfWorkHourByUserId(String userId) {
     public void standardSelfWorkHourByUserId(String userId) {
-        if (!userId.isBlank()) {
+        if (!Objects.isNull(userId) && userId.isBlank()) {
             //从日志原始数据中获取每人每个项目每天工时。
             //从日志原始数据中获取每人每个项目每天工时。
             List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(userId);
             List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(userId);
             this.generateSelfWorkHourByWorkHourList(selfList);
             this.generateSelfWorkHourByWorkHourList(selfList);
@@ -319,4 +319,49 @@ public class LogStandardService {
         chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
         chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
         return chuanyunSelfCostDO;
         return chuanyunSelfCostDO;
     }
     }
+
+    /**
+     * 标准化半年内每日工时
+     */
+    @Async
+    public void standardHalfYearWorkHour() {
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.standardHalfYearDayWorkHour(chuanyunUserCompanyDO.getUserId()));
+    }
+
+    /**
+     * 标准化半年内日志
+     *
+     * @param userId 用户id
+     */
+    private void standardHalfYearDayWorkHour(String userId) {
+        //逐一将原始工时数据标准化后,更新到标准化工时表和氚云中
+        log.info("标准化用户日工时 userId: {}", userId);
+        List<ChuanyunWorkHourDO> halfYearSelfWorkHour = chuanyunWorkHourDao.getHalfYearSelfWorkHour(userId);
+        halfYearSelfWorkHour.parallelStream().forEach(self -> {
+            try {
+                //新建标准化工时对象,并将原始数据更新到此对象中,并计算标准化之后的工时
+                ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = this.fromChuanyunWorkHourDO(self);
+                //查询系统中是否有重复的标准化工时数据,如果有重复的人、天、项目数据,将原数据删除后更新为最新的数据
+                try {
+                    List<ChuanyunSelfWorkHourDO> list;
+                    if (self.getStatus().equals("3")) {
+                        list = chuanyunSelfWorkHourDao.findByUserIdAndProjectIdAndDayLogDateAndProjectTypeAndStatus(chuanyunSelfWorkHourDO.getUserId(), ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType()) ? ChuanYunConstant.PRODUCTION_PROJECT_ID : self.getProjectId(), self.getDayLogDate(), self.getProjectType(), self.getStatus());
+                    } else {
+                        list = chuanyunSelfWorkHourDao.findByUserIdAndProjectIdAndDayLogDateAndProjectType(chuanyunSelfWorkHourDO.getUserId(), ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType()) ? ChuanYunConstant.PRODUCTION_PROJECT_ID : self.getProjectId(), self.getDayLogDate(), self.getProjectType());
+                    }
+                    if (list != null && list.size() > 0) {
+                        chuanyunSelfWorkHourDao.deleteAll(list);
+                    }
+                    chuanyunSelfWorkHourDao.saveAndFlush(chuanyunSelfWorkHourDO);
+                } catch (Exception e) {
+                    log.error(e.getMessage());
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                log.error("" + self);
+                e.printStackTrace();
+            }
+        });
+    }
+
 }
 }

+ 12 - 0
src/main/java/com/galaxis/manatee/service/LogUpdateService.java

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
 import java.time.Instant;
 import java.time.Instant;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -74,6 +75,16 @@ public class LogUpdateService {
     }
     }
 
 
     /**
     /**
+     * 更新至氚云半内内的数据
+     */
+    public void pullHalfYearDayWorkHour(String userId) {
+        log.info("更新用户 userId: {} 日工时日志至氚云", userId);
+        LocalDateTime halfYearDateTime = LocalDateTime.now().minusDays(180);
+        List<ChuanyunSelfWorkHourDO> halfYearUpdateList = chuanyunSelfWorkHourDao.findByUserIdAndDayLogDateAfter(userId, halfYearDateTime);
+        this.updateChuanyunSelfWorkHourList(halfYearUpdateList);
+    }
+
+    /**
      * 根据用户Id更新氚云每周工时列表
      * 根据用户Id更新氚云每周工时列表
      *
      *
      * @param userId 用户ID
      * @param userId 用户ID
@@ -104,6 +115,7 @@ public class LogUpdateService {
                 //
                 //
                 ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
                 ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
                 BeanUtils.copyProperties(chuanyunSelfWorkHourDO, chuanyunSelfWorkHourDTO);
                 BeanUtils.copyProperties(chuanyunSelfWorkHourDO, chuanyunSelfWorkHourDTO);
+                // fixme 用户表中userId存在两条记录
                 ChuanyunUserCompanyDO chuanyunUserCompanyDO = chuanyunUserCompanyDao.findByUserId(chuanyunSelfWorkHourDO.getUserId());
                 ChuanyunUserCompanyDO chuanyunUserCompanyDO = chuanyunUserCompanyDao.findByUserId(chuanyunSelfWorkHourDO.getUserId());
                 if (chuanyunUserCompanyDO != null) {
                 if (chuanyunUserCompanyDO != null) {
                     chuanyunSelfWorkHourDTO.setUserName(chuanyunUserCompanyDO.getUserName());
                     chuanyunSelfWorkHourDTO.setUserName(chuanyunUserCompanyDO.getUserName());

+ 57 - 0
src/main/java/com/galaxis/manatee/service/impl/ChuanyunServiceImpl.java

@@ -481,5 +481,62 @@ public class ChuanyunServiceImpl implements ChuanyunService {
         }
         }
     }
     }
 
 
+    @Override
+    public void manualUpdateProjectMember() {
+        var objectMapper=new ObjectMapper();
+        var start=0;
+        var flag=true;
+        while (flag){
+            try {
+                //从氚云查询数据
+                var filter= Filter.instance(start,start+pageSize,true);
+                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE,filter);
+                if(chuanyunFindAllResponse.getReturnData()==null){
+                    flag=false;
+                    continue;
+                }
+                if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
+                    start+=pageSize;
+                }else{
+                    flag=false;
+                }
+                //转化为POJO
+                List<ChuanyunGroupProjectDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                //保存
+                result.forEach(chuanyunGroupProjectDO ->  {
+
+                    //处理项目对象中的项目成员数据(改为手动调用处理)
+                    projectMemberCheck(chuanyunGroupProjectDO);
+                    //只处理项目成员为空的情况
+                    boolean emptyFlag= chuanyunGroupProjectDO.getProjectMemberList()==null||chuanyunGroupProjectDO.getProjectMemberList().length==0;
+                    if(emptyFlag){
+                        //增加项目成员
+                        addMemberList(chuanyunGroupProjectDO);
+                        GroupProjectUpdateDTO groupProjectUpdateDTO= new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
+                        //生成更新数据后校验数据是否增加成功
+                        if(groupProjectUpdateDTO.getProjectMemberList()!=null&&groupProjectUpdateDTO.getProjectMemberList().length!=0){
+                            try {
+                                var groupProjectUpdateString=objectMapper.writeValueAsString(groupProjectUpdateDTO);
+                                ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
+                                if(chuanyunSaveDTO.getSuccessful()){
+                                    log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员成功");
+
+                                }else{
+                                    log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员失败");
+                                    log.warn(chuanyunGroupProjectDO+"");
+                                }
+                            } catch (BigSizeException | JsonProcessingException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                });
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+            }
+        }
+    }
+
 
 
 }
 }

File diff suppressed because it is too large
+ 502 - 480
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java


+ 9 - 0
src/main/java/com/galaxis/manatee/task/LogCheckTask.java

@@ -1,11 +1,15 @@
 package com.galaxis.manatee.task;
 package com.galaxis.manatee.task;
 
 
 import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
 import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
 import com.galaxis.manatee.service.LogCheckService;
 import com.galaxis.manatee.service.LogCheckService;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
 /**
  * @author zcj
  * @author zcj
  * @version 0.1
  * @version 0.1
@@ -45,5 +49,10 @@ public class LogCheckTask {
             }
             }
             log.info("修改"+chuanyunUserCompanyDO.getUserName()+"工时信息耗时"+(System.currentTimeMillis()-start));
             log.info("修改"+chuanyunUserCompanyDO.getUserName()+"工时信息耗时"+(System.currentTimeMillis()-start));
         });
         });
+
+//        List<String> allUserIdList = chuanyunUserCompanyDao.findAll().stream().map(ChuanyunUserCompanyDO::getUserId).collect(Collectors.toList());
+//        logCheckService.checkHalfYearDayWorkHour(allUserIdList);
+//        logCheckService.checkHalfYearWeekWorkHour(allUserIdList);
+//        logCheckService.checkHalfYearMonthWorkHour(allUserIdList);
     }
     }
 }
 }

+ 3 - 3
src/main/java/com/galaxis/manatee/task/SubWorkHourStatistics.java

@@ -57,7 +57,7 @@ public class SubWorkHourStatistics {
      */
      */
     private void standardWorkHour(){
     private void standardWorkHour(){
         log.info("开始子项目每日工时标准化");
         log.info("开始子项目每日工时标准化");
-        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> {
+        chuanyunUserCompanyDao.findAll().parallelStream().forEach(chuanyunUserCompanyDO -> {
             List<ChuanyunSubWorkHourDO> list = chuanyunSubProjectDao.getSubSelfWorkHour(chuanyunUserCompanyDO.getUserId());
             List<ChuanyunSubWorkHourDO> list = chuanyunSubProjectDao.getSubSelfWorkHour(chuanyunUserCompanyDO.getUserId());
             if (list!=null&&list.size()>0){
             if (list!=null&&list.size()>0){
                 list.forEach(chuanyunSubWorkHourDO -> {
                 list.forEach(chuanyunSubWorkHourDO -> {
@@ -104,7 +104,7 @@ public class SubWorkHourStatistics {
      * 氚云日工时更新
      * 氚云日工时更新
      */
      */
     public void updateAllChuanyunSelfSubWorkHour() {
     public void updateAllChuanyunSelfSubWorkHour() {
-        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> {
+        chuanyunUserCompanyDao.findAll().parallelStream().forEach(chuanyunUserCompanyDO -> {
             List<ChuanyunSelfSubWorkHourDO> list = chuanyunSelfSubWorkHourDao.findByUserId(chuanyunUserCompanyDO.getUserId());
             List<ChuanyunSelfSubWorkHourDO> list = chuanyunSelfSubWorkHourDao.findByUserId(chuanyunUserCompanyDO.getUserId());
             if (list!=null&&list.size()>0){
             if (list!=null&&list.size()>0){
                 list.forEach(chuanyunSelfSubWorkHourDO -> {
                 list.forEach(chuanyunSelfSubWorkHourDO -> {
@@ -150,7 +150,7 @@ public class SubWorkHourStatistics {
      */
      */
     @Scheduled(fixedDelay = 3600000L)
     @Scheduled(fixedDelay = 3600000L)
     private void standardWeeklyWorkHour(){
     private void standardWeeklyWorkHour(){
-        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> {
+        chuanyunUserCompanyDao.findAll().parallelStream().forEach(chuanyunUserCompanyDO -> {
             List<ChuanyunSubWeekHourDO> list = chuanyunSubWeekHourDao.getSubWeekHourByUserId("7292b8cb-a5da-4c3d-952e-d1ba41b57cff");
             List<ChuanyunSubWeekHourDO> list = chuanyunSubWeekHourDao.getSubWeekHourByUserId("7292b8cb-a5da-4c3d-952e-d1ba41b57cff");
             if (list!=null&&list.size()>0){
             if (list!=null&&list.size()>0){
                 list.forEach(chuanyunSubWeekHourDO -> {
                 list.forEach(chuanyunSubWeekHourDO -> {

+ 14 - 6
src/main/java/com/galaxis/manatee/task/WorkHourStatistics.java

@@ -39,16 +39,24 @@ public class WorkHourStatistics {
     }
     }
 
 
     /**
     /**
-     * 每2天执行一次所有工时数据的标准化、上传操作。
+     * 每天19点执行一次所有工时数据的标准化、上传操作。
      */
      */
     @Scheduled(cron = "0 0 19 * * ?")
     @Scheduled(cron = "0 0 19 * * ?")
-    public void updateHour(){
+    public void standardDayWorkHour(){
         //每日工时标准化
         //每日工时标准化
         log.info("开始每日工时标准化");
         log.info("开始每日工时标准化");
-        standardWorkHour();
-        logService.updateAllChuanyunSelfWorkHour();
-//        standardWeeklyWorkHour();
-//        standardMonthlyWorkHour();
+//        standardWorkHour();
+        logStandardService.standardHalfYearWorkHour();
+    }
+
+    /**
+     * 每天6点执行一次所有工时数据的标准化、上传操作。
+     */
+    @Scheduled(cron = "0 0 6 * * ?")
+    public void pullDayWorkHour(){
+        //每日工时标准化
+        log.info("开始每日工时上传");
+        logService.updateHalfYearChuanyunSelfWorkHour();
     }
     }
 
 
     /**
     /**

+ 6 - 6
src/main/resources/application.yml

@@ -35,12 +35,12 @@ dingTalk:
     projectChange: PROC-FF6YHERSO2-94WBIS9JPMM63IJAGA5T1-AWUCG3QI-15
     projectChange: PROC-FF6YHERSO2-94WBIS9JPMM63IJAGA5T1-AWUCG3QI-15
 
 
 #阿里云
 #阿里云
-aliyun:
-  access:
-    key:
-      id: ${ACCESS_KEY_ID}
-      secret: ${ACCESS_KEY_SECRET}
-    mobile: ${ALIYUN_MOBILE}
+#aliyun:
+#  access:
+#    key:
+#      id: ${ACCESS_KEY_ID}
+#      secret: ${ACCESS_KEY_SECRET}
+#    mobile: ${ALIYUN_MOBILE}
 #spring data jpa database
 #spring data jpa database
 spring:
 spring:
   task:
   task: