|
@@ -1,9 +1,7 @@
|
|
package com.galaxis.manatee.service;
|
|
package com.galaxis.manatee.service;
|
|
|
|
|
|
import com.galaxis.manatee.constant.ChuanYunConstant;
|
|
import com.galaxis.manatee.constant.ChuanYunConstant;
|
|
-import com.galaxis.manatee.dao.ChuanyunGroupProjectDao;
|
|
|
|
-import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
|
|
|
|
-import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
|
|
|
|
|
|
+import com.galaxis.manatee.dao.*;
|
|
import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
@@ -12,6 +10,7 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
|
+import java.time.Instant;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -27,11 +26,17 @@ public class LogStandardService {
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
|
|
private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
|
|
|
|
+ private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
|
|
+ private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
|
|
+ private final DataArcherService dataArcherService;
|
|
|
|
|
|
- public LogStandardService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao) {
|
|
|
|
|
|
+ public LogStandardService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, DataArcherService dataArcherService) {
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
|
|
+ this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
|
|
+ this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
|
|
+ this.dataArcherService = dataArcherService;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -40,23 +45,36 @@ public class LogStandardService {
|
|
* @param isRecent 是否只标准化最近一个月的数据
|
|
* @param isRecent 是否只标准化最近一个月的数据
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
*/
|
|
*/
|
|
|
|
+ @Async
|
|
public void standardHourByUserCompanyAndIsRecent(ChuanyunUserCompanyDO chuanyunUserCompanyDO, boolean isRecent) {
|
|
public void standardHourByUserCompanyAndIsRecent(ChuanyunUserCompanyDO chuanyunUserCompanyDO, boolean isRecent) {
|
|
if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getUserId())) {
|
|
if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getUserId())) {
|
|
|
|
+ long start = Instant.now().getEpochSecond();
|
|
//从日志原始数据中获取每人每个项目每天工时。
|
|
//从日志原始数据中获取每人每个项目每天工时。
|
|
//由isRecent判断是否只获取最近30天的数据
|
|
//由isRecent判断是否只获取最近30天的数据
|
|
List<ChuanyunWorkHourDO> selfList = isRecent ? chuanyunWorkHourDao.getSelfWorkHourRecently(chuanyunUserCompanyDO.getUserId()) : chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
|
|
List<ChuanyunWorkHourDO> selfList = isRecent ? chuanyunWorkHourDao.getSelfWorkHourRecently(chuanyunUserCompanyDO.getUserId()) : chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
|
|
this.generateSelfWorkHourByWorkHourList(selfList);
|
|
this.generateSelfWorkHourByWorkHourList(selfList);
|
|
|
|
+ log.info("每日工时标准化" + chuanyunUserCompanyDO.getUserName() + (Instant.now().getEpochSecond() - start) + "秒");
|
|
}else {
|
|
}else {
|
|
log.warn("用户信息中userId缺失");
|
|
log.warn("用户信息中userId缺失");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 标准化所有周工时信息
|
|
|
|
+ */
|
|
|
|
+ @Async
|
|
|
|
+ public void standardAllWeekMemberHour(){
|
|
|
|
+ long start=Instant.now().getEpochSecond();
|
|
|
|
+ chuanyunUserCompanyDao.findAll().forEach(chuanyunUserCompanyDO -> this.standardWeekMemberHourByUserId(chuanyunUserCompanyDO.getUserId()));
|
|
|
|
+ log.info("标准化所有日工时耗时"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 根据用户Id标准化某个人的日工时
|
|
* 根据用户Id标准化某个人的日工时
|
|
* @param userId 用户Id
|
|
* @param userId 用户Id
|
|
*/
|
|
*/
|
|
@Async
|
|
@Async
|
|
- public void standardHourByUserId(String userId){
|
|
|
|
|
|
+ public void standardSelfWorkHourByUserId(String userId){
|
|
if (!StringUtils.isEmpty(userId)) {
|
|
if (!StringUtils.isEmpty(userId)) {
|
|
//从日志原始数据中获取每人每个项目每天工时。
|
|
//从日志原始数据中获取每人每个项目每天工时。
|
|
//由isRecent判断是否只获取最近30天的数据
|
|
//由isRecent判断是否只获取最近30天的数据
|
|
@@ -68,6 +86,23 @@ public class LogStandardService {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 根据用户Id标准化某个人的工时
|
|
|
|
+ * @param userId 用户Id
|
|
|
|
+ */
|
|
|
|
+ @Async
|
|
|
|
+ public void standardWeekMemberHourByUserId(String userId){
|
|
|
|
+ if (!StringUtils.isEmpty(userId)) {
|
|
|
|
+ long start=Instant.now().getEpochSecond();
|
|
|
|
+ //更新数据库
|
|
|
|
+ List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourByUserId(userId);
|
|
|
|
+ this.generateWeekMemberHourByWeekMemberHourList(list);
|
|
|
|
+ log.info(userId+"统一周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
|
+ }else {
|
|
|
|
+ log.warn("用户信息中userId缺失");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 根据日工时列表生成
|
|
* 根据日工时列表生成
|
|
* @param updateList 待更新列表
|
|
* @param updateList 待更新列表
|
|
*/
|
|
*/
|
|
@@ -97,10 +132,31 @@ public class LogStandardService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 根据周工时列表
|
|
* 根据周工时列表
|
|
- * @param updateList
|
|
|
|
|
|
+ * @param updateList 待更新的周工时列表
|
|
*/
|
|
*/
|
|
private void generateWeekMemberHourByWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
|
|
private void generateWeekMemberHourByWeekMemberHourList(List<ChuanyunWeekMemberHourDO> updateList){
|
|
-
|
|
|
|
|
|
+ long start= Instant.now().getEpochSecond();
|
|
|
|
+ updateList.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()+"周工时标准化异常");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|