|
@@ -0,0 +1,370 @@
|
|
|
+package com.galaxis.manatee.Test.fixStandard;
|
|
|
+
|
|
|
+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.*;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunFindAllBizDTO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunMonthLaborCostWgDTO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
+import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
+import com.galaxis.manatee.service.WorkGroupService;
|
|
|
+import com.galaxis.manatee.util.CollectionsUtils;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@SpringBootTest
|
|
|
+public class fixStandardWorkHour {
|
|
|
+
|
|
|
+ private ChuanYunManager chuanYunManager;
|
|
|
+ private ChuanyunGroupProjectDao groupProjectDao;
|
|
|
+ private ChuanyunProjectDao projectDao;
|
|
|
+ private ChuanyunSelfWorkHourDao selfWorkHourDao;
|
|
|
+ private ChuanyunReimbursementDao reimbursementDao;
|
|
|
+ private ChuanyunMonthLaborCostWgDao chuanyunMonthLaborCostWgDao;
|
|
|
+ private ChuanyunImplCostDao implCostDao;
|
|
|
+ private WorkGroupService workGroupService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setChuanYunManager(ChuanYunManager chuanYunManager) {
|
|
|
+ this.chuanYunManager = chuanYunManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setGroupProjectDao(ChuanyunGroupProjectDao groupProjectDao) {
|
|
|
+ this.groupProjectDao = groupProjectDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setProjectDao(ChuanyunProjectDao projectDao) {
|
|
|
+ this.projectDao = projectDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setSelfWorkHourDao(ChuanyunSelfWorkHourDao selfWorkHourDao) {
|
|
|
+ this.selfWorkHourDao = selfWorkHourDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setReimbursementDao(ChuanyunReimbursementDao reimbursementDao) {
|
|
|
+ this.reimbursementDao = reimbursementDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setWorkGroupService(WorkGroupService workGroupService) {
|
|
|
+ this.workGroupService = workGroupService;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setChuanyunMonthLaborCostWgDao(ChuanyunMonthLaborCostWgDao chuanyunMonthLaborCostWgDao) {
|
|
|
+ this.chuanyunMonthLaborCostWgDao = chuanyunMonthLaborCostWgDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setImplCostDao(ChuanyunImplCostDao implCostDao) {
|
|
|
+ this.implCostDao = implCostDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void fix() {
|
|
|
+
|
|
|
+ var objectMapper = new ObjectMapper();
|
|
|
+ var start = 0;
|
|
|
+ var totalCount = 0L;
|
|
|
+ var flag = true;
|
|
|
+ var pageSize = 500;
|
|
|
+ List<String> m = List.of("F0000005_5,生产项目", "F0000004_5,0", "F0000002_2,8352d30b-1d44-4c70-be3f-4cef2ace2dd5");
|
|
|
+
|
|
|
+ while (flag) {
|
|
|
+
|
|
|
+ //从氚云查询数据
|
|
|
+ var filter = Filter.instance(start, start + pageSize, true, Filter.AND, m);
|
|
|
+ ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = null;
|
|
|
+ try {
|
|
|
+ chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE, filter);
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() == null) {
|
|
|
+ flag = false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
|
|
|
+ start += pageSize;
|
|
|
+ } else {
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
|
|
|
+ //转化为POJO
|
|
|
+ List<ChuanyunMemberHourDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
+ });
|
|
|
+ result.parallelStream().forEach(chuanyunMemberHourDO -> {
|
|
|
+ try {
|
|
|
+ if (Objects.isNull(chuanyunMemberHourDO.getProjectCode()) || !StringUtils.hasLength(chuanyunMemberHourDO.getProjectCode())) {
|
|
|
+ log.info("{}", chuanyunMemberHourDO);
|
|
|
+ if (!Objects.isNull(chuanyunMemberHourDO.getProjectId()) && StringUtils.hasLength(chuanyunMemberHourDO.getProjectId())) {
|
|
|
+ String projectCode = "";
|
|
|
+ Optional<ChuanyunGroupProjectDO> groupProjectDO = groupProjectDao.findById(chuanyunMemberHourDO.getProjectId());
|
|
|
+ if (groupProjectDO.isPresent()) {
|
|
|
+ projectCode = groupProjectDO.get().getProjectCode();
|
|
|
+ } else {
|
|
|
+ Optional<ChuanyunProjectDO> projectDO = projectDao.findById(chuanyunMemberHourDO.getProjectId());
|
|
|
+ if (projectDO.isPresent()) {
|
|
|
+ projectCode = projectDO.get().getProjectCode();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.hasLength(projectCode)) {
|
|
|
+ UpdateProjectCodeDTO updateProjectCodeDTO = new UpdateProjectCodeDTO(projectCode);
|
|
|
+ String s = objectMapper.writeValueAsString(updateProjectCodeDTO);
|
|
|
+ log.info("更新项目编号: {}", s);
|
|
|
+ chuanYunManager.update(ChuanyunMemberHourDO.SCHEMA_CODE, chuanyunMemberHourDO.getObjectId(), s);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ log.info("start: {},total: {}", start, totalCount);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Data
|
|
|
+ class UpdateProjectCodeDTO {
|
|
|
+
|
|
|
+ @JsonProperty("F0000011")
|
|
|
+ private String projectCode;
|
|
|
+
|
|
|
+ public UpdateProjectCodeDTO(String projectCode) {
|
|
|
+ this.projectCode = projectCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void fixImplCost() {
|
|
|
+ Optional<ChuanyunGroupProjectDO> groupProjectDOOptional = groupProjectDao.findById("2e3018f9-8ab7-11ea-8ae9-7cd30ab711fe");
|
|
|
+ ChuanyunGroupProjectDO chuanyunGroupProjectDO = groupProjectDOOptional.get();
|
|
|
+ String groupProjectObjectId = chuanyunGroupProjectDO.getObjectId();
|
|
|
+ String groupProjectCode = chuanyunGroupProjectDO.getProjectCode();
|
|
|
+ // 查询项目报销单
|
|
|
+ Map<LocalDate, List<ChuanyunReimbursementDO>> reimbursementMap = new HashMap<>();
|
|
|
+ Map<LocalDate, List<ChuanyunSelfWorkHourDO>> workHoursMap = new HashMap<>();
|
|
|
+ Map<LocalDate, List<ChuanyunMonthLaborCostWgDTO>> laborCostMap = new HashMap<>();
|
|
|
+ List<ChuanyunReimbursementDO> reimbursements = reimbursementDao.findAllByGroupProjectIdAndStatusIn(chuanyunGroupProjectDO.getObjectId(), List.of(1, 2));
|
|
|
+ // 查询用户在该项目的报销单
|
|
|
+ // 报销单按日期分组
|
|
|
+ Map<LocalDate, List<ChuanyunReimbursementDO>> map1 = reimbursements.stream().collect(Collectors.groupingBy(chuanyunReimbursementDO -> {
|
|
|
+ if (!Objects.isNull(chuanyunReimbursementDO.getBusinessDate())) {
|
|
|
+ return LocalDate.of(chuanyunReimbursementDO.getBusinessDate().getYear(), chuanyunReimbursementDO.getBusinessDate().getMonthValue(), 1);
|
|
|
+ } else {
|
|
|
+ return LocalDate.of(2015, 1, 1);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+
|
|
|
+ map1.forEach((localDate, chuanyunReimbursementDOS) -> {
|
|
|
+ boolean containsKey = reimbursementMap.containsKey(localDate);
|
|
|
+ if (containsKey) {
|
|
|
+ // 表示已经存在该key
|
|
|
+ List<ChuanyunReimbursementDO> reimbursementDOList = reimbursementMap.get(localDate);
|
|
|
+ reimbursementDOList.addAll(chuanyunReimbursementDOS);
|
|
|
+ reimbursementMap.put(localDate, reimbursementDOList);
|
|
|
+ } else {
|
|
|
+ reimbursementMap.put(localDate, chuanyunReimbursementDOS);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ List<ChuanyunSelfWorkHourDO> workHours = selfWorkHourDao.findAllByProjectIdAndStatusIn(groupProjectObjectId, List.of("1", "2"));
|
|
|
+ Map<LocalDate, List<ChuanyunSelfWorkHourDO>> map2 = workHours.stream().collect(Collectors.groupingBy(chuanyunSelfWorkHourDO -> {
|
|
|
+ if (!Objects.isNull(chuanyunSelfWorkHourDO.getDayLogDate())) {
|
|
|
+ return LocalDate.of(chuanyunSelfWorkHourDO.getDayLogDate().getYear(), chuanyunSelfWorkHourDO.getDayLogDate().getMonthValue(), 1);
|
|
|
+ } else {
|
|
|
+ return LocalDate.of(2015, 1, 1);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ map2.forEach((localDate, chuanyunSelfWorkHourDOS) -> {
|
|
|
+ boolean containsKey = workHoursMap.containsKey(localDate);
|
|
|
+ if (containsKey) {
|
|
|
+ // 表示已经存在该key
|
|
|
+ List<ChuanyunSelfWorkHourDO> selfWorkHours = workHoursMap.get(localDate);
|
|
|
+ selfWorkHours.addAll(chuanyunSelfWorkHourDOS);
|
|
|
+ workHoursMap.put(localDate, selfWorkHours);
|
|
|
+ } else {
|
|
|
+ workHoursMap.put(localDate, chuanyunSelfWorkHourDOS);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // todo 修改为根据项目id来查
|
|
|
+ List<ChuanyunMonthLaborCostWgDTO> laborCostWgs = chuanyunMonthLaborCostWgDao.findAllByProjectCodeAndProjectId(groupProjectCode, groupProjectObjectId);
|
|
|
+ Map<LocalDate, List<ChuanyunMonthLaborCostWgDTO>> map3 = laborCostWgs.stream().collect(Collectors.groupingBy(chuanyunMonthLaborCostWgDTO -> {
|
|
|
+ if (!Objects.isNull(chuanyunMonthLaborCostWgDTO.getLogDate())) {
|
|
|
+ return LocalDate.of(chuanyunMonthLaborCostWgDTO.getLogDate().getYear(), chuanyunMonthLaborCostWgDTO.getLogDate().getMonthValue(), 1);
|
|
|
+ } else {
|
|
|
+ return LocalDate.of(2015, 1, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }));
|
|
|
+ map3.forEach((localDate, chuanyunMonthLaborCostWgDTOS) -> {
|
|
|
+ boolean containsKey = laborCostMap.containsKey(localDate);
|
|
|
+ if (containsKey) {
|
|
|
+ // 表示已经存在该key
|
|
|
+ List<ChuanyunMonthLaborCostWgDTO> monthLaborCostWgs = laborCostMap.get(localDate);
|
|
|
+ monthLaborCostWgs.addAll(chuanyunMonthLaborCostWgDTOS);
|
|
|
+ laborCostMap.put(localDate, monthLaborCostWgs);
|
|
|
+ } else {
|
|
|
+ laborCostMap.put(localDate, chuanyunMonthLaborCostWgDTOS);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Set<LocalDate> localDates1 = reimbursementMap.keySet();
|
|
|
+ Set<LocalDate> localDates2 = workHoursMap.keySet();
|
|
|
+ Set<LocalDate> localDates3 = laborCostMap.keySet();
|
|
|
+
|
|
|
+ Set<LocalDate> collections = CollectionsUtils.mergeCollections(localDates1, localDates2);
|
|
|
+ Set<LocalDate> mergeCollections = CollectionsUtils.mergeCollections(collections, localDates3);
|
|
|
+
|
|
|
+ mergeCollections.forEach(localDate -> {
|
|
|
+ List<ChuanyunReimbursementDO> reimbursementList = reimbursementMap.getOrDefault(localDate, Collections.emptyList());
|
|
|
+ List<ChuanyunSelfWorkHourDO> selfWorkHourList = workHoursMap.getOrDefault(localDate, Collections.emptyList());
|
|
|
+ List<ChuanyunMonthLaborCostWgDTO> laborCostWgList = laborCostMap.getOrDefault(localDate, Collections.emptyList());
|
|
|
+
|
|
|
+ Map<String, List<ChuanyunReimbursementDO>> workGroupIdReimbursementMap = reimbursementList.stream().collect(Collectors.groupingBy(chuanyunReimbursementDO -> {
|
|
|
+ if (Objects.isNull(chuanyunReimbursementDO.getWorkGroupId()) || !StringUtils.hasLength(chuanyunReimbursementDO.getWorkGroupId())) {
|
|
|
+ return ChuanYunConstant.DEFAULT_WORK_GROUP;
|
|
|
+ } else {
|
|
|
+ return chuanyunReimbursementDO.getWorkGroupId();
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ Map<String, List<ChuanyunSelfWorkHourDO>> workGroupIdSelfWorkHourMap = selfWorkHourList.stream().collect(Collectors.groupingBy(chuanyunSelfWorkHourDO -> {
|
|
|
+ if (Objects.isNull(chuanyunSelfWorkHourDO.getWorkGroupId()) || !StringUtils.hasLength(chuanyunSelfWorkHourDO.getWorkGroupId())) {
|
|
|
+ return ChuanYunConstant.DEFAULT_WORK_GROUP;
|
|
|
+ } else {
|
|
|
+ return chuanyunSelfWorkHourDO.getWorkGroupId();
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ Map<String, List<ChuanyunMonthLaborCostWgDTO>> workGroupIdLaborCostMap = laborCostWgList.stream().collect(Collectors.groupingBy(chuanyunMonthLaborCostWgDTO -> {
|
|
|
+ if (Objects.isNull(chuanyunMonthLaborCostWgDTO.getWorkGroupId()) || !StringUtils.hasLength(chuanyunMonthLaborCostWgDTO.getWorkGroupId())) {
|
|
|
+ return ChuanYunConstant.DEFAULT_WORK_GROUP;
|
|
|
+ } else {
|
|
|
+ return chuanyunMonthLaborCostWgDTO.getWorkGroupId();
|
|
|
+ }
|
|
|
+ }));
|
|
|
+
|
|
|
+ Set<String> workGroup1 = workGroupIdReimbursementMap.keySet();
|
|
|
+ Set<String> workGroup2 = workGroupIdSelfWorkHourMap.keySet();
|
|
|
+ Set<String> workGroup3 = workGroupIdLaborCostMap.keySet();
|
|
|
+
|
|
|
+
|
|
|
+ Set<String> workGroupMergeCollections = CollectionsUtils.mergeStringCollections(workGroup1, workGroup2, workGroup3);
|
|
|
+ // 避免默认工作与实际工作组数据重复,可能会存在历史数据没有工作组,后面标准化的时候又补充了工作组信息。
|
|
|
+ workGroupMergeCollections.add(ChuanYunConstant.DEFAULT_WORK_GROUP);
|
|
|
+
|
|
|
+ workGroupMergeCollections.forEach(workGroupId -> {
|
|
|
+ List<ChuanyunReimbursementDO> reimbursementDOList = workGroupIdReimbursementMap.getOrDefault(workGroupId, Collections.emptyList());
|
|
|
+ List<ChuanyunSelfWorkHourDO> selfWorkHourDOS = workGroupIdSelfWorkHourMap.getOrDefault(workGroupId, Collections.emptyList());
|
|
|
+ List<ChuanyunMonthLaborCostWgDTO> monthLaborCostWgDTOS = workGroupIdLaborCostMap.getOrDefault(workGroupId, Collections.emptyList());
|
|
|
+
|
|
|
+ BigDecimal totalReimbursement;
|
|
|
+ BigDecimal totalManDay;
|
|
|
+ BigDecimal totalLaborCost;
|
|
|
+
|
|
|
+ if (reimbursementDOList.isEmpty()) {
|
|
|
+ totalReimbursement = new BigDecimal("0.00");
|
|
|
+ } else {
|
|
|
+ totalReimbursement = reimbursementDOList.stream().map(ChuanyunReimbursementDO::getTotalAmountNotTaxed).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (selfWorkHourDOS.isEmpty()) {
|
|
|
+ totalManDay = new BigDecimal("0.00");
|
|
|
+ } else {
|
|
|
+ BigDecimal totalWorkHours = selfWorkHourDOS.stream().map(ChuanyunSelfWorkHourDO::getStandardWorkHour).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ totalManDay = totalWorkHours.divide(BigDecimal.valueOf(8), 3, RoundingMode.UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (monthLaborCostWgDTOS.isEmpty()) {
|
|
|
+ totalLaborCost = new BigDecimal("0.00");
|
|
|
+ } else {
|
|
|
+ totalLaborCost = monthLaborCostWgDTOS.stream().map(ChuanyunMonthLaborCostWgDTO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ // todo 变更
|
|
|
+ ChuanyunImplCostDO old = implCostDao.findByProjectIdAndProjectCodeAndWorkGroupAndLocalDate(groupProjectObjectId, groupProjectCode, workGroupId, localDate.atStartOfDay());
|
|
|
+ if (!Objects.isNull(old)) {
|
|
|
+ BigDecimal oldImplCost = old.getImplCost();
|
|
|
+ BigDecimal oldManDay = old.getManDay();
|
|
|
+ BigDecimal oldLaborCost = old.getLaborCost();
|
|
|
+ if (Objects.isNull(old.getLocalDate()) ||
|
|
|
+ Objects.isNull(oldImplCost) ||
|
|
|
+ Objects.isNull(oldManDay) ||
|
|
|
+ Objects.isNull(oldLaborCost) ||
|
|
|
+ oldImplCost.compareTo(totalReimbursement) != 0 ||
|
|
|
+ oldManDay.compareTo(totalManDay) != 0 || oldLaborCost.compareTo(totalLaborCost) != 0) {
|
|
|
+ old.setImplCost(totalReimbursement);
|
|
|
+ old.setManDay(totalManDay);
|
|
|
+ old.setLaborCost(totalLaborCost);
|
|
|
+ if (!StringUtils.hasLength(old.getOwnerId()) && !Objects.isNull(chuanyunGroupProjectDO.getEbgProjectManagerObject())) {
|
|
|
+ old.setOwnerId(chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId());
|
|
|
+ }
|
|
|
+ implCostDao.saveAndFlush(old);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 判断默认工作组数据
|
|
|
+ String defaultWorkGroupName = ChuanYunConstant.DEFAULT_WORK_GROUP_NAME;
|
|
|
+ ChuanyunWorkGroupDO workGroupDO = workGroupService.findByObjectId(workGroupId);
|
|
|
+ if (!Objects.isNull(workGroupDO)) {
|
|
|
+ defaultWorkGroupName = workGroupDO.getWorkGroupName();
|
|
|
+ } else {
|
|
|
+ ChuanyunHistoryWorkGroupDO historyWorkGroupDO = workGroupService.findInHistoryByObjectId(workGroupId);
|
|
|
+ if (!Objects.isNull(historyWorkGroupDO)) {
|
|
|
+ defaultWorkGroupName = historyWorkGroupDO.getWorkGroupName();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ChuanyunImplCostDO chuanyunImplCostDO = new ChuanyunImplCostDO();
|
|
|
+ chuanyunImplCostDO.setProjectId(chuanyunGroupProjectDO.getObjectId());
|
|
|
+ chuanyunImplCostDO.setProjectCode(groupProjectCode);
|
|
|
+ chuanyunImplCostDO.setLocalDate(localDate.atStartOfDay());
|
|
|
+ chuanyunImplCostDO.setWorkGroup(workGroupId);
|
|
|
+ chuanyunImplCostDO.setWorkGroupName(defaultWorkGroupName);
|
|
|
+ chuanyunImplCostDO.setImplCost(totalReimbursement);
|
|
|
+ chuanyunImplCostDO.setManDay(totalManDay);
|
|
|
+ chuanyunImplCostDO.setLaborCost(totalLaborCost);
|
|
|
+ if (!Objects.isNull(chuanyunGroupProjectDO.getEbgProjectManagerObject())) {
|
|
|
+
|
|
|
+ chuanyunImplCostDO.setOwnerId(chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId());
|
|
|
+ }
|
|
|
+ implCostDao.saveAndFlush(chuanyunImplCostDO);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void allSelfWork() {
|
|
|
+ List<ChuanyunSelfWorkHourDO> workHours = selfWorkHourDao.findAllByProjectIdAndStatusIn("1f48d45f-10bf-4b26-ad5a-9f0e41ad02ef", List.of("1", "2"));
|
|
|
+ List<ChuanyunSelfWorkHourDO> selfWorkHourDOS = workHours.stream().sorted(Comparator.comparing(ChuanyunSelfWorkHourDO::getDayLogDate)).toList();
|
|
|
+ selfWorkHourDOS.forEach(System.out::println);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|