Browse Source

1.将标准化最近工时的方法与标准化所有工时的方法合并
2.更改了标准化所有工时的周期

verguenza 4 years ago
parent
commit
be9cb5212e

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

@@ -143,7 +143,7 @@ public class LogStandardService {
      * 根据日工时列表生成
      * @param updateList    待更新列表
      */
-    private void generateSelfWorkHourByWorkHourList(List<ChuanyunWorkHourDO> updateList){
+    public void generateSelfWorkHourByWorkHourList(List<ChuanyunWorkHourDO> updateList){
         //逐一将原始工时数据标准化后,更新到标准化工时表和氚云中
         updateList.forEach(self -> {
             try {
@@ -171,7 +171,7 @@ public class LogStandardService {
      * 根据周工时列表
      * @param updateList    待更新的周工时列表
      */
-    private void generateWeekMemberHourByWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
+    public void generateWeekMemberHourByWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
         updateList.forEach(chuanyunWeekMemberHourDO -> {
             try{
                 if (chuanyunWeekMemberHourDO!=null){

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

@@ -18,7 +18,6 @@ import com.galaxis.manatee.service.LogService;
 import com.galaxis.manatee.service.LogStandardService;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -56,10 +55,14 @@ public class WorkHourStatistics {
     }
 
     /**
-     * 每3小时上传一次所有日工时、周工时、月工时
+     * 每10天执行一次所有工时数据的标准化、上传操作。
      */
-    @Scheduled(fixedDelay = 300800000L)
+    @Scheduled(fixedDelay = 864000000L)
     public void updateHour(){
+        //每日工时标准化
+        standardWorkHour();
+        standardWeeklyWorkHour();
+        standardMonthlyWorkHour();
         logService.updateAllChuanyunSelfWorkHour();
         logService.updateAllChuanyunWeekMemberHour();
         logService.updateAllChuanyunSelfCost();
@@ -68,13 +71,7 @@ public class WorkHourStatistics {
     /**
      * 更新所有项目工时
      */
-//    @Scheduled(fixedDelay = 432000000L)
-    @Async
     public void standardHour() {
-        //每日工时标准化
-        standardWorkHour();
-        standardWeeklyWorkHour();
-        standardMonthlyWorkHour();
 //        projectMemberHour();
         //离职人员工时标准化
 //        quitStandardHour();

+ 9 - 104
src/main/java/com/galaxis/manatee/task/WorkHourStatisticsRecently.java

@@ -2,13 +2,10 @@ package com.galaxis.manatee.task;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-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.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;
@@ -33,25 +30,18 @@ public class WorkHourStatisticsRecently {
     private final ChuanyunLogDao chuanyunLogDao;
     private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
     private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
-    private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
-    private final ObjectMapper objectMapper=new ObjectMapper();
     private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
-    private final ChuanyunSelfCostDao chuanyunSelfCostDao;
     private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
     private final LogStandardService logStandardService;
-    private final DataArcherService dataArcherService;
 
-    public WorkHourStatisticsRecently(DataArcherService dataArcherService,ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
+    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
         this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
-        this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
         this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
-        this.chuanyunSelfCostDao = chuanyunSelfCostDao;
         this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
         this.logStandardService = logStandardService;
-        this.dataArcherService=dataArcherService;
     }
 
     @Scheduled(fixedDelay = 3600000L)
@@ -162,7 +152,7 @@ public class WorkHourStatisticsRecently {
      * 同步最近一个月每日工时
      */
     public void standardWorkHour() {
-        log.info("开始每日工时标准化");
+        log.info("开始最近每日工时标准化");
         var pageSize = 20;
         var page = 0;
         long startTime=Instant.now().getEpochSecond();
@@ -179,7 +169,7 @@ public class WorkHourStatisticsRecently {
                 break;
             }
         }
-        log.info("每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
+        log.info("最近每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
     }
 
     /**
@@ -188,37 +178,17 @@ public class WorkHourStatisticsRecently {
     private void standardWeeklyWorkHour() {
         long start=Instant.now().getEpochSecond();
         //更新数据库
-        log.info("开始周工时标准化");
+        log.info("开始最近周工时标准化");
         List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourRecently();
-        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());
-                        //同时删除氚云钟数据
-                        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()+"周工时标准化异常");
-            }
-        });
-        log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
+        logStandardService.generateWeekMemberHourByWeekMemberHourList(list);
+        log.info("最近周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
     }
 
     /**
      * 单月工时汇总
      */
     private void standardMonthlyWorkHour() {
-        log.info("开始月工时汇总");
+        log.info("开始最近月工时汇总");
         var flag = true;
         var pageSize = 20;
         var page = 0;
@@ -241,75 +211,9 @@ public class WorkHourStatisticsRecently {
      * @param chuanyunUserCompanyDO 员工信息
      */
     private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
-        //删除上一次状态为审核中,但本次已经审核通过的数据
-        chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS,chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
-            List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList=chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(
-                    chuanyunSelfCostDO.getUserId(),
-                    chuanyunSelfCostDO.getProjectId(),
-                    chuanyunSelfCostDO.getProjectType(),
-                    ChuanYunConstant.IN_PROCESS,
-                    chuanyunSelfCostDO.getDayLogDate(),
-                    chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
-            //如果没有仍在审批中的每日工时,则将该月、该项目的审核中的月工时统计删除,manatee数据库与氚云
-            if(chuanyunSelfWorkHourList.size()==0){
-                //删除manatee中的在审核工时
-                chuanyunSelfCostDao.delete(chuanyunSelfCostDO);
-                //删除氚云中的在审核工时
-                List<String> matchers = new ArrayList<>();
-                matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
-                matchers.add("F0000009_2,"+ChuanYunConstant.IN_PROCESS);
-                matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
-                matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
-                matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
-                var filter= Filter.instance(0,1,true,"And",matchers);
-                try {
-                    ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
-                    if (chuanyunFindAllResponse.getReturnData()!=null){
-                        List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                        result.forEach(chuanyunMemberMonthCostDO -> {
-                            try{
-                                chuanYunManager.delete(ChuanyunMemberMonthCostDO.SCHEMA_CODE,chuanyunMemberMonthCostDO.getObjectId());
-                            }catch (Exception e){
-                                log.error("逐条删除失败"+e.getMessage());
-                            }
-                        });
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    log.error("删除已审核通过的月度数据汇总失败");
-                }
-            }
-        });
-        //每月每项目工时,按月-项目-用户分组统计标准工时
-        List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHourRecently(chuanyunUserCompanyDO.getUserId());
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        list.forEach(projectMonth->{
-            //获取人员-月度-相同工时状态标准工时汇总
-            ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()),projectMonth.getStatus());
-            ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
-            chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
-            if (monthHour!=null){
-                chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
-            }
-            chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
-            chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
-            chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
-            chuanyunSelfCostDO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
-            chuanyunSelfCostDO.setTotalHour(projectMonth.getStandardWorkHour());
-            chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
-            ChuanyunSelfCostDO oldSelfDO = chuanyunSelfCostDao.getOldSelfDO(chuanyunSelfCostDO.getUserId(),
-                    chuanyunSelfCostDO.getProjectId(),
-                    chuanyunSelfCostDO.getProjectType(),
-                    df.format(chuanyunSelfCostDO.getDayLogDate()),
-                    projectMonth.getStatus());
-            if (oldSelfDO !=null) {
-                chuanyunSelfCostDao.delete(oldSelfDO);
-            }
-            chuanyunSelfCostDao.save(chuanyunSelfCostDO);
-        });
+        logStandardService.standardSelfCostByUserId(chuanyunUserCompanyDO.getUserId());
     }
 
-
     private String getCharacters(String str){
         String reg = "[^\u4e00-\u9fa5]";
         str = str.replaceAll(reg, " ");
@@ -324,4 +228,5 @@ public class WorkHourStatisticsRecently {
             return str;
         }
     }
+
 }