赵越越 1 viikko sitten
vanhempi
commit
7d07245e3b

+ 4 - 3
assistMg/src/main/java/com/hotent/baseInfo/manager/impl/CostDocumentTemplateFileManagerImpl.java

@@ -17,6 +17,7 @@ import com.hotent.uc.exception.BaseException;
 import com.hotent.uc.manager.UserManager;
 import com.hotent.uc.model.User;
 import com.hotent.uc.util.ContextUtil;
+import com.hotent.util.CostDataUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -83,8 +84,8 @@ public class CostDocumentTemplateFileManagerImpl extends BaseManagerImpl<CostDoc
                     List<CostProjectTask> taskByProjectId = costProjectTaskManager.findTaskByProjectId(whereValue,unitId);
                     if (taskByProjectId!=null && !taskByProjectId.isEmpty()) {
                         String replace = tableName.replace("?", "'" + taskByProjectId.get(0).getId() + "'");
-                        String colValue = costTemplateFileManager.getColValue2(replace);
-                        costProjectDocumentFile.setDataValue(colValue);
+                        String  colValue= costTemplateFileManager.getColValue2(replace);
+                        costProjectDocumentFile.setDataValue(CostDataUtil.convertToChineseDate(colValue));
                     }
 
                 }else  if (StringUtil.isNotEmpty(costProjectDocumentFile.getTableName())
@@ -103,7 +104,7 @@ public class CostDocumentTemplateFileManagerImpl extends BaseManagerImpl<CostDoc
                     }
                     String colValue = this.baseMapper.getColValue(costProjectDocumentFile.getTableName(), costProjectDocumentFile.getColName(), costProjectDocumentFile.getWhereName(), costProjectDocumentFile.getWhereValue());
                     //获取whereValue字段值
-                    costProjectDocumentFile.setDataValue(colValue);
+                    costProjectDocumentFile.setDataValue(CostDataUtil.convertToChineseDate(colValue));
                 }
             } catch (Exception e) {
                 throw new BaseException("获取字段失败:" + costProjectDocumentFile.getColName());

+ 37 - 35
assistMg/src/main/java/com/hotent/project/manager/impl/ComprehensiveStatisticsManagerImpl.java

@@ -70,43 +70,45 @@ public class ComprehensiveStatisticsManagerImpl implements ComprehensiveStatisti
         }
         List<CostProjectTask> projectTasks = costProjectTaskManager.list(taskWrapper);
         taskIds.addAll(projectTasks.stream().map(CostProjectTask::getId).distinct().collect(Collectors.toList()));
-        List<CostSurveysVo> costSurveysVos= costSurveyTemplateUploadDataManager.analyze(taskIds);
-        List<String> ids = costSurveysVos.stream().map(CostSurveysVo::getTaskId).distinct().collect(Collectors.toList());
+        if(!taskIds.isEmpty()){
+            List<CostSurveysVo> costSurveysVos= costSurveyTemplateUploadDataManager.analyze(taskIds);
+            List<String> ids = costSurveysVos.stream().map(CostSurveysVo::getTaskId).distinct().collect(Collectors.toList());
 
-        List<CostSurveysVo> costSurveysVoList = new ArrayList<>();
-        //根据任务进行重组数据
-        List<CostSurveysVo> costSurveysVoArrayList = new ArrayList<>();
-        ids.forEach(i->{
-            List<CostSurveysVo> surveysVos = costSurveysVos.stream().filter(c -> c.getTaskId().equals(i)).collect(Collectors.toList());
-            List<String> rowids = surveysVos.stream().map(CostSurveysVo::getRowid).distinct().collect(Collectors.toList());
-            rowids.forEach(r->{
-                List<CostSurveysVo>  costSurveysVos1=surveysVos.stream().filter(v -> v.getRowid().equals(r)).collect(Collectors.toList());
-                if (!costSurveysVos1.isEmpty()) {
-                    CostSurveysVo costSurveysVo1 = costSurveysVos1.get(0);
-                    List<SurveysVo> collect = costSurveysVos1.stream().map(csv -> {
-                        SurveysVo surveysVo = new SurveysVo();
-                        String nianfen = (String) csv.getNianfen();
-                        if (nianfen != null && nianfen.length() >= 4) {
-                            String year = nianfen.substring(0, 4);
-                            surveysVo.setName(year);// 2024, 2025, 2023
-                        }
-                        surveysVo.setValue(csv.getRvalue());
-                        return surveysVo;
-                    }).collect(Collectors.toList());
-                    costSurveysVo1.setSurveysVos(collect);
-                    costSurveysVo1.setNianfen(null);
-                    costSurveysVoArrayList.add(costSurveysVo1);
-                }
-            });
-            List<CostSurveysVo> vos = costSurveysVoArrayList.stream().filter(c -> c.getParentId().equals("-1")).collect(Collectors.toList());
-            vos.forEach(v->{
-                List<CostSurveysVo> voList = costSurveysVoArrayList.stream().filter(su -> su.getParentId().equals(v.getRowid())).sorted(Comparator.comparing(CostSurveysVo::getOrderNum)).collect(Collectors.toList());
-                v.setCostSurveysVos(voList);
-            });
-            costSurveysVoList.addAll(vos);
+            List<CostSurveysVo> costSurveysVoList = new ArrayList<>();
+            //根据任务进行重组数据
+            List<CostSurveysVo> costSurveysVoArrayList = new ArrayList<>();
+            ids.forEach(i->{
+                List<CostSurveysVo> surveysVos = costSurveysVos.stream().filter(c -> c.getTaskId().equals(i)).collect(Collectors.toList());
+                List<String> rowids = surveysVos.stream().map(CostSurveysVo::getRowid).distinct().collect(Collectors.toList());
+                rowids.forEach(r->{
+                    List<CostSurveysVo>  costSurveysVos1=surveysVos.stream().filter(v -> v.getRowid().equals(r)).collect(Collectors.toList());
+                    if (!costSurveysVos1.isEmpty()) {
+                        CostSurveysVo costSurveysVo1 = costSurveysVos1.get(0);
+                        List<SurveysVo> collect = costSurveysVos1.stream().map(csv -> {
+                            SurveysVo surveysVo = new SurveysVo();
+                            String nianfen = (String) csv.getNianfen();
+                            if (nianfen != null && nianfen.length() >= 4) {
+                                String year = nianfen.substring(0, 4);
+                                surveysVo.setName(year);// 2024, 2025, 2023
+                            }
+                            surveysVo.setValue(csv.getRvalue());
+                            return surveysVo;
+                        }).collect(Collectors.toList());
+                        costSurveysVo1.setSurveysVos(collect);
+                        costSurveysVo1.setNianfen(null);
+                        costSurveysVoArrayList.add(costSurveysVo1);
+                    }
+                });
+                List<CostSurveysVo> vos = costSurveysVoArrayList.stream().filter(c -> c.getParentId().equals("-1")).collect(Collectors.toList());
+                vos.forEach(v->{
+                    List<CostSurveysVo> voList = costSurveysVoArrayList.stream().filter(su -> su.getParentId().equals(v.getRowid())).sorted(Comparator.comparing(CostSurveysVo::getOrderNum)).collect(Collectors.toList());
+                    v.setCostSurveysVos(voList);
+                });
+                costSurveysVoList.addAll(vos);
 
-        });
-        comprehensiveStatisticsVo.setCostSurveysList(costSurveysVoList);
+            });
+            comprehensiveStatisticsVo.setCostSurveysList(costSurveysVoList);
+        }
         return CommonResult.<ComprehensiveStatisticsVo>ok().value(comprehensiveStatisticsVo);
     }
 }

+ 1 - 0
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectDocumentManagerImpl.java

@@ -292,6 +292,7 @@ public class CostProjectDocumentManagerImpl extends BaseManagerImpl<CostProjectD
                     costProjectDocumentFile.setWhereValue(replaced);
                     String colValue = costTemplateFileManager.getColValue(costProjectDocumentFile.getTableName(), costProjectDocumentFile.getColName(), costProjectDocumentFile.getWhereName(), costProjectDocumentFile.getWhereValue());
                     //获取whereValue字段值
+
                     costProjectDocumentFile.setDataValue(colValue);
                 } else if (StringUtil.isEmpty(costProjectDocumentFile.getWhereName()) && StringUtil.isEmpty(costProjectDocumentFile.getWhereValue())) {
                     String tableName = costProjectDocumentFile.getTableName();

+ 1 - 0
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectProccessManagerImpl.java

@@ -192,6 +192,7 @@ public class CostProjectProccessManagerImpl extends BaseManagerImpl<CostProjectP
                 }
             }
             nodeResp.setEndTime(node.getEndTime());
+            nodeResp.setStartTime(node.getStartTime());
             nodeResp.setActEndTime(node.getActEndTime());
             nodeResp.setActStartTime(node.getActStartTime());
             nodeResp.setActRemarks(node.getActRemarks());

+ 94 - 0
assistMg/src/main/java/com/hotent/util/CostDataUtil.java

@@ -2,8 +2,13 @@ package com.hotent.util;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
 import java.util.*;
 import java.util.stream.Collectors;
+
+
 /**
  *@author: zhao yue yue
  *@create: 2025-12-08 10:05
@@ -11,6 +16,16 @@ import java.util.stream.Collectors;
 public class CostDataUtil {
 
 
+    private static final List<DateTimeFormatter> FORMATTERS = Arrays.asList(
+            DateTimeFormatter.ofPattern("yyyy-MM-dd"),
+            DateTimeFormatter.ofPattern("yyyy/MM/dd"),
+            DateTimeFormatter.ofPattern("yyyy.MM.dd"),
+            DateTimeFormatter.ofPattern("MM/dd/yyyy"),
+            DateTimeFormatter.ofPattern("dd/MM/yyyy"),
+            DateTimeFormatter.ofPattern("yyyyMMdd"),
+            DateTimeFormatter.ofPattern("yyyy年MM月dd日")
+    );
+
 
     /**
      * 将查询结果转换为目标格式
@@ -348,4 +363,83 @@ public class CostDataUtil {
         list.add(row);
     }
 
+
+
+
+    public static String convertToChineseDate(String dateStr) {
+        // 定义多种可能的日期格式
+        List<String> patterns = Arrays.asList(
+                "yyyy-MM-dd",
+                "yyyy/MM/dd",
+                "yyyy.MM.dd",
+                "yyyy年MM月dd日",
+                "MM/dd/yyyy",
+                "dd/MM/yyyy",
+                "yyyyMMdd"
+        );
+
+        for (String pattern : patterns) {
+            try {
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
+                LocalDate date = LocalDate.parse(dateStr, formatter);
+
+                // 转换为中文格式
+                DateTimeFormatter chineseFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+                return date.format(chineseFormatter);
+            } catch (DateTimeParseException e) {
+                // 继续尝试其他格式
+                continue;
+            }
+        }
+
+        // 如果不是日期,返回原字符串
+        return dateStr;
+    }
+
+
+    public static String convert(String input) {
+        // 先尝试精确匹配日期格式
+        for (DateTimeFormatter formatter : FORMATTERS) {
+            try {
+                LocalDate date = LocalDate.parse(input, formatter);
+                return date.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"));
+            } catch (DateTimeParseException e) {
+                // 继续尝试下一个格式
+            }
+        }
+
+        // 如果不是标准格式,可以添加正则表达式检测
+        if (isLikelyDate(input)) {
+            return tryParseUnusualDate(input);
+        }
+
+        return input;
+    }
+
+    private static boolean isLikelyDate(String str) {
+        // 简单的日期特征检测
+        return str.matches(".*\\d{4}.*\\d{1,2}.*\\d{1,2}.*") ||
+                str.matches("\\d{1,2}[-/.]\\d{1,2}[-/.]\\d{4}");
+    }
+
+    private static String tryParseUnusualDate(String str) {
+        // 尝试清理和转换非标准日期
+        try {
+            // 移除非数字字符,保留数字
+            String numbers = str.replaceAll("[^0-9]", "");
+
+            if (numbers.length() == 8) {
+                // 假设是 yyyyMMdd 格式
+                String year = numbers.substring(0, 4);
+                String month = numbers.substring(4, 6);
+                String day = numbers.substring(6, 8);
+                return year + "年" + month + "月" + day + "日";
+            }
+        } catch (Exception e) {
+            // 转换失败
+        }
+        return str;
+    }
 }
+
+