Quellcode durchsuchen

1.更新了标准化所有周工时方法,并增加相关外部调用接口

verguenza vor 4 Jahren
Ursprung
Commit
c75ca1745c

+ 8 - 14
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;
     }
 
@@ -42,20 +42,14 @@ public class TestController {
         private String b;
     }
 
-    /**
-     * 标准化所有工时
-     */
-    @GetMapping("/test/api/standardAllWorkHour")
-    public void standardAllWorkHour() {
-        workHourStatistics.updateHour();
-    }
-
+    @GetMapping("/test/api/standardSelfWorkHourByUserId")
     public void standardSelfWorkHourByUserId(@RequestParam("userId") String userId) {
-
+        logStandardService.standardSelfWorkHourByUserId(userId);
     }
 
+    @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();
 
     /**

+ 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());
+        }
+    }
+
 }

+ 60 - 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;
     }
 
     /**
@@ -52,11 +57,19 @@ public class LogStandardService {
     }
 
     /**
+     * 标准化所有周工时信息
+     */
+    @Async
+    public void standardAllWeekMemberHour(){
+        chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.standardWeekMemberHourByUserId(chuanyunUserCompanyDO.getUserId()));
+    }
+
+    /**
      * 根据用户Id标准化某个人的日工时
      * @param userId    用户Id
      */
     @Async
-    public void standardHourByUserId(String userId){
+    public void standardSelfWorkHourByUserId(String userId){
         if (!StringUtils.isEmpty(userId)) {
             //从日志原始数据中获取每人每个项目每天工时。
             //由isRecent判断是否只获取最近30天的数据
@@ -68,6 +81,24 @@ public class LogStandardService {
     }
 
     /**
+     * 根据用户Id标准化某个人的工时
+     * @param userId    用户Id
+     */
+    @Async
+    public void standardWeekMemberHourByUserId(String userId){
+        if (!StringUtils.isEmpty(userId)) {
+            long start=Instant.now().getEpochSecond();
+            //更新数据库
+            log.info("统一开始周工时标准化");
+            List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourByUserId(userId);
+            this.generateWeekMemberHourByWeekMemberHourList(list);
+            log.info(userId+"统一周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
+        }else {
+            log.warn("用户信息中userId缺失");
+        }
+    }
+
+    /**
      * 根据日工时列表生成
      * @param updateList    待更新列表
      */
@@ -97,10 +128,32 @@ 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()+"周工时标准化异常");
+            }
+        });
+        log.info("统一周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
     }
 
     /**

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

@@ -231,6 +231,5 @@ public class LogUpdateService {
                 log.warn("更新每月工时异常"+chuanyunSelfCostDO);
             }
         });
-
     }
 }

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

@@ -70,8 +70,8 @@ public class WorkHourStatistics {
         //每日工时标准化
         standardWorkHour();
         standardWeeklyWorkHour();
-        standardMonthlyWorkHour();
-        projectMemberHour();
+//        standardMonthlyWorkHour();
+//        projectMemberHour();
         //离职人员工时标准化
 //        quitStandardHour();
     }
@@ -105,32 +105,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();
     }
 
     /**