Explorar o código

1.修改周工时统计

WoNiu %!s(int64=4) %!d(string=hai) anos
pai
achega
245a233273

+ 4 - 3
src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java

@@ -53,13 +53,14 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
             "project_type," +
             "`status`" +
             "FROM chuanyun_self_work_hour " +
-            "WHERE project_id=?1 and user_id=?2 and DATE_FORMAT(day_log_date,'%Y')=?3 and WEEKOFYEAR(chuanyun_self_work_hour.day_log_date)=?4 and status=2" +
+            "WHERE project_id=?1 and user_id=?2 and DATE_FORMAT(day_log_date,'%Y')=?3 and " +
+            "WEEKOFYEAR(chuanyun_self_work_hour.day_log_date)=?4 and status=2 and project_type=?5" +
             " GROUP BY chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.user_id," +
             "DATE_FORMAT(day_log_date,'%Y')," +
             "WEEKOFYEAR(chuanyun_self_work_hour.day_log_date)," +
             "chuanyun_self_work_hour.`status`",nativeQuery = true)
-    ChuanyunWeekMemberHourDO getProcessWeekHour(@Param("projectId")String projectId,@Param("userId")String userId,@Param("year")String year,@Param("week")String week);
+    ChuanyunWeekMemberHourDO getProcessWeekHour(@Param("projectId")String projectId,@Param("userId")String userId,@Param("year")String year,@Param("week")String week,@Param("projectType")String projectType);
 
     /**
      * 项目人员周度是否存在
@@ -73,5 +74,5 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
     /**
      * 删除状态为审核中的数据
      */
-    void deleteByProjectIdAndUserIdAndYearAndWeekAndStatus(String projectId,String userId,String year,String week,String status);
+    void deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(String projectId,String userId,String year,String week,String status,String projectType);
 }

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

@@ -22,6 +22,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -136,8 +137,7 @@ public class WorkHourStatistics {
     @Scheduled(fixedDelay = 3600000L)
     private void standardWeeklyWorkHour() {
         long start=Instant.now().getEpochSecond();
-        //删除数据库中审批中的数据,防止重复记录工时
-//        chuanyunWeekMemberHourDao.deleteAllByStatus("2");
+
         //更新数据库
         log.info("开始周工时标准化");
         List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
@@ -157,9 +157,11 @@ public class WorkHourStatistics {
                 }
                 chuanyunWeekMemberHourDao.save(weekMemberHourDO);
                 //搜索是否还有处于审批中的数据
-                ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek());
+                ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getProjectType());
                 if (processWeekHour == null){
-                    chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatus(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),"2");
+                    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());
                 }
             }
         });
@@ -241,7 +243,9 @@ public class WorkHourStatistics {
 
             ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
             chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
-            chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
+            if (monthHour!=null){
+                chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
+            }
             chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
             chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
             chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
@@ -441,12 +445,28 @@ public class WorkHourStatistics {
     /**
      * 删除状态为审核中数据
      * @param schemaCode
-     * @param buttonCode
+     * @param
      */
-    public void deleteExamineStatus(String schemaCode,String buttonCode) {
+    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(buttonCode+"_2,"+"2");
+            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){