|
@@ -2,13 +2,10 @@ package com.galaxis.manatee.task;
|
|
|
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
-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.ChuanyunFindAllBizDTO;
|
|
|
import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
-import com.galaxis.manatee.service.DataArcherService;
|
|
|
import com.galaxis.manatee.service.LogStandardService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
@@ -33,25 +30,18 @@ public class WorkHourStatisticsRecently {
|
|
|
private final ChuanyunLogDao chuanyunLogDao;
|
|
|
private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
|
|
|
private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
|
- private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
|
- private final ObjectMapper objectMapper=new ObjectMapper();
|
|
|
private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
|
- private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
|
private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
|
|
|
private final LogStandardService logStandardService;
|
|
|
- private final DataArcherService dataArcherService;
|
|
|
|
|
|
- public WorkHourStatisticsRecently(DataArcherService dataArcherService,ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
|
|
|
+ public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
this.chuanyunLogDao = chuanyunLogDao;
|
|
|
this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
|
this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
|
- this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
|
- this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
|
this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
|
|
|
this.logStandardService = logStandardService;
|
|
|
- this.dataArcherService=dataArcherService;
|
|
|
}
|
|
|
|
|
|
@Scheduled(fixedDelay = 3600000L)
|
|
@@ -162,7 +152,7 @@ public class WorkHourStatisticsRecently {
|
|
|
* 同步最近一个月每日工时
|
|
|
*/
|
|
|
public void standardWorkHour() {
|
|
|
- log.info("开始每日工时标准化");
|
|
|
+ log.info("开始最近每日工时标准化");
|
|
|
var pageSize = 20;
|
|
|
var page = 0;
|
|
|
long startTime=Instant.now().getEpochSecond();
|
|
@@ -179,7 +169,7 @@ public class WorkHourStatisticsRecently {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- log.info("每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
+ log.info("最近每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -188,37 +178,17 @@ public class WorkHourStatisticsRecently {
|
|
|
private void standardWeeklyWorkHour() {
|
|
|
long start=Instant.now().getEpochSecond();
|
|
|
//更新数据库
|
|
|
- log.info("开始周工时标准化");
|
|
|
+ log.info("开始最近周工时标准化");
|
|
|
List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourRecently();
|
|
|
- list.forEach(chuanyunWeekMemberHourDO -> {
|
|
|
- try{
|
|
|
- if (chuanyunWeekMemberHourDO!=null){
|
|
|
- ChuanyunWeekMemberHourDO weekMemberHourDO = ChuanyunWeekMemberHourDO.fromChuanyunWeekMemberHourDO(chuanyunWeekMemberHourDO);
|
|
|
- ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType(),chuanyunWeekMemberHourDO.getYear());
|
|
|
- if (oldWeekHour != null) {
|
|
|
- chuanyunWeekMemberHourDao.delete(oldWeekHour);
|
|
|
- }
|
|
|
- chuanyunWeekMemberHourDao.save(weekMemberHourDO);
|
|
|
- //搜索是否还有处于审批中的数据
|
|
|
- ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getProjectType());
|
|
|
- if (processWeekHour == null){
|
|
|
- chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),"2",chuanyunWeekMemberHourDO.getProjectType());
|
|
|
- //同时删除氚云钟数据
|
|
|
- dataArcherService.deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunWeekMemberHourDO.getProjectId(),"F0000002",chuanyunWeekMemberHourDO.getUserId(),"F0000008",chuanyunWeekMemberHourDO.getYear(),"","","F0000006",chuanyunWeekMemberHourDO.getWeek(),"F0000003",chuanyunWeekMemberHourDO.getProjectType());
|
|
|
- }
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- log.error(e.getMessage()+"周工时标准化异常");
|
|
|
- }
|
|
|
- });
|
|
|
- log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
+ logStandardService.generateWeekMemberHourByWeekMemberHourList(list);
|
|
|
+ log.info("最近周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 单月工时汇总
|
|
|
*/
|
|
|
private void standardMonthlyWorkHour() {
|
|
|
- log.info("开始月工时汇总");
|
|
|
+ log.info("开始最近月工时汇总");
|
|
|
var flag = true;
|
|
|
var pageSize = 20;
|
|
|
var page = 0;
|
|
@@ -241,75 +211,9 @@ public class WorkHourStatisticsRecently {
|
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
|
*/
|
|
|
private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
|
- //删除上一次状态为审核中,但本次已经审核通过的数据
|
|
|
- chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS,chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
|
|
|
- List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList=chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(
|
|
|
- chuanyunSelfCostDO.getUserId(),
|
|
|
- chuanyunSelfCostDO.getProjectId(),
|
|
|
- chuanyunSelfCostDO.getProjectType(),
|
|
|
- ChuanYunConstant.IN_PROCESS,
|
|
|
- chuanyunSelfCostDO.getDayLogDate(),
|
|
|
- chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
|
|
|
- //如果没有仍在审批中的每日工时,则将该月、该项目的审核中的月工时统计删除,manatee数据库与氚云
|
|
|
- if(chuanyunSelfWorkHourList.size()==0){
|
|
|
- //删除manatee中的在审核工时
|
|
|
- chuanyunSelfCostDao.delete(chuanyunSelfCostDO);
|
|
|
- //删除氚云中的在审核工时
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
|
- matchers.add("F0000009_2,"+ChuanYunConstant.IN_PROCESS);
|
|
|
- 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);
|
|
|
- try {
|
|
|
- ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
- List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
- result.forEach(chuanyunMemberMonthCostDO -> {
|
|
|
- try{
|
|
|
- chuanYunManager.delete(ChuanyunMemberMonthCostDO.SCHEMA_CODE,chuanyunMemberMonthCostDO.getObjectId());
|
|
|
- }catch (Exception e){
|
|
|
- log.error("逐条删除失败"+e.getMessage());
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error("删除已审核通过的月度数据汇总失败");
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- //每月每项目工时,按月-项目-用户分组统计标准工时
|
|
|
- List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHourRecently(chuanyunUserCompanyDO.getUserId());
|
|
|
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- list.forEach(projectMonth->{
|
|
|
- //获取人员-月度-相同工时状态标准工时汇总
|
|
|
- ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()),projectMonth.getStatus());
|
|
|
- ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
|
|
|
- chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
|
- if (monthHour!=null){
|
|
|
- chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
|
- }
|
|
|
- chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
|
- chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
|
|
|
- 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(),
|
|
|
- chuanyunSelfCostDO.getProjectType(),
|
|
|
- df.format(chuanyunSelfCostDO.getDayLogDate()),
|
|
|
- projectMonth.getStatus());
|
|
|
- if (oldSelfDO !=null) {
|
|
|
- chuanyunSelfCostDao.delete(oldSelfDO);
|
|
|
- }
|
|
|
- chuanyunSelfCostDao.save(chuanyunSelfCostDO);
|
|
|
- });
|
|
|
+ logStandardService.standardSelfCostByUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private String getCharacters(String str){
|
|
|
String reg = "[^\u4e00-\u9fa5]";
|
|
|
str = str.replaceAll(reg, " ");
|
|
@@ -324,4 +228,5 @@ public class WorkHourStatisticsRecently {
|
|
|
return str;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|