|
@@ -41,8 +41,9 @@ public class WorkHourStatisticsRecently {
|
|
|
private final ObjectMapper objectMapper=new ObjectMapper();
|
|
|
private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
|
private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
|
+ private final ChuanyunProjectCostDao chuanyunProjectCostDao;
|
|
|
|
|
|
- public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao) {
|
|
|
+ public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao) {
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
this.chuanyunLogDao = chuanyunLogDao;
|
|
|
this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
@@ -51,6 +52,7 @@ public class WorkHourStatisticsRecently {
|
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
|
this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
|
+ this.chuanyunProjectCostDao = chuanyunProjectCostDao;
|
|
|
}
|
|
|
|
|
|
@Scheduled(fixedDelay = 3600000L)
|
|
@@ -59,6 +61,7 @@ public class WorkHourStatisticsRecently {
|
|
|
standardWorkHour();
|
|
|
standardWeeklyWorkHour();
|
|
|
standardMonthlyWorkHour();
|
|
|
+ projectHour();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -474,6 +477,64 @@ public class WorkHourStatisticsRecently {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void projectHour() {
|
|
|
+ List<ChuanyunProjectCostDO> list1 = chuanyunProjectCostDao.getProjectCost();
|
|
|
+ log.info("开始更新项目汇总工时");
|
|
|
+ list1.forEach(chuanyunProjectCostDO -> {
|
|
|
+ //更新数据库
|
|
|
+ BigDecimal standard = new BigDecimal(8);
|
|
|
+ if (chuanyunProjectCostDO.getTotalHour()!=null){
|
|
|
+ chuanyunProjectCostDO.setPersonDays(chuanyunProjectCostDO.getTotalHour().divide(standard,2,RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectIdAndProjectTypeAndStatus(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType(),chuanyunProjectCostDO.getStatus());
|
|
|
+ if (oldProjectDO !=null) {
|
|
|
+ chuanyunProjectCostDao.delete(oldProjectDO);
|
|
|
+ }
|
|
|
+ chuanyunProjectCostDao.save(chuanyunProjectCostDO);
|
|
|
+ //搜索是否有审批中的数据
|
|
|
+ ChuanyunProjectCostDO processDO = chuanyunProjectCostDao.getProcessProjectCost(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType());
|
|
|
+ if (processDO==null){
|
|
|
+ chuanyunProjectCostDao.deleteByProjectIdAndProjectTypeAndStatus(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType(),"2");
|
|
|
+ deleteExamineStatus(ChuanyunProjectTotalCostDO.SCHEMA_CODE,"F0000006","F0000001",chuanyunProjectCostDO.getProjectId(),"","","","","","","","","F0000004",chuanyunProjectCostDO.getProjectType());
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ ChuanyunProjectScheduledTask.ProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectScheduledTask.ProjectTotalCostDTO();
|
|
|
+ chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
|
|
|
+ chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
+ chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
|
|
|
+ chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
+ chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
+ if (!StringUtils.isEmpty(chuanyunProjectCostDO.getProjectId()) && !StringUtils.isEmpty(chuanyunProjectCostDO.getProjectType())){
|
|
|
+ List<String> matchers = new ArrayList<>();
|
|
|
+ matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
|
|
|
+ matchers.add("F0000004_2,"+chuanyunProjectCostDO.getProjectType());
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ log.info("项目工时汇总更新完成"+list1.size());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 人员-项目-月度工时汇总,更新氚云数据
|
|
|
*/
|