|
@@ -1,30 +1,19 @@
|
|
|
package com.galaxis.manatee.task;
|
|
|
|
|
|
-import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
-import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
-import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.galaxis.manatee.constant.ChuanYunConstant;
|
|
|
-import com.galaxis.manatee.dao.ChuanyunMemberCostDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
-import com.galaxis.manatee.exception.BigSizeException;
|
|
|
-import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWorkHourDO;
|
|
|
import com.galaxis.manatee.service.LogService;
|
|
|
import com.galaxis.manatee.service.LogStandardService;
|
|
|
-import lombok.Data;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -35,21 +24,16 @@ import java.util.List;
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class WorkHourStatistics {
|
|
|
- private final ObjectMapper objectMapper = new ObjectMapper();
|
|
|
- private final ChuanYunManager chuanYunManager;
|
|
|
private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
|
- private final ChuanyunMemberCostDao chuanyunMemberCostDao;
|
|
|
private final LogStandardService logStandardService;
|
|
|
private final LogService logService;
|
|
|
|
|
|
- public WorkHourStatistics(ChuanYunManager chuanYunManager, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunMemberCostDao chuanyunMemberCostDao, LogStandardService logStandardService, LogService logService) {
|
|
|
- this.chuanYunManager = chuanYunManager;
|
|
|
+ public WorkHourStatistics(ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, LogStandardService logStandardService, LogService logService) {
|
|
|
this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
- this.chuanyunMemberCostDao = chuanyunMemberCostDao;
|
|
|
this.logStandardService = logStandardService;
|
|
|
this.logService = logService;
|
|
|
}
|
|
@@ -72,7 +56,6 @@ public class WorkHourStatistics {
|
|
|
* 更新所有项目工时
|
|
|
*/
|
|
|
public void standardHour() {
|
|
|
-// projectMemberHour();
|
|
|
//离职人员工时标准化
|
|
|
// quitStandardHour();
|
|
|
}
|
|
@@ -99,63 +82,6 @@ public class WorkHourStatistics {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 人员项目工时汇总
|
|
|
- */
|
|
|
- private void projectMemberHour() {
|
|
|
- List<ChuanyunMemberCostDO> list = chuanyunMemberCostDao.getMemberCost();
|
|
|
- list.forEach(chuanyunMemberCostDO -> {
|
|
|
- if (StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())) {
|
|
|
- ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getUserId(), chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getProjectType(), chuanyunMemberCostDO.getStatus());
|
|
|
- if (oldCostDO != null) {
|
|
|
- chuanyunMemberCostDao.delete(oldCostDO);
|
|
|
- }
|
|
|
- chuanyunMemberCostDao.save(chuanyunMemberCostDO);
|
|
|
- //搜索是否有审批中数据
|
|
|
- ChuanyunMemberCostDO processdo = chuanyunMemberCostDao.getProcessProjectMemberCost(chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getProjectType(), chuanyunMemberCostDO.getUserId());
|
|
|
- if (processdo == null) {
|
|
|
- chuanyunMemberCostDao.deleteByProjectIdAndUserIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getUserId(), chuanyunMemberCostDO.getProjectType(), "2");
|
|
|
- deleteExamineStatus(ChuanyunProjectMemberCostDO.SCHEMA_CODE, "F0000007", "F0000001", chuanyunMemberCostDO.getProjectId(), "F0000002", chuanyunMemberCostDO.getUserId(), "", "", "", "", "", "", "F0000005", chuanyunMemberCostDO.getProjectType());
|
|
|
- }
|
|
|
- //更新氚云数据
|
|
|
- try {
|
|
|
- ChuanyunProjectMemberCostDTO chuanyunProjectMemberCostDTO = new ChuanyunProjectMemberCostDTO();
|
|
|
- chuanyunProjectMemberCostDTO.setProjectId(chuanyunMemberCostDO.getProjectId());
|
|
|
- chuanyunProjectMemberCostDTO.setUserId(chuanyunMemberCostDO.getUserId());
|
|
|
- chuanyunProjectMemberCostDTO.setWorkHour(chuanyunMemberCostDO.getTotalHour());
|
|
|
- chuanyunProjectMemberCostDTO.setProjectType(chuanyunMemberCostDO.getProjectType());
|
|
|
- chuanyunProjectMemberCostDTO.setStatus(chuanyunMemberCostDO.getStatus());
|
|
|
- chuanyunProjectMemberCostDTO.setPersonDays(chuanyunMemberCostDO.getPersonDays());
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- matchers.add("F0000001_2," + chuanyunMemberCostDO.getProjectId());
|
|
|
- matchers.add("F0000005_2," + chuanyunMemberCostDO.getProjectType());
|
|
|
- matchers.add("F0000007_2," + chuanyunMemberCostDO.getStatus());
|
|
|
- matchers.add("F0000002_2," + chuanyunMemberCostDO.getUserId());
|
|
|
- var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
|
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectMemberCostDO.SCHEMA_CODE, filter);
|
|
|
- var projectMemberString = objectMapper.writeValueAsString(chuanyunProjectMemberCostDTO);
|
|
|
- ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
- if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
- List<ChuanyunProjectMemberCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
- });
|
|
|
- ChuanyunProjectMemberCostDO oldProjectMemberCostDO = result.get(0);
|
|
|
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberCostDO.SCHEMA_CODE, oldProjectMemberCostDO.getObjectId(), projectMemberString);
|
|
|
- } else {
|
|
|
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberCostDO.SCHEMA_CODE, projectMemberString, true);
|
|
|
- }
|
|
|
- if (!chuanyunSaveDTO.getSuccessful()) {
|
|
|
- log.warn("新增项目成员工时汇总失败");
|
|
|
- } else {
|
|
|
- log.info("新增项目成员工时汇总成功");
|
|
|
- }
|
|
|
- } catch (JsonProcessingException | BigSizeException e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.warn("########" + chuanyunMemberCostDO + "");
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* 离职人员工时标准化
|
|
|
*/
|
|
|
private void quitStandardHour() {
|
|
@@ -193,86 +119,4 @@ public class WorkHourStatistics {
|
|
|
log.info("离职人员工时标准化完成" + selfList.size());
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 删除状态为审核中数据
|
|
|
- *
|
|
|
- * @param schemaCode 氚云表ID
|
|
|
- */
|
|
|
- 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 {
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
- matchers.add(statusCode + "_2," + "2");
|
|
|
- matchers.add(projectCode + "_2," + projectId);
|
|
|
- if (!StringUtils.isEmpty(userId)) {
|
|
|
- matchers.add(userCode + "_2," + userId);
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(year)) {
|
|
|
- matchers.add(yearCode + "_2," + year);
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(month)) {
|
|
|
- matchers.add(monthCode + "_2," + month);
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(week)) {
|
|
|
- matchers.add(weekCode + "_2," + week);
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(projectType)) {
|
|
|
- matchers.add(typeCode + "_2," + projectType);
|
|
|
- }
|
|
|
- var filter = Filter.instance(0, Integer.MAX_VALUE, true, "And", matchers);
|
|
|
- var chuanyunFindAllResponse = chuanYunManager.findAll(schemaCode, filter);
|
|
|
- if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
- List<ChuanyunCommonDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
- });
|
|
|
- result.forEach(basicDO -> {
|
|
|
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode, basicDO.getObjectId());
|
|
|
- if (!chuanyunSaveDTO.getSuccessful()) {
|
|
|
- log.warn("删除状态为审核中数据失败");
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error(e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Data
|
|
|
- static class ChuanyunProjectMemberCostDTO {
|
|
|
-
|
|
|
- /**
|
|
|
- * 项目ID
|
|
|
- */
|
|
|
- @JsonProperty("F0000001")
|
|
|
- private String projectId;
|
|
|
-
|
|
|
- /**
|
|
|
- * 项目类型
|
|
|
- */
|
|
|
- @JsonProperty("F0000005")
|
|
|
- private String projectType;
|
|
|
-
|
|
|
- /**
|
|
|
- * 用户ID
|
|
|
- */
|
|
|
- @JsonProperty("F0000002")
|
|
|
- private String userId;
|
|
|
-
|
|
|
- /**
|
|
|
- * 工时
|
|
|
- */
|
|
|
- @JsonProperty("F0000003")
|
|
|
- private BigDecimal workHour;
|
|
|
-
|
|
|
- /**
|
|
|
- * 总人天
|
|
|
- */
|
|
|
- @JsonProperty("F0000006")
|
|
|
- private BigDecimal personDays;
|
|
|
-
|
|
|
- /**
|
|
|
- * 工时状态
|
|
|
- */
|
|
|
- @JsonProperty("F0000007")
|
|
|
- private String status;
|
|
|
- }
|
|
|
}
|