|
@@ -1,23 +1,15 @@
|
|
|
package com.galaxis.manatee.task;
|
|
|
|
|
|
-import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
-import com.galaxis.manatee.dao.*;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
-import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
|
|
|
+import com.galaxis.manatee.service.LogDownloadService;
|
|
|
import com.galaxis.manatee.service.LogStandardService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.time.Instant;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
-import java.time.temporal.ChronoUnit;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -26,19 +18,13 @@ import java.util.List;
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class WorkHourStatisticsRecently {
|
|
|
- private final ChuanYunManager chuanYunManager;
|
|
|
- private final ChuanyunLogDao chuanyunLogDao;
|
|
|
- private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
|
|
|
+ private final LogDownloadService logDownloadService;
|
|
|
private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
|
- private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
|
|
|
private final LogStandardService logStandardService;
|
|
|
|
|
|
- public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao, LogStandardService logStandardService) {
|
|
|
- this.chuanYunManager = chuanYunManager;
|
|
|
- this.chuanyunLogDao = chuanyunLogDao;
|
|
|
- this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
|
+ public WorkHourStatisticsRecently(LogDownloadService logDownloadService, ChuanyunUserCompanyDao chuanyunUserCompanyDao, LogStandardService logStandardService) {
|
|
|
+ this.logDownloadService = logDownloadService;
|
|
|
this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
|
- this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
|
|
|
this.logStandardService = logStandardService;
|
|
|
}
|
|
|
|
|
@@ -54,96 +40,7 @@ public class WorkHourStatisticsRecently {
|
|
|
* 更新最近一个月的日志信息
|
|
|
*/
|
|
|
public void dayLog() {
|
|
|
- var objectMapper = new ObjectMapper();
|
|
|
- var start = 0;
|
|
|
- var totalCount = 0L;
|
|
|
- var flag = true;
|
|
|
- var pageSize=100;
|
|
|
- List<String> matchersString=new ArrayList<>();
|
|
|
- //由于需要统计流程中的日志,在日志数据同步时将状态为2的数据一并统计
|
|
|
- matchersString.add("Status_6,[1;2;3]");
|
|
|
- //获取当前时间30天前日期
|
|
|
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- now = now.minus(30, ChronoUnit.DAYS);
|
|
|
- matchersString.add("logDate_1,"+df.format(now));
|
|
|
- while (flag) {
|
|
|
- long startTime= Instant.now().getEpochSecond();
|
|
|
- try {
|
|
|
- //从氚云查询数据
|
|
|
- var filter= Filter.instance(start,start+pageSize,true,Filter.AND,matchersString);
|
|
|
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunLogDO.SCHEMA_CODE, filter);
|
|
|
- if (chuanyunFindAllResponse.getReturnData() == null) {
|
|
|
- flag = false;
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
|
|
|
- start += pageSize;
|
|
|
- } else {
|
|
|
- flag = false;
|
|
|
- }
|
|
|
- //转化为POJO
|
|
|
- List<ChuanyunLogDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
- });
|
|
|
- result.forEach(chuanyunLogDO -> {
|
|
|
- if(chuanyunLogDO.getDayLogList()==null||chuanyunLogDO.getDayLogList().size()==0){
|
|
|
- chuanyunLogDO.setDayLogList(new ArrayList<>());
|
|
|
- log.warn(chuanyunLogDO+"");
|
|
|
- log.warn("异常数据");
|
|
|
- }else{
|
|
|
- //如果有重复就删除
|
|
|
- chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(chuanyunLogDao::delete);
|
|
|
- //根据projectId获取code,如果是生产项目,则不用处理
|
|
|
- //针对前期测试数据,可能出现日志为空的情况,跳过不处理
|
|
|
- chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
|
|
|
- //离职人员补全用户Id及部门ID
|
|
|
- if (StringUtils.isEmpty(chuanyunLogDO.getUserId())){
|
|
|
- var name="";
|
|
|
- if (StringUtils.isEmpty(chuanyunDayLog.getContent())){
|
|
|
- name=chuanyunLogDO.getName();
|
|
|
- }else {
|
|
|
- name=chuanyunDayLog.getContent();
|
|
|
- }
|
|
|
- chuanyunLogDO.setUserId(getCharacters(name));
|
|
|
- ChuanyunUserDepartmentNameDO chuanyunUserDepartmentNameDO = chuanyunUserDepartmentNameDao.findByUserName(chuanyunLogDO.getUserId());
|
|
|
- if (chuanyunUserDepartmentNameDO!=null){
|
|
|
- chuanyunLogDO.setDepartmentName(chuanyunUserDepartmentNameDO.getDepartmentName());
|
|
|
- }
|
|
|
- }else {
|
|
|
- ChuanyunUserCompanyDO chuanyunUserCompanyDO = chuanyunUserCompanyDao.findByUserId(chuanyunLogDO.getUserObject().getObjectId());
|
|
|
- if (chuanyunUserCompanyDO!=null){
|
|
|
- chuanyunLogDO.setDepartmentName(getDepartmentName(chuanyunUserCompanyDO.getDepartment()));
|
|
|
- }
|
|
|
- }
|
|
|
- try{
|
|
|
- if(!"生产项目".equals(chuanyunDayLog.getProjectType())&& StringUtils.isEmpty(chuanyunDayLog.getProjectId())){
|
|
|
- log.info(chuanyunLogDO+"");
|
|
|
- }else if(!"生产项目".equals(chuanyunDayLog.getProjectType())){
|
|
|
- ChuanyunGroupProjectDO chuanyunGroupProjectDO=chuanyunGroupProjectDao.findById(chuanyunDayLog.getProjectId()).orElseThrow();
|
|
|
- chuanyunDayLog.setProjectCode(chuanyunGroupProjectDO.getProjectCode());
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- log.warn(chuanyunDayLog+"");
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- //处理项目userId
|
|
|
- if(chuanyunLogDO.getUserObject()!=null){
|
|
|
- chuanyunLogDO.setUserId(chuanyunLogDO.getUserObject().getObjectId());
|
|
|
- }
|
|
|
- });
|
|
|
- //获取项目总数
|
|
|
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
|
|
|
- //保存
|
|
|
- chuanyunLogDao.saveAll(result);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error(e.getMessage());
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- log.info("日志100条保存时间"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
- }
|
|
|
- log.info("最近一月历史日志信息保存" + totalCount);
|
|
|
+ logDownloadService.saveChuanyunLogDO(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -202,20 +99,4 @@ public class WorkHourStatisticsRecently {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- private String getCharacters(String str){
|
|
|
- String reg = "[^\u4e00-\u9fa5]";
|
|
|
- str = str.replaceAll(reg, " ");
|
|
|
- return str.trim();
|
|
|
- }
|
|
|
-
|
|
|
- private String getDepartmentName(String str){
|
|
|
- if (str.contains("/")){
|
|
|
- String[] department = str.split("/");
|
|
|
- return department[department.length-1];
|
|
|
- }else {
|
|
|
- return str;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
}
|