|
@@ -1,6 +1,5 @@
|
|
|
package com.galaxis.manatee.task;
|
|
|
|
|
|
-import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.galaxis.manatee.constant.ChuanYunConstant;
|
|
@@ -9,11 +8,9 @@ import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
|
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.exception.BigSizeException;
|
|
|
import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
import com.galaxis.manatee.service.LogStandardService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -181,76 +178,9 @@ public class WorkHourStatisticsRecently {
|
|
|
}
|
|
|
}
|
|
|
log.info("每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
- updateChuanyunStandardWorkHour();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 将标准化工时更新到氚云中
|
|
|
- */
|
|
|
- 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.getRecentlyDayHour(pageable);
|
|
|
- if (page<=updateList.getTotalPages()){
|
|
|
- page += 1;
|
|
|
- updateList.forEach(chuanyunSelfWorkHourDO -> {
|
|
|
- try{
|
|
|
- ChuanyunUserCompanyDO chuanyunUserCompanyDO =chuanyunUserCompanyDao.findByUserId(chuanyunSelfWorkHourDO.getUserId());
|
|
|
- WorkHourStatistics.ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new WorkHourStatistics.ChuanyunSelfWorkHourDTO();
|
|
|
- BeanUtils.copyProperties(chuanyunSelfWorkHourDO,chuanyunSelfWorkHourDTO);
|
|
|
- if (chuanyunUserCompanyDO!=null){
|
|
|
- chuanyunSelfWorkHourDTO.setUserName(chuanyunUserCompanyDO.getUserName());
|
|
|
- chuanyunSelfWorkHourDTO.setBg(chuanyunUserCompanyDO.getBg());
|
|
|
- }else{
|
|
|
- chuanyunSelfWorkHourDTO.setUserName(chuanyunSelfWorkHourDTO.getUserId());
|
|
|
- }
|
|
|
- if (chuanyunUserCompanyDO!=null){
|
|
|
- chuanyunSelfWorkHourDTO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
|
|
|
- }
|
|
|
- chuanyunSelfWorkHourDTO.setDepartmentName(chuanyunSelfWorkHourDO.getDepartmentName());
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- if (!StringUtils.isEmpty(chuanyunSelfWorkHourDO.getProjectId())&&!chuanyunSelfWorkHourDO.getProjectId().equals(ChuanYunConstant.PRODUCTION_PROJECT_ID)){
|
|
|
- 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("更新标准工时异常");
|
|
|
- }
|
|
|
- });
|
|
|
- }else {
|
|
|
- //流程执行完
|
|
|
- flag=false;
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("日工时更新花费"+(Instant.now().getEpochSecond()-startTime));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
* 人员-项目-周度工时汇总
|
|
|
*/
|
|
|
private void standardWeeklyWorkHour() {
|
|
@@ -280,75 +210,9 @@ public class WorkHourStatisticsRecently {
|
|
|
}
|
|
|
});
|
|
|
log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
- updateChuanyunWeekHour();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 人员-项目-周度工时汇总,更新氚云数据
|
|
|
- */
|
|
|
- private void updateChuanyunWeekHour(){
|
|
|
- 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.getRecentlyWeekHour(pageable);
|
|
|
- if (page<=updateList.getTotalPages()){
|
|
|
- page += 1;
|
|
|
- updateList.getContent().forEach(chuanyunWeekMemberHourDO -> {
|
|
|
- //更新氚云
|
|
|
- try {
|
|
|
- String departmentId=chuanyunUserCompanyDao.findByUserId(chuanyunWeekMemberHourDO.getUserId()).getDepartmentId();
|
|
|
- WorkHourStatistics.ChuanyunProjectMemberWeekHourDTO chuanyunProjectMemberWeekHourDTO = new WorkHourStatistics.ChuanyunProjectMemberWeekHourDTO();
|
|
|
- chuanyunProjectMemberWeekHourDTO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setUserId(chuanyunWeekMemberHourDO.getUserId());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setWeek(chuanyunWeekMemberHourDO.getWeek());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setTotalHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
|
|
|
-// if (chuanyunProjectMemberWeekHourDTO.getTotalHour()!=null){
|
|
|
-// chuanyunProjectMemberWeekHourDTO.setPersonDays(chuanyunWeekMemberHourDO.getStandardWorkHour().divide(standard,2,RoundingMode.HALF_UP));
|
|
|
-// }
|
|
|
- chuanyunProjectMemberWeekHourDTO.setHourStatus(chuanyunWeekMemberHourDO.getStatus());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setYear(chuanyunWeekMemberHourDO.getYear());
|
|
|
- chuanyunProjectMemberWeekHourDTO.setDepartmentId(departmentId);
|
|
|
-
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- matchers.add("F0000001_2,"+chuanyunWeekMemberHourDO.getProjectId());
|
|
|
- matchers.add("F0000002_2,"+chuanyunWeekMemberHourDO.getUserId());
|
|
|
- matchers.add("F0000006_2,"+chuanyunWeekMemberHourDO.getWeek());
|
|
|
- matchers.add("F0000008_2,"+chuanyunWeekMemberHourDO.getYear());
|
|
|
- matchers.add("F0000003_2,"+chuanyunWeekMemberHourDO.getProjectType());
|
|
|
- matchers.add("F0000007_2,"+chuanyunWeekMemberHourDO.getStatus());
|
|
|
- var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,filter);
|
|
|
- var selfMonthString=objectMapper.writeValueAsString(chuanyunProjectMemberWeekHourDTO);
|
|
|
- ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null) {
|
|
|
- List<ChuanyunProjectMemberWeekHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
- ChuanyunProjectMemberWeekHourDO firstResult = result.get(0);
|
|
|
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
|
|
|
- }else {
|
|
|
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,selfMonthString,true);
|
|
|
- }
|
|
|
- if(!chuanyunSaveDTO.getSuccessful()){
|
|
|
- log.warn("新增人员项目周度工时失败");
|
|
|
- }
|
|
|
- } catch (JsonProcessingException | BigSizeException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- });
|
|
|
- }else {
|
|
|
- //流程执行完
|
|
|
- flag=false;
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("周工时更新花费"+(Instant.now().getEpochSecond()-startTime));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
* 单月工时汇总
|
|
|
*/
|
|
|
private void standardMonthlyWorkHour() {
|
|
@@ -368,7 +232,6 @@ public class WorkHourStatisticsRecently {
|
|
|
flag = false;
|
|
|
}
|
|
|
}
|
|
|
- updateChuanyunMonthHour();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -444,70 +307,6 @@ public class WorkHourStatisticsRecently {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 人员-项目-月度工时汇总,更新氚云数据
|
|
|
- */
|
|
|
- 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 = chuanyunSelfCostDao.getRecentlyMonthHour(pageable);
|
|
|
- if (page<=updateList.getTotalPages()){
|
|
|
- page += 1;
|
|
|
- updateList.getContent().forEach(chuanyunSelfCostDO -> {
|
|
|
- WorkHourStatistics.ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new WorkHourStatistics.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());
|
|
|
- if (!StringUtils.isEmpty(chuanyunSelfCostDO.getProjectId())){
|
|
|
- try {
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
|
- matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
|
|
|
- matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
- matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
|
|
|
- matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
|
- 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 (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.warn("########"+chuanyunSelfCostDO+"");
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }else {
|
|
|
- //流程执行完
|
|
|
- flag=false;
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("月工时更新花费"+(Instant.now().getEpochSecond()-startTime));
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 删除状态为审核中数据
|
|
|
*/
|