verguenza 4 anos atrás
pai
commit
120431e4c7

+ 5 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunSelfCostDO.java

@@ -72,4 +72,9 @@ public class ChuanyunSelfCostDO {
      * 人员每月工时汇总
      */
     private BigDecimal monthlyTotalHour;
+
+    /**
+     * 部门Id
+     */
+    private String departmentId;
 }

+ 219 - 188
src/main/java/com/galaxis/manatee/task/ChuanyunProjectScheduledTask.java

@@ -18,7 +18,6 @@ import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -233,6 +232,68 @@ public class ChuanyunProjectScheduledTask {
     }
 
     /**
+     * 项目工时汇总
+     */
+    @Scheduled(fixedDelay = 3600000L)
+    private void projectHour() {
+        List<ChuanyunProjectCostDO> list1 = chuanyunProjectCostDao.getProjectCost();
+        list1.forEach(chuanyunProjectCostDO -> {
+            //获取项目实施费用
+            ChuanyunReimbursementAmountDO chuanyunReimbursementAmountDO = chuanyunReimbursementAmountDao.getAmount(chuanyunProjectCostDO.getProjectId());
+            //更新数据库
+            ChuanyunProjectCostDO projectCostDO = new ChuanyunProjectCostDO();
+            projectCostDO.setCost(chuanyunProjectCostDO.getCost());
+            projectCostDO.setProjectType(chuanyunProjectCostDO.getProjectType());
+            projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
+            projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
+            projectCostDO.setStatus(chuanyunProjectCostDO.getStatus());
+            projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
+            if (chuanyunReimbursementAmountDO !=null) {
+                projectCostDO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
+            }
+            ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
+            if (oldProjectDO !=null) {
+                chuanyunProjectCostDao.delete(oldProjectDO);
+            }
+            chuanyunProjectCostDao.save(projectCostDO);
+            try {
+                ChuanyunProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectTotalCostDTO();
+                chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
+                chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
+                chuanyunProjectTotalCostDTO.setCost(chuanyunProjectCostDO.getCost());
+                chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
+                chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
+                chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
+                if (chuanyunReimbursementAmountDO !=null) {
+                    chuanyunProjectTotalCostDTO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
+                }
+                List<String> matchers = new ArrayList<>();
+                matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
+                matchers.add("F0000006_2,"+chuanyunProjectCostDO.getStatus());
+                var filter= Filter.instance(0,1,true,"And",matchers);
+                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectTotalCostDO.SCHEMA_CODE,filter);
+                var projectTotalString=objectMapper.writeValueAsString(chuanyunProjectTotalCostDTO);
+                ChuanyunSaveDTO chuanyunSaveDTO;
+                if (chuanyunFindAllResponse.getReturnData()!=null) {
+                    List<ChuanyunProjectTotalCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                    ChuanyunProjectTotalCostDO firstResult = result.get(0);
+                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectTotalCostDO.SCHEMA_CODE,firstResult.getObjectId(),projectTotalString);
+                }else {
+                    chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectTotalCostDO.SCHEMA_CODE,projectTotalString,true);
+
+                }
+                if(!chuanyunSaveDTO.getSuccessful()){
+                    log.warn("新增项目成本汇总失败");
+                }
+            } catch (JsonProcessingException | BigSizeException e) {
+                log.error(e.getMessage());
+                log.error(""+chuanyunProjectCostDO);
+                e.printStackTrace();
+            }
+        });
+    }
+
+    /**
      * 更新销售合同回款数据
      */
     @Scheduled(fixedDelay = 3600000L)
@@ -291,7 +352,7 @@ public class ChuanyunProjectScheduledTask {
                     long start= Instant.now().getEpochSecond();
                     //工时标准化
                     standardHour(chuanyunUserCompanyDO);
-                    log.info("每日工时标准化"+chuanyunUserCompanyDO.getUserName()+(Instant.now().getEpochSecond()-start)+"秒");
+                    log.info("每日工时标准化"+chuanyunUserCompanyDO.getUserName()+(Instant.now().getEpochSecond()-start)+"秒");
                 });
             }else {
                 break;
@@ -300,6 +361,77 @@ public class ChuanyunProjectScheduledTask {
     }
 
     /**
+     * 员工单日、各个项目工时标准化,并保存
+     * @param chuanyunUserCompanyDO 员工信息
+     */
+    private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
+        BigDecimal standard = new BigDecimal(8);
+        //每人每个项目每天工时
+        List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
+        selfList.forEach(self->{
+            try{
+                ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
+                chuanyunSelfWorkHourDO.setStatus(self.getStatus());
+                chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
+                chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
+                if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
+                    chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
+                }else{
+                    chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
+                }
+                chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
+                //每人每天工时
+                ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
+                //工时标准化
+                if (chuanyunWorkHourDO != null) {
+                    if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<0) {
+                        chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
+                    }else {
+                        BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
+                        chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
+                    }
+                    ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDate(chuanyunUserCompanyDO.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate());
+                    if (chuanyunSelfWorkHourDO1!=null) {
+                        chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
+                    }
+                    chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
+                }
+            }catch (Exception e){
+                log.error(e.getMessage());
+                log.error(""+self);
+                e.printStackTrace();
+            }
+        });
+    }
+
+    /**
+     * 人员-项目-周度工时汇总
+     */
+    @Scheduled(fixedDelay = 3600000L)
+    private void standardWeeklyWorkHour() {
+        //删除数据库中审批中的数据,防止重复记录工时
+        chuanyunWeekMemberHourDao.deleteAllByStatus("2");
+        //更新数据库
+        List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
+        list.forEach(chuanyunWeekMemberHourDO -> {
+            if (chuanyunWeekMemberHourDO!=null){
+                ChuanyunWeekMemberHourDO weekMemberHourDO = new ChuanyunWeekMemberHourDO();
+                weekMemberHourDO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
+                weekMemberHourDO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
+                weekMemberHourDO.setStandardWorkHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
+                weekMemberHourDO.setStatus(chuanyunWeekMemberHourDO.getStatus());
+                weekMemberHourDO.setUserId(chuanyunWeekMemberHourDO.getUserId());
+                weekMemberHourDO.setWeek(chuanyunWeekMemberHourDO.getWeek());
+                ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType());
+                if (oldWeekHour != null) {
+                    chuanyunWeekMemberHourDao.delete(oldWeekHour);
+                }
+                chuanyunWeekMemberHourDao.save(weekMemberHourDO);
+            }
+        });
+    }
+
+    /**
      * 人力成本
      */
     @Scheduled(fixedDelay = 3600000L)
@@ -323,33 +455,6 @@ public class ChuanyunProjectScheduledTask {
     }
 
     /**
-     * 人员-项目-周度工时汇总
-     */
-    @Scheduled(fixedDelay = 3600000L)
-    private void weekHour() {
-        //删除数据库中审批中的数据,防止重复记录工时
-        chuanyunWeekMemberHourDao.deleteAllByStatus("2");
-        //更新数据库
-       List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
-       list.forEach(chuanyunWeekMemberHourDO -> {
-           if (chuanyunWeekMemberHourDO!=null){
-               ChuanyunWeekMemberHourDO weekMemberHourDO = new ChuanyunWeekMemberHourDO();
-               weekMemberHourDO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
-               weekMemberHourDO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
-               weekMemberHourDO.setStandardWorkHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
-               weekMemberHourDO.setStatus(chuanyunWeekMemberHourDO.getStatus());
-               weekMemberHourDO.setUserId(chuanyunWeekMemberHourDO.getUserId());
-               weekMemberHourDO.setWeek(chuanyunWeekMemberHourDO.getWeek());
-               ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType());
-               if (oldWeekHour != null) {
-                   chuanyunWeekMemberHourDao.delete(oldWeekHour);
-               }
-               chuanyunWeekMemberHourDao.save(weekMemberHourDO);
-           }
-       });
-    }
-
-    /**
      * 员工每月、各个项目标准工时会职工
      * @param chuanyunUserCompanyDO 员工信息
      */
@@ -365,14 +470,11 @@ public class ChuanyunProjectScheduledTask {
             //TODO 张曦铭的薪资信息同步之后需要使用U9中的数据更新薪资信息
             ChuanyunPayrollDO chuanyunPayrollDO = chuanyunPayrollDao.getPayroll(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()));
             ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
-            ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new ChuanyunMemberMonthCostDTO();
             if (chuanyunPayrollDO != null) {
                 BigDecimal cost = (projectMonth.getStandardWorkHour().divide(monthHour.getStandardWorkHour(), 2, RoundingMode.HALF_UP)).multiply(chuanyunPayrollDO.getWagesPayable());
                 chuanyunSelfCostDO.setCost(cost);
-                chuanyunMemberMonthCostDTO.setCost(cost);
             }else{
                 chuanyunSelfCostDO.setCost(BigDecimal.ZERO);
-                chuanyunMemberMonthCostDTO.setCost(BigDecimal.ZERO);
             }
             chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
             chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
@@ -381,106 +483,12 @@ public class ChuanyunProjectScheduledTask {
             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(),df.format(chuanyunSelfCostDO.getDayLogDate()));
             if (oldSelfDO !=null) {
                 chuanyunSelfCostDao.delete(oldSelfDO);
             }
             chuanyunSelfCostDao.save(chuanyunSelfCostDO);
-            //更新氚云数据
-            chuanyunMemberMonthCostDTO.setProjectId(projectMonth.getProjectId());
-            chuanyunMemberMonthCostDTO.setProjectType(projectMonth.getProjectType());
-            chuanyunMemberMonthCostDTO.setStatus(projectMonth.getStatus());
-            chuanyunMemberMonthCostDTO.setUserId(projectMonth.getUserId());
-            chuanyunMemberMonthCostDTO.setMonthWorkHour(monthHour.getStandardWorkHour());
-            chuanyunMemberMonthCostDTO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
-            chuanyunMemberMonthCostDTO.setWorkHour(projectMonth.getStandardWorkHour());
-            chuanyunMemberMonthCostDTO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
-            try {
-                List<String> matchers = new ArrayList<>();
-                matchers.add("F0000003_2,"+projectMonth.getProjectId());
-                matchers.add("F0000009_2,"+projectMonth.getStatus());
-                matchers.add("F0000002_2,"+projectMonth.getUserId());
-                matchers.add("F0000004_2,"+projectMonth.getDayLogDate().withDayOfMonth(1));
-                var filter= Filter.instance(0,1,true,"And",matchers);
-                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
-                var memberMonthString=objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
-                ChuanyunSaveDTO chuanyunSaveDTO;
-                if (chuanyunFindAllResponse.getReturnData()!=null){
-                    List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                    ChuanyunMemberMonthCostDO firstResult = result.get(0);
-                    chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberMonthCostDO.SCHEMA_CODE,firstResult.getObjectId(),memberMonthString);
-                }else {
-                    chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE,memberMonthString,true);
-                }
-                if(!chuanyunSaveDTO.getSuccessful()){
-                    log.warn("新增项目成员月度成本汇总失败");
-                }
-            } catch (JsonProcessingException | BigSizeException e) {
-                e.printStackTrace();
-                log.warn("########"+projectMonth+"");
-            }
-        });
-    }
-
-    /**
-     * 项目工时汇总
-     */
-    @Scheduled(fixedDelay = 3600000L)
-    private void projectHour() {
-        List<ChuanyunProjectCostDO> list1 = chuanyunProjectCostDao.getProjectCost();
-        list1.forEach(chuanyunProjectCostDO -> {
-            //获取项目实施费用
-            ChuanyunReimbursementAmountDO chuanyunReimbursementAmountDO = chuanyunReimbursementAmountDao.getAmount(chuanyunProjectCostDO.getProjectId());
-            //更新数据库
-            ChuanyunProjectCostDO projectCostDO = new ChuanyunProjectCostDO();
-            projectCostDO.setCost(chuanyunProjectCostDO.getCost());
-            projectCostDO.setProjectType(chuanyunProjectCostDO.getProjectType());
-            projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
-            projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
-            projectCostDO.setStatus(chuanyunProjectCostDO.getStatus());
-            projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
-            if (chuanyunReimbursementAmountDO !=null) {
-                projectCostDO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
-            }
-            ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
-            if (oldProjectDO !=null) {
-                chuanyunProjectCostDao.delete(oldProjectDO);
-            }
-            chuanyunProjectCostDao.save(projectCostDO);
-            try {
-                ChuanyunProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectTotalCostDTO();
-                chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
-                chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
-                chuanyunProjectTotalCostDTO.setCost(chuanyunProjectCostDO.getCost());
-                chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
-                chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
-                chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
-                if (chuanyunReimbursementAmountDO !=null) {
-                    chuanyunProjectTotalCostDTO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
-                }
-                List<String> matchers = new ArrayList<>();
-                matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
-                matchers.add("F0000006_2,"+chuanyunProjectCostDO.getStatus());
-                var filter= Filter.instance(0,1,true,"And",matchers);
-                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectTotalCostDO.SCHEMA_CODE,filter);
-                var projectTotalString=objectMapper.writeValueAsString(chuanyunProjectTotalCostDTO);
-                ChuanyunSaveDTO chuanyunSaveDTO;
-                if (chuanyunFindAllResponse.getReturnData()!=null) {
-                    List<ChuanyunProjectTotalCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                    ChuanyunProjectTotalCostDO firstResult = result.get(0);
-                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectTotalCostDO.SCHEMA_CODE,firstResult.getObjectId(),projectTotalString);
-                }else {
-                    chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectTotalCostDO.SCHEMA_CODE,projectTotalString,true);
-
-                }
-                if(!chuanyunSaveDTO.getSuccessful()){
-                    log.warn("新增项目成本汇总失败");
-                }
-            } catch (JsonProcessingException | BigSizeException e) {
-                log.error(e.getMessage());
-                log.error(""+chuanyunProjectCostDO);
-                e.printStackTrace();
-            }
         });
     }
 
@@ -488,7 +496,7 @@ public class ChuanyunProjectScheduledTask {
      * 人员项目工时汇总
      */
     @Scheduled(fixedDelay = 3600000L)
-    private void monthHour() {
+    private void projectTotalHour() {
         List<ChuanyunMemberCostDO> list = chuanyunMemberCostDao.getMemberCost();
         list.forEach(chuanyunMemberCostDO -> {
             if(StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())||StringUtils.isEmpty(chuanyunMemberCostDO.getUserId())){
@@ -546,47 +554,55 @@ public class ChuanyunProjectScheduledTask {
     }
 
     /**
-     * 员工单日、各个项目工时标准化,并保存
-     * @param chuanyunUserCompanyDO 员工信息
+     * 定时更新氚云数据
      */
-    private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
-        BigDecimal standard = new BigDecimal(8);
-        //每人每个项目每天工时
-        List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
-        selfList.forEach(self->{
-            try{
-                ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
-                chuanyunSelfWorkHourDO.setStatus(self.getStatus());
-                chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
-                chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
-                if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
-                    chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
-                }else{
-                    chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
-                }
-                chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
-                //每人每天工时
-                ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
-                //工时标准化
-                if (chuanyunWorkHourDO != null) {
-                    if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<0) {
-                        chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
-                    }else {
-                        BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
-                        chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
-                    }
-                    ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDate(chuanyunUserCompanyDO.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate());
-                    if (chuanyunSelfWorkHourDO1!=null) {
-                        chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
+    @Scheduled(fixedDelay = 3600000L)
+    private void updateChuanyunStandardWorkHour(){
+        var flag = true;
+        var pageSize = 20;
+        var page = 0;
+        log.info("开始更新日工时汇总");
+        long startTime=Instant.now().getEpochSecond();
+        while(flag) {
+            var pageable= PageRequest.of(page,pageSize);
+            var updateList=chuanyunSelfWorkHourDao.findAll(pageable);
+            if (page<=updateList.getTotalPages()){
+                page += 1;
+                updateList.forEach(chuanyunSelfWorkHourDO -> {
+                    try{
+                        ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
+                        BeanUtils.copyProperties(chuanyunSelfWorkHourDO,chuanyunSelfWorkHourDTO);
+                        List<String> matchers = new ArrayList<>();
+                        matchers.add("F0000001_2,"+chuanyunSelfWorkHourDO.getProjectId());
+                        matchers.add("F0000002_2,"+chuanyunSelfWorkHourDO.getUserId());
+                        matchers.add("F0000003_2,"+chuanyunSelfWorkHourDO.getDayLogDate());
+                        matchers.add("F0000005_2,"+chuanyunSelfWorkHourDO.getProjectType());
+//                    matchers.add("F0000006_2,"+self.getStatus());
+                        var filter= Filter.instance(0,1,true,"And",matchers);
+                        var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
+                        var selfMonthString=objectMapper.writeValueAsString(chuanyunSelfWorkHourDTO);
+                        ChuanyunSaveDTO chuanyunSaveDTO;
+                        if (chuanyunFindAllResponse.getReturnData()!=null){
+                            List<ChuanyunMemberHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                            ChuanyunMemberHourDO firstResult = result.get(0);
+                            chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
+                        }else {
+                            chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberHourDO.SCHEMA_CODE,selfMonthString,true);
+                        }
+                        if(!chuanyunSaveDTO.getSuccessful()){
+                            log.warn("新增工时标准化失败");
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        log.warn("更新标准工时异常");
                     }
-                    chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
-                }
-            }catch (Exception e){
-                log.error(e.getMessage());
-                log.error(""+self);
-                e.printStackTrace();
+                });
+            }else {
+                //流程执行完
+                break;
             }
-        });
+        }
+        log.info("日工时更新花费"+(Instant.now().getEpochSecond()-startTime));
     }
 
     /**
@@ -597,6 +613,8 @@ public class ChuanyunProjectScheduledTask {
         var flag = true;
         var pageSize = 20;
         var page = 0;
+        log.info("开始更新周工时汇总");
+        long startTime=Instant.now().getEpochSecond();
         while(flag) {
             var pageable = PageRequest.of(page, pageSize);
             var updateList = chuanyunWeekMemberHourDao.findAll(pageable);
@@ -647,48 +665,60 @@ public class ChuanyunProjectScheduledTask {
                 break;
             }
         }
+        log.info("周工时更新花费"+(Instant.now().getEpochSecond()-startTime));
     }
 
     /**
-     * 定时更新氚云数据
+     * 人员-项目-月度工时汇总,更新氚云数据
      */
     @Scheduled(fixedDelay = 3600000L)
-    private void updateChuanyunStandardWorkHour(){
+    private void updateChuanyunMonthHour(){
         var flag = true;
         var pageSize = 20;
         var page = 0;
+        log.info("开始更新月工时汇总");
+        long startTime=Instant.now().getEpochSecond();
         while(flag) {
-            var pageable= PageRequest.of(page,pageSize);
-            var updateList=chuanyunSelfWorkHourDao.findAll(pageable);
+            var pageable = PageRequest.of(page, pageSize);
+            var updateList = chuanyunSelfCostDao.findAll(pageable);
             if (page<=updateList.getTotalPages()){
                 page += 1;
-                updateList.forEach(chuanyunSelfWorkHourDO -> {
-                    try{
-                        ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
-                        BeanUtils.copyProperties(chuanyunSelfWorkHourDO,chuanyunSelfWorkHourDTO);
+                updateList.getContent().forEach(chuanyunSelfCostDO -> {
+                    ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new ChuanyunMemberMonthCostDTO();
+
+                    //更新氚云数据
+                    chuanyunMemberMonthCostDTO.setCost(chuanyunSelfCostDO.getCost());
+                    chuanyunMemberMonthCostDTO.setProjectId(chuanyunSelfCostDO.getProjectId());
+                    chuanyunMemberMonthCostDTO.setProjectType(chuanyunSelfCostDO.getProjectType());
+                    chuanyunMemberMonthCostDTO.setStatus(chuanyunSelfCostDO.getStatus());
+                    chuanyunMemberMonthCostDTO.setUserId(chuanyunSelfCostDO.getUserId());
+                    chuanyunMemberMonthCostDTO.setMonthWorkHour(chuanyunSelfCostDO.getMonthlyTotalHour());
+                    chuanyunMemberMonthCostDTO.setDayLogDate(chuanyunSelfCostDO.getDayLogDate());
+                    chuanyunMemberMonthCostDTO.setWorkHour(chuanyunSelfCostDO.getTotalHour());
+                    chuanyunMemberMonthCostDTO.setDepartmentId(chuanyunSelfCostDO.getDepartmentId());
+                    try {
                         List<String> matchers = new ArrayList<>();
-                        matchers.add("F0000001_2,"+chuanyunSelfWorkHourDO.getProjectId());
-                        matchers.add("F0000002_2,"+chuanyunSelfWorkHourDO.getUserId());
-                        matchers.add("F0000003_2,"+chuanyunSelfWorkHourDO.getDayLogDate());
-                        matchers.add("F0000005_2,"+chuanyunSelfWorkHourDO.getProjectType());
-//                    matchers.add("F0000006_2,"+self.getStatus());
+                        matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
+                        matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
+                        matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
+                        matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
                         var filter= Filter.instance(0,1,true,"And",matchers);
-                        var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
-                        var selfMonthString=objectMapper.writeValueAsString(chuanyunSelfWorkHourDTO);
+                        var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
+                        var memberMonthString=objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
                         ChuanyunSaveDTO chuanyunSaveDTO;
                         if (chuanyunFindAllResponse.getReturnData()!=null){
-                            List<ChuanyunMemberHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                            ChuanyunMemberHourDO firstResult = result.get(0);
-                            chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
+                            List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                            ChuanyunMemberMonthCostDO firstResult = result.get(0);
+                            chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberMonthCostDO.SCHEMA_CODE,firstResult.getObjectId(),memberMonthString);
                         }else {
-                            chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberHourDO.SCHEMA_CODE,selfMonthString,true);
+                            chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE,memberMonthString,true);
                         }
                         if(!chuanyunSaveDTO.getSuccessful()){
-                            log.warn("新增工时标准化失败");
+                            log.warn("新增项目成员月度成本汇总失败");
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
-                        log.warn("更新标准工时异常");
+                        log.warn("########"+chuanyunSelfCostDO+"");
                     }
                 });
             }else {
@@ -696,6 +726,7 @@ public class ChuanyunProjectScheduledTask {
                 break;
             }
         }
+        log.info("月工时更新花费"+(Instant.now().getEpochSecond()-startTime));
     }
 }