Bladeren bron

工时ABC性能测试

xuj 4 jaren geleden
bovenliggende
commit
df90c5e313

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

@@ -3,10 +3,13 @@ package com.galaxis.manatee.dao;
 import com.galaxis.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunDayWorkAbcDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunDayWorkAbcDTO;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by IntelliJ IDEA.
@@ -17,23 +20,15 @@ import java.util.List;
 @Repository
 public interface ChuanyunDayWorkAbcDao extends GalaxisRepository<ChuanyunDayWorkAbcDO,String> {
 
-    @Query(value = "select d.project_code,d.project_name,a.object_id,a.project_id,sum(a.standard_work_hour) as total_time,r.plan_time,p.sell_time,q.other_time from chuanyun_self_work_hour a " +
-       "left join (select c.project_id,c.user_type,sum(c.standard_work_hour) as plan_time from (select a.*,b.user_type from chuanyun_self_work_hour a " +
-       "left join  chuanyun_user_company b on a.user_id = b.user_id) c " +
-       "where c.user_type = 0 " +
-       "group by c.project_id) r on a.project_id = r.project_id " +
-       "left join(	select c.project_id,c.user_type,sum(c.standard_work_hour) as sell_time from (select a.*,b.user_type from chuanyun_self_work_hour a " +
-       "left join  chuanyun_user_company b on a.user_id = b.user_id) c " +
-       "where c.user_type = 1 " +
-       "group by c.project_id) p on a.project_id = p.project_id " +
-       "left join (select c.project_id,c.user_type,sum(c.standard_work_hour) as other_time from (select a.*,b.user_type from chuanyun_self_work_hour a " +
-       "left join  chuanyun_user_company b on a.user_id = b.user_id) c " +
-       "where c.user_type = 2 " +
-       "group by c.project_id) q on a.project_id = q.project_id " +
-       "left join chuanyun_project d on a.project_id = d.object_id " +
-       "group by a.project_id" ,
-            nativeQuery = true)
-    List<ChuanyunDayWorkAbcDO> queryDayWorkAbc();
+    @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();
+
+    @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 "+
+            "WHERE c.project_id = ?1 and c.user_type = ?2 group by c.project_id"
+            ,nativeQuery = true)
+    ChuanyunDayWorkAbcDO queryDayWorkAbcTotalTime(@Param("projctId")String projectId, @Param("userType")int userType);
 
     ChuanyunDayWorkAbcDO findByProjectId(String projectId);
 

+ 2 - 3
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunDayWorkAbcDO.java

@@ -25,9 +25,8 @@ import java.math.BigDecimal;
 public class ChuanyunDayWorkAbcDO {
 
     @Id
-    @GeneratedValue(generator = "idGeneratorUser")
-    @GenericGenerator(name ="idGeneratorUser" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
-    private Long objectId;
+    @JsonProperty(value = "ObjectId")
+    private String objectId;
 
     /**
      * 项目id

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

@@ -9,6 +9,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 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.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;
@@ -31,6 +32,8 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 
 /**
  * @author zcj
@@ -378,19 +381,45 @@ public class ChuanyunProjectScheduledTask {
      * 员工工时abc分析
      */
     private void standardDayAbcHour() {
-        List<ChuanyunDayWorkAbcDO> dayWorkAbcList = chuanyunDayWorkAbcDao.queryDayWorkAbc();
+        log.info("开始更新工时abc分析数据");
+        long startTime=Instant.now().getEpochSecond();
+        List<Map> dayWorkAbcList = chuanyunDayWorkAbcDao.queryDayWorkAbc();
         dayWorkAbcList.forEach(dayWork -> {
             try {
-                ChuanyunDayWorkAbcDO chuanyunDayWorkAbcDO = chuanyunDayWorkAbcDao.findByProjectId(dayWork.getProjectId());
+                String projectId = (String)dayWork.get("project_id");
+                String projecrtName = (String)dayWork.get("project_name");
+                String projectCode = (String)dayWork.get("project_code");
+                BigDecimal totalTime = (BigDecimal)dayWork.get("total_time");
+                ChuanyunDayWorkAbcDO dayWorkAbcDO = new ChuanyunDayWorkAbcDO();
+                ChuanyunDayWorkAbcDO planDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 0);
+                if(planDayWorkAbc != null) {
+                    dayWorkAbcDO.setPlanTime(planDayWorkAbc.getTotalTime());
+                }
+                ChuanyunDayWorkAbcDO sellDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 1);
+                if(sellDayWorkAbc != null) {
+                    dayWorkAbcDO.setSellTime(sellDayWorkAbc.getTotalTime());
+                }
+                ChuanyunDayWorkAbcDO otherWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 2);
+                if(otherWorkAbc != null) {
+                    dayWorkAbcDO.setOtherTime(otherWorkAbc.getTotalTime());
+                }
+                ChuanyunDayWorkAbcDO chuanyunDayWorkAbcDO = chuanyunDayWorkAbcDao.findByProjectId(projectId);
                 if (chuanyunDayWorkAbcDO != null) {
                     chuanyunDayWorkAbcDao.delete(chuanyunDayWorkAbcDO);
                 }
-                chuanyunDayWorkAbcDao.save(dayWork);
+                dayWorkAbcDO.setObjectId(UUID.randomUUID().toString());
+                dayWorkAbcDO.setProjectId(projectId);
+                dayWorkAbcDO.setProjectCode(projectCode);
+                dayWorkAbcDO.setProjectName(projecrtName);
+                dayWorkAbcDO.setTotalTime(totalTime);
+                chuanyunDayWorkAbcDao.save(dayWorkAbcDO);
             }catch(Exception e) {
                 log.error(e.getMessage());
                 e.printStackTrace();
            }
         });
+
+        log.info("周工时abc分析耗时"+(Instant.now().getEpochSecond()-startTime)+"秒");
     }
 
     /**