Browse Source

新时间比较器

yangyj 2 years ago
parent
commit
198f675397

+ 53 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -16,8 +16,10 @@ import com.jfireel.expression.node.impl.VariableNode;
 import com.jfireel.expression.token.Token;
 import com.jfireel.expression.token.TokenType;
 import org.apache.commons.collections4.MapUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.ElementData;
 
 import java.math.BigDecimal;
@@ -28,6 +30,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.function.BinaryOperator;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -1048,6 +1051,55 @@ public class CustomFunction {
 	}
 
 
+	public static Object dateMax(Object d1 ,Object d2){
+		return dateCp(d1,d2,false);
+	}
+
+	public static Object dateMin(Object d1 ,Object d2){
+	    return dateCp(d1,d2,true);
+	}
+
+	private static Object dateCp(Object d1 ,Object d2,Boolean isAsc){
+		if(d1!=null&&d2!=null){
+			DateTime dt1 = new DateTime(d1.toString());
+			DateTime dt2 = new DateTime(d2.toString());
+			List<DateTime> list = new ArrayList<>();
+			list.add(dt1);
+			list.add(dt2);
+			if(isAsc){
+				return dcp(list,Comparator.naturalOrder());
+			}else{
+				return dcp(list,Comparator.reverseOrder());
+			}
+		}
+		return StringPool.EMPTY;
+	}
+
+	/**
+	 * @Description 时间比较获取
+	 * @Param [list:时间集合, comparator 比较器 ]
+	 * @return cn.hutool.core.date.DateTime
+	 * @Author yangyj
+	 * @Date 2022.11.10 10:47
+	 **/
+	public static DateTime dcp(List<DateTime> list,Comparator<? super DateTime> comparator){
+		return list.stream().reduce((a, b) -> comparator.compare(a, b) <= 0 ? a : b).orElse(null);
+	}
+
+
+
+	public static void main(String[] args) {
+		DateTime a =DateTime.now();
+		DateTime b =new DateTime("2022-12-10 10:10:10");
+		DateTime c =new DateTime("2022-12-11 10:10:10");
+		System.out.println(dateMax(b,c));
+		System.out.println(dateMin(b,c));
+//		List<DateTime> list = new ArrayList<>();
+//		list.add(a);
+//		list.add(b);
+//		list.add(c);
+//		System.out.println(dcp(list, Comparator.reverseOrder()));
+	}
 
 	public static String dateToStr(Date date, String formatter) {
 		String value = null;
@@ -3384,6 +3436,7 @@ public class CustomFunction {
 	}
 
 
+
 	/**
 	 * @Description String 转List
 	 * @Param [o, separator]

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -324,6 +324,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     public void formulaFillData(List<TableInfo> tableInfoList, Long nodeId) {
         if (Func.isNotEmpty(tableInfoList)) {
+            List<WbsTreeContract> tableAll = wbsTreeContractService.searchNodeAllTable(nodeId.toString(), "1", tableInfoList.get(0).getContractId(), tableInfoList.get(0).getProjectId());
             StopWatch stopWatch = new StopWatch();
             String ids = tableInfoList.stream().map(TableInfo::getPkeyId).filter(Func::isNotEmpty).collect(Collectors.joining(","));
             List<Map<String, Object>> list = this.jdbcTemplate.queryForList("SELECT   a.p_key_id as nodeId,b.id as fieldId,b.e_key as field,c.init_table_name as tableName  from m_wbs_tree_contract a LEFT JOIN m_wbs_form_element b on a.id=b.f_id left JOIN m_wbs_tree c on a.id=c.id where b.is_deleted=0 and a.p_key_id in (" + ids + ")");