Ver código fonte

Merge remote-tracking branch 'origin/1.0' into 1.0

WoNiu 4 anos atrás
pai
commit
904c356784

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

@@ -1,8 +1,8 @@
 package com.galaxis.manatee.controller;
 
 import com.galaxis.manatee.service.LogCheckService;
+import com.galaxis.manatee.service.LogStandardService;
 import com.galaxis.manatee.service.LogUpdateService;
-import com.galaxis.manatee.task.WorkHourStatistics;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -17,12 +17,12 @@ import org.springframework.web.bind.annotation.*;
 public class TestController {
 
     private final LogUpdateService logUpdateService;
-    private final WorkHourStatistics workHourStatistics;
+    private final LogStandardService logStandardService;
     private final LogCheckService logCheckService;
 
-    public TestController(LogUpdateService logUpdateService, WorkHourStatistics workHourStatistics, LogCheckService logCheckService) {
+    public TestController(LogUpdateService logUpdateService, LogStandardService logStandardService, LogCheckService logCheckService) {
         this.logUpdateService = logUpdateService;
-        this.workHourStatistics = workHourStatistics;
+        this.logStandardService = logStandardService;
         this.logCheckService = logCheckService;
     }
 
@@ -43,19 +43,29 @@ public class TestController {
     }
 
     /**
-     * 标准化所有工时
+     * 标准化所有工时
      */
-    @GetMapping("/test/api/standardAllWorkHour")
-    public void standardAllWorkHour() {
-        workHourStatistics.updateHour();
+    @GetMapping("/test/api/standardAllWeekMemberHour")
+    public void standardAllWeekMemberHour(){
+        logStandardService.standardAllWeekMemberHour();
     }
 
+    /**
+     * 根据用户Id标准化日工时
+     * @param userId    用户Id
+     */
+    @GetMapping("/test/api/standardSelfWorkHourByUserId")
     public void standardSelfWorkHourByUserId(@RequestParam("userId") String userId) {
-
+        logStandardService.standardSelfWorkHourByUserId(userId);
     }
 
+    /**
+     * 根据用户Id标准化周工时
+     * @param userId    用户Id
+     */
+    @GetMapping("/test/api/standardWeekMemberHourByUserId")
     public void standardWeekMemberHourByUserId(@RequestParam("userId") String userId) {
-
+        logStandardService.standardWeekMemberHourByUserId(userId);
     }
 
     public void standardSelfCostByUserId(@RequestParam("userId") String userId) {

+ 0 - 1
src/main/java/com/galaxis/manatee/controller/WorkHourController.java

@@ -38,7 +38,6 @@ public class WorkHourController {
 
     /**
      * 更新全部工时信息
-     * @return  固定字符串
      */
     @GetMapping("/test/workHour/updateWorkHour")
     public void updateWorkHour(){

+ 2 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java

@@ -28,7 +28,7 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
 
     /**
      * 人员-项目-周度工时汇总
-     *
+     * 作废
      * @return
      */
     @Query(value = "SELECT chuanyun_self_work_hour.object_id," +
@@ -46,6 +46,7 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
             "DATE_FORMAT(day_log_date,'%Y')," +
             "WEEKOFYEAR(chuanyun_self_work_hour.day_log_date)," +
             "chuanyun_self_work_hour.`status`", nativeQuery = true)
+    @Deprecated
     List<ChuanyunWeekMemberHourDO> getWeekMemberHour();
 
     /**

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

@@ -32,7 +32,6 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
             "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 status!='3' " +
             " GROUP BY chuanyun_day_log.project_id," +
             "chuanyun_log.user_id," +
             "chuanyun_day_log.project_type," +

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

@@ -2,6 +2,7 @@ package com.galaxis.manatee.service;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCommonDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberHourDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberMonthCostDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectMemberWeekHourDO;
@@ -10,6 +11,7 @@ import com.galaxis.manatee.manager.ChuanYunManager;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -140,4 +142,47 @@ public class DataArcherService {
         }
     }
 
+
+
+    /**
+     * 删除状态为审核中数据
+     */
+    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();
+        try {
+            List<String> matchers = new ArrayList<>();
+            matchers.add(statusCode+"_2,"+"2");
+            matchers.add(projectCode+"_2,"+projectId);
+            if (!StringUtils.isEmpty(userId)){
+                matchers.add(userCode+"_2,"+userId);
+            }
+            if (!StringUtils.isEmpty(year)){
+                matchers.add(yearCode+"_2,"+year);
+            }
+            if (!StringUtils.isEmpty(month)){
+                matchers.add(monthCode+"_2,"+month);
+            }
+            if (!StringUtils.isEmpty(week)){
+                matchers.add(weekCode+"_2,"+week);
+            }
+            if (!StringUtils.isEmpty(projectType)){
+                matchers.add(typeCode+"_2,"+projectType);
+            }
+            var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
+            var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
+            if (chuanyunFindAllResponse.getReturnData()!=null){
+                List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                result.forEach(basicDO -> {
+                    ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
+                    if(!chuanyunSaveDTO.getSuccessful()){
+                        log.warn("删除状态为审核中数据失败");
+                    }
+                });
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
 }

+ 2 - 1
src/main/java/com/galaxis/manatee/service/DingTalkAuthorization.java

@@ -6,6 +6,7 @@ import com.galaxis.manatee.constant.DingTalkConstant;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
@@ -29,7 +30,7 @@ public class DingTalkAuthorization {
      * 自动获取钉钉授权
      * @throws URISyntaxException   URI异常
      */
-//    @Scheduled(fixedDelay = 7000000L)
+    @Scheduled(fixedDelay = 7000000L)
     private void getToken() throws URISyntaxException {
         var restTemplate=new RestTemplate();
         var uri=new URI(getTokenUri+"?appkey="+ DingTalkConstant.DING_TALK_APP_KEY +"&appsecret="+DingTalkConstant.DING_TALK_APP_SECRET);

+ 5 - 4
src/main/java/com/galaxis/manatee/service/DingTalkScheduledTask.java

@@ -16,6 +16,7 @@ import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectChangeDO;
 import com.galaxis.manatee.entity.ding.DingTalkProcessInstance;
 import com.taobao.api.ApiException;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -73,7 +74,7 @@ public class DingTalkScheduledTask {
      * 每个小时定期更新出差申请数据
      * 出差申请信息暂时不进行更新
      */
-//    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
     void updateBusinessTripProcessInstanceIdList() throws ApiException {
         updateProcessInstanceIdList(DingTalkConstant.PROCESS_CODE_BUSINESS_TRIP);
     }
@@ -84,7 +85,7 @@ public class DingTalkScheduledTask {
      * 每小时根据出差申请Id跟新出差申请信息。
      * 出差申请信息暂时不进行更新
      */
-//    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
     void updateProcessInstanceList() throws ApiException {
          updateChuanyunAskForLeave(DingTalkConstant.PROCESS_CODE_ASKFORLEAVE);
     }
@@ -93,7 +94,7 @@ public class DingTalkScheduledTask {
      * 业务招待申请更新
      * @throws ApiException
      */
-//    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
     void updateChuanyunBusinessEntertainmentProcessInstanceList() throws ApiException {
         updateChuanyunBusinessEntertainment(DingTalkConstant.PROCESS_CODE_BUSINESSENTERTAINMENT);
     }
@@ -101,7 +102,7 @@ public class DingTalkScheduledTask {
     /**
      * 每个小时定期更新项目实施变更申请数据
      */
-//    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
     void updateProjectChangeProcessInstanceIdList() throws ApiException {
         updateChuanyunProjectChangeProcessInstanceIdList(DingTalkConstant.PROCESS_CODE_PROJECT_CHANGE);
     }

+ 63 - 7
src/main/java/com/galaxis/manatee/service/LogStandardService.java

@@ -1,9 +1,7 @@
 package com.galaxis.manatee.service;
 
 import com.galaxis.manatee.constant.ChuanYunConstant;
-import com.galaxis.manatee.dao.ChuanyunGroupProjectDao;
-import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
-import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
+import com.galaxis.manatee.dao.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
@@ -12,6 +10,7 @@ import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.Instant;
 import java.util.List;
 
 /**
@@ -27,11 +26,17 @@ public class LogStandardService {
     private final ChuanyunWorkHourDao chuanyunWorkHourDao;
     private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
     private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
+    private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
+    private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
+    private final DataArcherService dataArcherService;
 
-    public LogStandardService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao) {
+    public LogStandardService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, DataArcherService dataArcherService) {
         this.chuanyunWorkHourDao = chuanyunWorkHourDao;
         this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
+        this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
+        this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
+        this.dataArcherService = dataArcherService;
     }
 
     /**
@@ -40,23 +45,36 @@ public class LogStandardService {
      * @param isRecent              是否只标准化最近一个月的数据
      * @param chuanyunUserCompanyDO 员工信息
      */
+    @Async
     public void standardHourByUserCompanyAndIsRecent(ChuanyunUserCompanyDO chuanyunUserCompanyDO, boolean isRecent) {
         if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getUserId())) {
+            long start = Instant.now().getEpochSecond();
             //从日志原始数据中获取每人每个项目每天工时。
             //由isRecent判断是否只获取最近30天的数据
             List<ChuanyunWorkHourDO> selfList = isRecent ? chuanyunWorkHourDao.getSelfWorkHourRecently(chuanyunUserCompanyDO.getUserId()) : chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
             this.generateSelfWorkHourByWorkHourList(selfList);
+            log.info("每日工时标准化" + chuanyunUserCompanyDO.getUserName() + (Instant.now().getEpochSecond() - start) + "秒");
         }else {
             log.warn("用户信息中userId缺失");
         }
     }
 
     /**
+     * 标准化所有周工时信息
+     */
+    @Async
+    public void standardAllWeekMemberHour(){
+        long start=Instant.now().getEpochSecond();
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.standardWeekMemberHourByUserId(chuanyunUserCompanyDO.getUserId()));
+        log.info("标准化所有日工时耗时"+(Instant.now().getEpochSecond()-start)+"秒");
+    }
+
+    /**
      * 根据用户Id标准化某个人的日工时
      * @param userId    用户Id
      */
     @Async
-    public void standardHourByUserId(String userId){
+    public void standardSelfWorkHourByUserId(String userId){
         if (!StringUtils.isEmpty(userId)) {
             //从日志原始数据中获取每人每个项目每天工时。
             //由isRecent判断是否只获取最近30天的数据
@@ -68,6 +86,23 @@ public class LogStandardService {
     }
 
     /**
+     * 根据用户Id标准化某个人的工时
+     * @param userId    用户Id
+     */
+    @Async
+    public void standardWeekMemberHourByUserId(String userId){
+        if (!StringUtils.isEmpty(userId)) {
+            long start=Instant.now().getEpochSecond();
+            //更新数据库
+            List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourByUserId(userId);
+            this.generateWeekMemberHourByWeekMemberHourList(list);
+            log.info(userId+"统一周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
+        }else {
+            log.warn("用户信息中userId缺失");
+        }
+    }
+
+    /**
      * 根据日工时列表生成
      * @param updateList    待更新列表
      */
@@ -97,10 +132,31 @@ public class LogStandardService {
 
     /**
      * 根据周工时列表
-     * @param updateList
+     * @param updateList    待更新的周工时列表
      */
     private void generateWeekMemberHourByWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
-
+        long start= Instant.now().getEpochSecond();
+        updateList.forEach(chuanyunWeekMemberHourDO -> {
+            try{
+                if (chuanyunWeekMemberHourDO!=null){
+                    ChuanyunWeekMemberHourDO weekMemberHourDO = ChuanyunWeekMemberHourDO.fromChuanyunWeekMemberHourDO(chuanyunWeekMemberHourDO);
+                    ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType(),chuanyunWeekMemberHourDO.getYear());
+                    if (oldWeekHour != null) {
+                        chuanyunWeekMemberHourDao.delete(oldWeekHour);
+                    }
+                    chuanyunWeekMemberHourDao.save(weekMemberHourDO);
+                    //搜索是否还有处于审批中的数据
+                    ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getProjectType());
+                    if (processWeekHour == null){
+                        chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),"2",chuanyunWeekMemberHourDO.getProjectType());
+                        //同时删除氚云钟数据
+                        dataArcherService.deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunWeekMemberHourDO.getProjectId(),"F0000002",chuanyunWeekMemberHourDO.getUserId(),"F0000008",chuanyunWeekMemberHourDO.getYear(),"","","F0000006",chuanyunWeekMemberHourDO.getWeek(),"F0000003",chuanyunWeekMemberHourDO.getProjectType());
+                    }
+                }
+            }catch (Exception e){
+                log.error(e.getMessage()+"周工时标准化异常");
+            }
+        });
     }
 
     /**

+ 42 - 68
src/main/java/com/galaxis/manatee/service/LogUpdateService.java

@@ -46,112 +46,86 @@ public class LogUpdateService {
     /**
      * 更新所有日工时
      */
-    public void updateAllChuanyunSelfWorkHour(){
+    public void updateAllChuanyunSelfWorkHour() {
         long startTime = Instant.now().getEpochSecond();
-        var pageSize = 20;
-        var page = 0;
-        while (true){
-            var pageable = PageRequest.of(page, pageSize);
-            var updateList = chuanyunSelfWorkHourDao.findAll(pageable);
-            if (page <= updateList.getTotalPages()) {
-                page += 1;
-                this.updateChuanyunSelfWorkHourList(updateList.toList());
-            }else{
-                break;
-            }
-        }
-        log.info("更新所有每日工时花费"+(Instant.now().getEpochSecond()-startTime)+"秒");
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.updateChuanyunSelfWorkHourListByUserId(chuanyunUserCompanyDO.getUserId()));
+        log.info("更新所有每日工时花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
     }
 
     /**
      * 更新所有周工时
      */
-    public void updateAllChuanyunWeekMemberHour(){
+    public void updateAllChuanyunWeekMemberHour() {
         long startTime = Instant.now().getEpochSecond();
-        var pageSize = 20;
-        var page = 0;
-        while (true){
-            var pageable = PageRequest.of(page, pageSize);
-            var updateList = chuanyunWeekMemberHourDao.findAll(pageable);
-            if (page <= updateList.getTotalPages()) {
-                page += 1;
-                this.updateChuanyunWeekMemberHourList(updateList.toList());
-            }else{
-                break;
-            }
-        }
-        log.info("更新所有每周工时花费"+(Instant.now().getEpochSecond()-startTime)+"秒");
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.updateChuanyunWeekMemberHourListByUserId(chuanyunUserCompanyDO.getUserId()));
+        log.info("更新所有每周工时花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
     }
 
-    public void updateAllChuanyunSelfCost(){
+    /**
+     * 更新所有月工时
+     */
+    public void updateAllChuanyunSelfCost() {
         long startTime = Instant.now().getEpochSecond();
-        var pageSize = 20;
-        var page = 0;
-        while (true){
-            var pageable = PageRequest.of(page, pageSize);
-            var updateList = chuanyunSelfCostDao.findAll(pageable);
-            if (page <= updateList.getTotalPages()) {
-                page += 1;
-                this.updateChuanyunSelfCostList(updateList.toList());
-            }else{
-                break;
-            }
-        }
-        log.info("更新所有每月工时花费"+(Instant.now().getEpochSecond()-startTime)+"秒");
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.updateChuanyunSelfCostListByUserId(chuanyunUserCompanyDO.getUserId()));
+        log.info("更新所有每月工时花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
     }
 
     /**
      * 更新最近一个月的标准每日工时
      */
-    public void updateRecentChuanyunSelfWorkHour(){
+    public void updateRecentChuanyunSelfWorkHour() {
         long startTime = Instant.now().getEpochSecond();
         var pageSize = 20;
         var page = 0;
-        while (true){
+        while (true) {
             var pageable = PageRequest.of(page, pageSize);
             var updateList = chuanyunSelfWorkHourDao.getRecentlyDayHour(pageable);
             if (page <= updateList.getTotalPages()) {
                 page += 1;
                 this.updateChuanyunSelfWorkHourList(updateList.toList());
-            }else{
+            } else {
                 break;
             }
         }
-        log.info("更新最近一个月每日工时花费"+(Instant.now().getEpochSecond()-startTime)+"秒");
+        log.info("更新最近一个月每日工时花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
     }
 
     /**
      * 根据用户Id更新氚云每日工时列表
-     * @param userId    用户ID
+     *
+     * @param userId 用户ID
      */
-    public void updateChuanyunSelfWorkHourListByUserId(String userId){
-        List<ChuanyunSelfWorkHourDO> updateList=chuanyunSelfWorkHourDao.findByUserId(userId);
+    public void updateChuanyunSelfWorkHourListByUserId(String userId) {
+        List<ChuanyunSelfWorkHourDO> updateList = chuanyunSelfWorkHourDao.findByUserId(userId);
         this.updateChuanyunSelfWorkHourList(updateList);
     }
 
     /**
      * 根据用户Id更新氚云每周工时列表
-     * @param userId    用户ID
+     *
+     * @param userId 用户ID
      */
-    public void updateChuanyunWeekMemberHourListByUserId(String userId){
-        List<ChuanyunWeekMemberHourDO> updateList=chuanyunWeekMemberHourDao.findByUserId(userId);
+    public void updateChuanyunWeekMemberHourListByUserId(String userId) {
+        List<ChuanyunWeekMemberHourDO> updateList = chuanyunWeekMemberHourDao.findByUserId(userId);
         this.updateChuanyunWeekMemberHourList(updateList);
     }
 
     /**
      * 根据用户Id更新氚云每月工时列表
-     * @param userId    用户ID
+     *
+     * @param userId 用户ID
      */
-    public void updateChuanyunSelfCostListByUserId(String userId){
-        List<ChuanyunSelfCostDO> updateList=chuanyunSelfCostDao.findByUserId(userId);
+    public void updateChuanyunSelfCostListByUserId(String userId) {
+        List<ChuanyunSelfCostDO> updateList = chuanyunSelfCostDao.findByUserId(userId);
         this.updateChuanyunSelfCostList(updateList);
     }
 
     /**
      * 根据标准日工时列表更新
-     * @param updateList    更新列表
+     *
+     * @param updateList 更新列表
      */
-    public void updateChuanyunSelfWorkHourList(List<ChuanyunSelfWorkHourDO> updateList){
+    public void updateChuanyunSelfWorkHourList(List<ChuanyunSelfWorkHourDO> updateList) {
         updateList.forEach(chuanyunSelfWorkHourDO -> {
             try {
                 //
@@ -173,21 +147,21 @@ public class LogUpdateService {
                 dataArcherService.updateSelfWorkHour(chuanyunSelfWorkHourDTO);
 
             } catch (Exception e) {
-                e.printStackTrace();
-                log.warn("更新标准工时异常");
+                log.error("更新标准工时异常", e);
             }
         });
     }
 
     /**
      * 根据标准周工时列表更新
-     * @param updateList    更新列表
+     *
+     * @param updateList 更新列表
      */
-    public void updateChuanyunWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
+    public void updateChuanyunWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList) {
         updateList.forEach(chuanyunWeekMemberHourDO -> {
             //更新氚云
             try {
-                String departmentId=chuanyunUserCompanyDao.findByUserId(chuanyunWeekMemberHourDO.getUserId()).getDepartmentId();
+                String departmentId = chuanyunUserCompanyDao.findByUserId(chuanyunWeekMemberHourDO.getUserId()).getDepartmentId();
                 ChuanyunWeekMemberHourDTO chuanyunWeekMemberHourDTO = new ChuanyunWeekMemberHourDTO();
                 chuanyunWeekMemberHourDTO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
                 chuanyunWeekMemberHourDTO.setUserId(chuanyunWeekMemberHourDO.getUserId());
@@ -200,16 +174,17 @@ public class LogUpdateService {
                 dataArcherService.updateWeekMemberHour(chuanyunWeekMemberHourDTO);
             } catch (Exception e) {
                 e.printStackTrace();
-                log.warn("更新每周工时异常"+chuanyunWeekMemberHourDO);
+                log.warn("更新每周工时异常" + chuanyunWeekMemberHourDO);
             }
         });
     }
 
     /**
      * 根据标准月工时列表更新
-     * @param updateList    更新列表
+     *
+     * @param updateList 更新列表
      */
-    public void updateChuanyunSelfCostList(List<ChuanyunSelfCostDO> updateList){
+    public void updateChuanyunSelfCostList(List<ChuanyunSelfCostDO> updateList) {
         updateList.forEach(chuanyunSelfCostDO -> {
             try {
                 ChuanyunSelfCostDTO chuanyunSelfCostDTO = new ChuanyunSelfCostDTO();
@@ -226,11 +201,10 @@ public class LogUpdateService {
                 if (!StringUtils.isEmpty(chuanyunSelfCostDO.getProjectId())) {
                     dataArcherService.updateChuanyunSelfCost(chuanyunSelfCostDTO);
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                log.warn("更新每月工时异常"+chuanyunSelfCostDO);
+                log.warn("更新每月工时异常" + chuanyunSelfCostDO);
             }
         });
-
     }
 }

+ 5 - 35
src/main/java/com/galaxis/manatee/task/WorkHourStatistics.java

@@ -26,7 +26,6 @@ import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -70,8 +69,8 @@ public class WorkHourStatistics {
         //每日工时标准化
         standardWorkHour();
         standardWeeklyWorkHour();
-        standardMonthlyWorkHour();
-        projectMemberHour();
+//        standardMonthlyWorkHour();
+//        projectMemberHour();
         //离职人员工时标准化
 //        quitStandardHour();
     }
@@ -89,12 +88,8 @@ public class WorkHourStatistics {
                 page += 1;
                 //逐个将员工每天工时进行统计汇总
                 List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
-                userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
-                    long start = Instant.now().getEpochSecond();
-                    //工时标准化
-                    logStandardService.standardHourByUserCompanyAndIsRecent(chuanyunUserCompanyDO, false);
-                    log.info("每日工时标准化" + chuanyunUserCompanyDO.getUserName() + (Instant.now().getEpochSecond() - start) + "秒");
-                });
+                //工时标准化
+                userCompanyDOList.forEach(chuanyunUserCompanyDO -> logStandardService.standardHourByUserCompanyAndIsRecent(chuanyunUserCompanyDO, false));
             } else {
                 break;
             }
@@ -105,32 +100,7 @@ public class WorkHourStatistics {
      * 人员-项目-周度工时汇总
      */
     private void standardWeeklyWorkHour() {
-        long start = Instant.now().getEpochSecond();
-        //更新数据库
-        log.info("开始周工时标准化");
-        List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
-        list.forEach(chuanyunWeekMemberHourDO -> {
-            try {
-                if (chuanyunWeekMemberHourDO != null) {
-                    ChuanyunWeekMemberHourDO weekMemberHourDO = ChuanyunWeekMemberHourDO.fromChuanyunWeekMemberHourDO(chuanyunWeekMemberHourDO);
-                    ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(), chuanyunWeekMemberHourDO.getUserId(), chuanyunWeekMemberHourDO.getWeek(), chuanyunWeekMemberHourDO.getStatus(), chuanyunWeekMemberHourDO.getProjectType(), chuanyunWeekMemberHourDO.getYear());
-                    if (oldWeekHour != null) {
-                        chuanyunWeekMemberHourDao.delete(oldWeekHour);
-                    }
-                    chuanyunWeekMemberHourDao.save(weekMemberHourDO);
-                    //搜索是否还有处于审批中的数据
-                    ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(), chuanyunWeekMemberHourDO.getUserId(), chuanyunWeekMemberHourDO.getYear(), chuanyunWeekMemberHourDO.getWeek(), chuanyunWeekMemberHourDO.getProjectType());
-                    if (processWeekHour == null) {
-                        chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(), chuanyunWeekMemberHourDO.getUserId(), chuanyunWeekMemberHourDO.getYear(), chuanyunWeekMemberHourDO.getWeek(), "2", chuanyunWeekMemberHourDO.getProjectType());
-                        //同时删除氚云钟数据
-                        deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, "F0000007", "F0000001", chuanyunWeekMemberHourDO.getProjectId(), "F0000002", chuanyunWeekMemberHourDO.getUserId(), "F0000008", chuanyunWeekMemberHourDO.getYear(), "", "", "F0000006", chuanyunWeekMemberHourDO.getWeek(), "F0000003", chuanyunWeekMemberHourDO.getProjectType());
-                    }
-                }
-            } catch (Exception e) {
-                log.error(e.getMessage() + "周工时标准化异常");
-            }
-        });
-        log.info("周工时标准化" + (Instant.now().getEpochSecond() - start) + "秒");
+        logStandardService.standardAllWeekMemberHour();
     }
 
     /**

+ 5 - 42
src/main/java/com/galaxis/manatee/task/WorkHourStatisticsRecently.java

@@ -6,9 +6,9 @@ import com.galaxis.manatee.constant.ChuanYunConstant;
 import com.galaxis.manatee.dao.*;
 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.Filter;
 import com.galaxis.manatee.manager.ChuanYunManager;
+import com.galaxis.manatee.service.DataArcherService;
 import com.galaxis.manatee.service.LogStandardService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.PageRequest;
@@ -39,8 +39,9 @@ public class WorkHourStatisticsRecently {
     private final ChuanyunSelfCostDao chuanyunSelfCostDao;
     private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
     private final LogStandardService logStandardService;
+    private final DataArcherService dataArcherService;
 
-    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
+    public WorkHourStatisticsRecently(DataArcherService dataArcherService,ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
@@ -50,6 +51,7 @@ public class WorkHourStatisticsRecently {
         this.chuanyunSelfCostDao = chuanyunSelfCostDao;
         this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
         this.logStandardService = logStandardService;
+        this.dataArcherService=dataArcherService;
     }
 
     @Scheduled(fixedDelay = 3600000L)
@@ -202,7 +204,7 @@ public class WorkHourStatisticsRecently {
                     if (processWeekHour == null){
                         chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),"2",chuanyunWeekMemberHourDO.getProjectType());
                         //同时删除氚云钟数据
-                        deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunWeekMemberHourDO.getProjectId(),"F0000002",chuanyunWeekMemberHourDO.getUserId(),"F0000008",chuanyunWeekMemberHourDO.getYear(),"","","F0000006",chuanyunWeekMemberHourDO.getWeek(),"F0000003",chuanyunWeekMemberHourDO.getProjectType());
+                        dataArcherService.deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunWeekMemberHourDO.getProjectId(),"F0000002",chuanyunWeekMemberHourDO.getUserId(),"F0000008",chuanyunWeekMemberHourDO.getYear(),"","","F0000006",chuanyunWeekMemberHourDO.getWeek(),"F0000003",chuanyunWeekMemberHourDO.getProjectType());
                     }
                 }
             }catch (Exception e){
@@ -307,45 +309,6 @@ public class WorkHourStatisticsRecently {
         });
     }
 
-    /**
-     * 删除状态为审核中数据
-     */
-    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) {
-        try {
-            List<String> matchers = new ArrayList<>();
-            matchers.add(statusCode+"_2,"+"2");
-            matchers.add(projectCode+"_2,"+projectId);
-            if (!StringUtils.isEmpty(userId)){
-                matchers.add(userCode+"_2,"+userId);
-            }
-            if (!StringUtils.isEmpty(year)){
-                matchers.add(yearCode+"_2,"+year);
-            }
-            if (!StringUtils.isEmpty(month)){
-                matchers.add(monthCode+"_2,"+month);
-            }
-            if (!StringUtils.isEmpty(week)){
-                matchers.add(weekCode+"_2,"+week);
-            }
-            if (!StringUtils.isEmpty(projectType)){
-                matchers.add(typeCode+"_2,"+projectType);
-            }
-            var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
-            var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
-            if (chuanyunFindAllResponse.getReturnData()!=null){
-                List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                result.forEach(basicDO -> {
-                    ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
-                    if(!chuanyunSaveDTO.getSuccessful()){
-                        log.warn("删除状态为审核中数据失败");
-                    }
-                });
-            }
-        }catch (Exception e) {
-            e.printStackTrace();
-            log.error(e.getMessage());
-        }
-    }
 
     private String getCharacters(String str){
         String reg = "[^\u4e00-\u9fa5]";