|
@@ -27,6 +27,9 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
+/**
|
|
|
+ * @author kxuan
|
|
|
+ */
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class WorkHourStatisticsRecently {
|
|
@@ -41,10 +44,9 @@ public class WorkHourStatisticsRecently {
|
|
|
private final ObjectMapper objectMapper=new ObjectMapper();
|
|
|
private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
|
private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
|
- private final ChuanyunProjectCostDao chuanyunProjectCostDao;
|
|
|
private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
|
|
|
|
|
|
- public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao) {
|
|
|
+ public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao) {
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
this.chuanyunLogDao = chuanyunLogDao;
|
|
|
this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
@@ -53,7 +55,6 @@ public class WorkHourStatisticsRecently {
|
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
|
this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
|
- this.chuanyunProjectCostDao = chuanyunProjectCostDao;
|
|
|
this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
|
|
|
}
|
|
|
|
|
@@ -82,7 +83,7 @@ public class WorkHourStatisticsRecently {
|
|
|
now = now.minus(30, ChronoUnit.DAYS);
|
|
|
matchersString.add("logDate_1,"+df.format(now));
|
|
|
while (flag) {
|
|
|
- Long startTime= Instant.now().getEpochSecond();
|
|
|
+ long startTime= Instant.now().getEpochSecond();
|
|
|
try {
|
|
|
//从氚云查询数据
|
|
|
var filter= Filter.instance(start,start+pageSize,true,Filter.AND,matchersString);
|
|
@@ -106,9 +107,7 @@ public class WorkHourStatisticsRecently {
|
|
|
log.warn("异常数据");
|
|
|
}else{
|
|
|
//如果有重复就删除
|
|
|
- chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(toDelete -> {
|
|
|
- chuanyunLogDao.delete(toDelete);
|
|
|
- });
|
|
|
+ chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(chuanyunLogDao::delete);
|
|
|
//根据projectId获取code,如果是生产项目,则不用处理
|
|
|
//针对前期测试数据,可能出现日志为空的情况,跳过不处理
|
|
|
chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
|
|
@@ -167,22 +166,18 @@ public class WorkHourStatisticsRecently {
|
|
|
*/
|
|
|
public void standardWorkHour() {
|
|
|
log.info("开始每日工时标准化");
|
|
|
- var flag = true;
|
|
|
var pageSize = 20;
|
|
|
var page = 0;
|
|
|
long startTime=Instant.now().getEpochSecond();
|
|
|
- while(flag) {
|
|
|
+ while(true) {
|
|
|
var pageable= PageRequest.of(page,pageSize);
|
|
|
var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
|
|
|
if (page<=chuanyunUserCompanyList.getTotalPages()){
|
|
|
page += 1;
|
|
|
//逐个将员工每天工时进行统计汇总
|
|
|
List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
|
- userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
|
|
|
- long start= Instant.now().getEpochSecond();
|
|
|
- //工时标准化
|
|
|
- standardHour(chuanyunUserCompanyDO);
|
|
|
- });
|
|
|
+ //工时标准化
|
|
|
+ userCompanyDOList.forEach(this::standardHour);
|
|
|
}else {
|
|
|
break;
|
|
|
}
|
|
@@ -196,7 +191,6 @@ public class WorkHourStatisticsRecently {
|
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
|
*/
|
|
|
private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
|
-
|
|
|
BigDecimal standard = new BigDecimal(8);
|
|
|
//每人每个项目每天工时
|
|
|
List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHourRecently(chuanyunUserCompanyDO.getUserId());
|
|
@@ -205,7 +199,19 @@ public class WorkHourStatisticsRecently {
|
|
|
ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
|
chuanyunSelfWorkHourDO.setStatus(self.getStatus());
|
|
|
chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
+ //2021年3月3日添加,使用ChuanyunGroupProject中实际的项目类型来替代日志中的项目类型,防止出现项目类型错误的情况
|
|
|
chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
|
+ try{
|
|
|
+ var chuanyunGroupProject=chuanyunGroupProjectDao.findByObjectId(self.getProjectId());
|
|
|
+ if(chuanyunGroupProject==null){
|
|
|
+ throw new Exception("没有找到对应的项目");
|
|
|
+ }
|
|
|
+ //如果找到相应的项目,则使用项目实际的项目类型
|
|
|
+ chuanyunSelfWorkHourDO.setProjectType(chuanyunGroupProject.getProjectType());
|
|
|
+ }catch (Exception e){
|
|
|
+ //没有找到对应项目,使用原项目类型
|
|
|
+ chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
|
+ }
|
|
|
chuanyunSelfWorkHourDO.setDepartmentName(self.getDepartmentName());
|
|
|
if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
|
|
|
chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
|
|
@@ -571,8 +577,6 @@ public class WorkHourStatisticsRecently {
|
|
|
|
|
|
/**
|
|
|
* 删除状态为审核中数据
|
|
|
- * @param schemaCode
|
|
|
- * @param
|
|
|
*/
|
|
|
public void deleteExamineStatus(String schemaCode,String statusCode,String projectCode,String projectId,String userCode,String userId,String yearCode,String year,String monthCode,String month,String weekCode,String week,String typeCode,String projectType) {
|
|
|
try {
|
|
@@ -600,9 +604,7 @@ public class WorkHourStatisticsRecently {
|
|
|
List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
result.forEach(basicDO -> {
|
|
|
ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
|
|
|
- if(chuanyunSaveDTO.getSuccessful()){
|
|
|
-// log.info("删除状态为审核中数据成功");
|
|
|
- }else{
|
|
|
+ if(!chuanyunSaveDTO.getSuccessful()){
|
|
|
log.warn("删除状态为审核中数据失败");
|
|
|
}
|
|
|
});
|