Browse Source

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

WoNiu 4 years ago
parent
commit
e1d384f9ff

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

@@ -22,7 +22,7 @@ public interface ChuanyunDayWorkAbcDao extends GalaxisRepository<ChuanyunDayWork
 
     @Query(value = "select a.project_id as project_id,b.project_code,b.project_name,sum(a.standard_work_hour) as total_time from chuanyun_self_work_hour a " +
        "left join chuanyun_project b on a.project_id = b.object_id where  b.project_code is not null and b.project_name is not null group by a.project_id ",nativeQuery = true)
-    List<Map> queryDayWorkAbc();
+    List<Map<String,Object>> queryDayWorkAbc();
 
     @Query(value = " SELECT c.project_id,sum( c.standard_work_hour ) AS total_time,'' as object_id,'' as project_code,'' as project_name,'' as plan_time,'' as sell_time,'' as other_time from " +
             "( SELECT a.project_id,a.standard_work_hour, b.user_type FROM chuanyun_self_work_hour a LEFT JOIN chuanyun_user_company b ON a.user_id = b.user_id ) c "+

+ 12 - 18
src/main/java/com/galaxis/manatee/task/WorkHourAnalysis.java

@@ -2,15 +2,12 @@ package com.galaxis.manatee.task;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.manatee.dao.ChuanyunDayWorkAbcDao;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunDayWorkAbcDO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunDayWorkAbcDTO;
 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 lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -37,7 +34,10 @@ public class WorkHourAnalysis {
         this.chuanYunManager = chuanYunManager;
     }
 
-    @Scheduled(cron = "0 0 0 * * *")
+    /**
+     * ABC工时分析暂时不用
+     */
+    @Deprecated
     private void standardDayWorkAbcHour() {
         standardDayAbcHour();
            // standardChuanyunDayWorkAbcHour();
@@ -49,20 +49,14 @@ public class WorkHourAnalysis {
         dayWorkAbcDOList.forEach(dayWork -> {
             try {
                 var putString = objectMapper.writeValueAsString(ChuanyunDayWorkAbcDTO.fromChuanyunDayWorkAbcDTO(dayWork));
-                ChuanyunSaveDTO chuanyunSaveDTO;
-                List<String> mathers = new ArrayList<>();
-                mathers.add("F0000001_2," + dayWork.getProjectCode());
-                var filter = Filter.instance(0, 1, true, "And", mathers);
+                List<String> matchers = new ArrayList<>();
+                matchers.add("F0000001_2," + dayWork.getProjectCode());
+                var filter = Filter.instance(0, 1, true, "And", matchers);
                 ChuanyunFindAllBizDTO<LinkedHashMap<String, String>> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunDayWorkAbcDO.SCHEMA_CODE, filter);
                 if(chuanyunFindAllResponse.getReturnData() == null) {
-                    chuanyunSaveDTO = chuanYunManager.save(ChuanyunDayWorkAbcDO.SCHEMA_CODE,putString,true);
-                }else{
-                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunDayWorkAbcDO.SCHEMA_CODE,chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"),putString);
-                }
-                if(chuanyunSaveDTO.getSuccessful()){
-//                        log.info("新增请假信息成功");
+                    chuanYunManager.save(ChuanyunDayWorkAbcDO.SCHEMA_CODE,putString,true);
                 }else{
-                    log.warn("新增周工时数据信息失败");
+                    chuanYunManager.update(ChuanyunDayWorkAbcDO.SCHEMA_CODE,chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"),putString);
                 }
             }catch(Exception e) {
                 e.printStackTrace();
@@ -76,11 +70,11 @@ public class WorkHourAnalysis {
     private void standardDayAbcHour() {
         log.info("开始更新工时abc分析数据");
         long startTime= Instant.now().getEpochSecond();
-        List<Map> dayWorkAbcList = chuanyunDayWorkAbcDao.queryDayWorkAbc();
+        List<Map<String, Object>> dayWorkAbcList = chuanyunDayWorkAbcDao.queryDayWorkAbc();
         dayWorkAbcList.forEach(dayWork -> {
             try {
                 String projectId = (String)dayWork.get("project_id");
-                String projecrtName = (String)dayWork.get("project_name");
+                String projectName = (String)dayWork.get("project_name");
                 String projectCode = (String)dayWork.get("project_code");
                 BigDecimal totalTime = (BigDecimal)dayWork.get("total_time");
                 LocalDateTime dayLogDate = ((Timestamp)dayWork.get("day_log_date")).toLocalDateTime();
@@ -104,7 +98,7 @@ public class WorkHourAnalysis {
                 dayWorkAbcDO.setObjectId(UUID.randomUUID().toString());
                 dayWorkAbcDO.setProjectId(projectId);
                 dayWorkAbcDO.setProjectCode(projectCode);
-                dayWorkAbcDO.setProjectName(projecrtName);
+                dayWorkAbcDO.setProjectName(projectName);
                 dayWorkAbcDO.setTotalTime(totalTime);
                 dayWorkAbcDO.setDayLogDate(dayLogDate);
                 chuanyunDayWorkAbcDao.save(dayWorkAbcDO);

+ 22 - 20
src/main/java/com/galaxis/manatee/task/WorkHourStatisticsRecently.java

@@ -27,6 +27,9 @@ import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * @author kxuan
+ */
 @Service
 @Slf4j
 public class WorkHourStatisticsRecently {
@@ -41,10 +44,9 @@ public class WorkHourStatisticsRecently {
     private final ObjectMapper objectMapper=new ObjectMapper();
     private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
     private final ChuanyunSelfCostDao chuanyunSelfCostDao;
-    private final ChuanyunProjectCostDao chuanyunProjectCostDao;
     private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
 
-    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao) {
+    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
@@ -53,7 +55,6 @@ public class WorkHourStatisticsRecently {
         this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
         this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
         this.chuanyunSelfCostDao = chuanyunSelfCostDao;
-        this.chuanyunProjectCostDao = chuanyunProjectCostDao;
         this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
     }
 
@@ -82,7 +83,7 @@ public class WorkHourStatisticsRecently {
         now = now.minus(30, ChronoUnit.DAYS);
         matchersString.add("logDate_1,"+df.format(now));
         while (flag) {
-            Long startTime= Instant.now().getEpochSecond();
+            long startTime= Instant.now().getEpochSecond();
             try {
                 //从氚云查询数据
                 var filter= Filter.instance(start,start+pageSize,true,Filter.AND,matchersString);
@@ -106,9 +107,7 @@ public class WorkHourStatisticsRecently {
                         log.warn("异常数据");
                     }else{
                         //如果有重复就删除
-                        chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(toDelete -> {
-                            chuanyunLogDao.delete(toDelete);
-                        });
+                        chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(chuanyunLogDao::delete);
                         //根据projectId获取code,如果是生产项目,则不用处理
                         //针对前期测试数据,可能出现日志为空的情况,跳过不处理
                         chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
@@ -167,22 +166,18 @@ public class WorkHourStatisticsRecently {
      */
     public void standardWorkHour() {
         log.info("开始每日工时标准化");
-        var flag = true;
         var pageSize = 20;
         var page = 0;
         long startTime=Instant.now().getEpochSecond();
-        while(flag) {
+        while(true) {
             var pageable= PageRequest.of(page,pageSize);
             var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
             if (page<=chuanyunUserCompanyList.getTotalPages()){
                 page += 1;
                 //逐个将员工每天工时进行统计汇总
                 List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
-                userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
-                    long start= Instant.now().getEpochSecond();
-                    //工时标准化
-                    standardHour(chuanyunUserCompanyDO);
-                });
+                //工时标准化
+                userCompanyDOList.forEach(this::standardHour);
             }else {
                 break;
             }
@@ -196,7 +191,6 @@ public class WorkHourStatisticsRecently {
      * @param chuanyunUserCompanyDO 员工信息
      */
     private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
-
         BigDecimal standard = new BigDecimal(8);
         //每人每个项目每天工时
         List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHourRecently(chuanyunUserCompanyDO.getUserId());
@@ -205,7 +199,19 @@ public class WorkHourStatisticsRecently {
                 ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
                 chuanyunSelfWorkHourDO.setStatus(self.getStatus());
                 chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
+                //2021年3月3日添加,使用ChuanyunGroupProject中实际的项目类型来替代日志中的项目类型,防止出现项目类型错误的情况
                 chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
+                try{
+                    var chuanyunGroupProject=chuanyunGroupProjectDao.findByObjectId(self.getProjectId());
+                    if(chuanyunGroupProject==null){
+                        throw new Exception("没有找到对应的项目");
+                    }
+                    //如果找到相应的项目,则使用项目实际的项目类型
+                    chuanyunSelfWorkHourDO.setProjectType(chuanyunGroupProject.getProjectType());
+                }catch (Exception e){
+                    //没有找到对应项目,使用原项目类型
+                    chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
+                }
                 chuanyunSelfWorkHourDO.setDepartmentName(self.getDepartmentName());
                 if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
                     chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
@@ -571,8 +577,6 @@ public class WorkHourStatisticsRecently {
 
     /**
      * 删除状态为审核中数据
-     * @param schemaCode
-     * @param
      */
     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 {
@@ -600,9 +604,7 @@ public class WorkHourStatisticsRecently {
                 List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
                 result.forEach(basicDO -> {
                     ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
-                    if(chuanyunSaveDTO.getSuccessful()){
-//                        log.info("删除状态为审核中数据成功");
-                    }else{
+                    if(!chuanyunSaveDTO.getSuccessful()){
                         log.warn("删除状态为审核中数据失败");
                     }
                 });