当前位置: 首页 > news >正文

南宁建站系统模板安徽太基建设官方网站

南宁建站系统模板,安徽太基建设官方网站,怎么用切片和dw做网站,酒泉网站建设有哪些1. SUMIF函数 SUMIF 函数可用于计算子表单中满足某一条件的数字相加并返回和。 2. 函数用法 SUMIF(range, criteria, [sum_range]) 其中各参数的含义及使用方法如下#xff1a; range#xff1a;必需#xff1b;根据 criteria 的条件规则进行检测的判断字段。支持的字段…1. SUMIF函数 SUMIF 函数可用于计算子表单中满足某一条件的数字相加并返回和。 2. 函数用法 SUMIF(range, criteria, [sum_range]) 其中各参数的含义及使用方法如下 range必需根据 criteria 的条件规则进行检测的判断字段。支持的字段包括子表单中的数字、单行文本、下拉框、单选按钮组 criteria必需用于判断的条件规则。支持的形式和使用规则如下表 支持形式是否需要加引号示例注意事项数字不需要20、32表达式需要“32”、!苹果支持的运算符号包括、、、!、、文本需要“苹果”、水果字段不需要字段1在主表字段中使用 SUMIF 函数时只能选择主表字段2在子表字段中使用 SUMIF 函数时只能选择择主表字段和当前子表字段 3. 函数示例 如计算入库明细中产品类型为「水果」的全部入库数量则可以在「水果类数量总计」字段设置公式为 4. 代码实战 首先我们在function包下创建math包在math包下创建SumIfFunction类代码如下 package com.ql.util.express.self.combat.function.math;import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.ql.util.express.Operator; import com.ql.util.express.self.combat.exception.FormulaException;import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors;/*** 类描述: SUMIF函数** author admin* version 1.0.0* date 2023/11/24 10:33*/ public class SumIfFunction extends Operator {public SumIfFunction(String name) {this.name name;}Overridepublic Object executeInner(Object[] lists) throws Exception {//边界判断if (lists.length 0 || lists.length3 || lists.length 4) {throw new FormulaException(操作数异常);}BigDecimal res BigDecimal.ZERO;Object range null;Object criteria null;ListMapString,Object subFormVal null;String rangeS ;String key ;if (lists.length 3) { // 两个参数// 获取参数key lists[0].toString();range lists[1];criteria lists[2];rangeS range.toString();subFormVal JSON.parseObject(key,List.class);res cal(subFormVal,rangeS,criteria.toString(),rangeS);} else {// 三个参数处理Object sumRange lists[3];key lists[0].toString();range lists[1];criteria lists[2];rangeS range.toString();subFormVal JSON.parseObject(key,List.class);// 循环subFormVal集合res cal(subFormVal,rangeS,criteria.toString(),sumRange.toString());}return res;}// 计算结果private BigDecimal cal(ListMapString, Object list, String range, String criteria, String sumRange) {// criteria判断类型boolean isNum CriteriaUtil.isNum(criteria);boolean isExpress CriteriaUtil.isExpress(criteria);// 根据criteria类型 生成PredicateListMapString, Object collect null;if (isExpress) {// 如果是表达式// 提取符号String symbol CriteriaUtil.extractSymbol(criteria);String symbol_value criteria.replaceAll(symbol,);boolean sybolValueIsNum CriteriaUtil.isNum(symbol_value);if (sybolValueIsNum) {// 如果是数字collect list.stream().filter(paramMap - {boolean res false;if (.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(symbol_value)?true:false;} else if (.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(symbol_value)?true:false;} else if (.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(symbol_value)?true:false;} else if (.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(symbol_value)?true:false;} else if (.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(symbol_value)?true:false;} else if (!.equals(symbol)) {res Double.parseDouble(paramMap.get(range).toString()) ! Double.parseDouble(symbol_value)?true:false;}return res;}).collect(Collectors.toList());} else {collect list.stream().filter(paramMap - {boolean res false;if (.equals(symbol)) {res String.valueOf(paramMap.get(range)).equals(symbol_value);} else if (!.equals(symbol)) {res !(String.valueOf(paramMap.get(range)).equals(symbol_value));} else {throw new RuntimeException(字符暂不支持的操作符号为symbol);}return res;}).collect(Collectors.toList());}} else {// 没有表达式 直接默认为if (isNum) {// 如果是数字collect list.stream().filter(paramMap - Double.parseDouble(paramMap.get(range).toString()) Double.parseDouble(criteria)?true:false).collect(Collectors.toList());} else {collect list.stream().filter(paramMap - String.valueOf(paramMap.get(range)).equals(criteria)).collect(Collectors.toList());}}// 满足条件的集合统计出来后按照sumRange字段统计求和BigDecimal sum BigDecimal.ZERO;for (MapString,Object map:collect) {BigDecimal tmp new BigDecimal(map.get(sumRange).toString());sum sum.add(tmp);}return sum;}static class CriteriaUtil {public static boolean isNum (String criteria) {return StrUtil.isNumeric(criteria);}public static boolean isExpress(String criteria) {ListString symbols Arrays.asList(,,,,,!);boolean res symbols.stream().anyMatch(s - criteria.contains(s));return res;}/**** 提取表达式中的符号* param criteria* return*/public static String extractSymbol(String criteria) {ListString symbols Arrays.asList(,,,,,!);final OptionalString first symbols.stream().filter(new PredicateString() {Overridepublic boolean test(String s) {return criteria.contains(s);}}).findFirst();return first.get();}}} 把SumIfFunction类注册到公式函数入口类中代码如下 package com.ql.util.express.self.combat.ext;import com.ql.util.express.ExpressRunner; import com.ql.util.express.IExpressResourceLoader; import com.ql.util.express.parse.NodeTypeManager; import com.ql.util.express.self.combat.function.logic.*; import com.ql.util.express.self.combat.function.math.*;/*** 类描述: 仿简道云公式函数实战入口类** author admin* version 1.0.0* date 2023/11/21 15:29*/ public class FormulaRunner extends ExpressRunner {public FormulaRunner() {super();}public FormulaRunner(boolean isPrecise, boolean isTrace) {super(isPrecise,isTrace);}public FormulaRunner(boolean isPrecise, boolean isStrace, NodeTypeManager nodeTypeManager) {super(isPrecise,isStrace,nodeTypeManager);}public FormulaRunner(boolean isPrecise, boolean isTrace, IExpressResourceLoader iExpressResourceLoader, NodeTypeManager nodeTypeManager) {super(isPrecise,isTrace,iExpressResourceLoader,nodeTypeManager);}Overridepublic void addSystemFunctions() {// ExpressRunner 的内部系统函数super.addSystemFunctions();// 扩展公式函数this.customFunction();}/**** 自定义公式函数*/public void customFunction() {// 逻辑公式函数this.addLogicFunction();// 数学公式函数this.addMathFunction();}public void addLogicFunction() {// AND函数this.addFunction(AND,new AndFunction(AND));// IF函数this.addFunction(IF,new IfFunction(IF));// IFS函数this.addFunction(IFS,new IfsFunction(IFS));// XOR函数this.addFunction(XOR,new XorFunction(XOR));// TRUE函数this.addFunction(TRUE,new TrueFunction(TRUE));// FALSE函数this.addFunction(FALSE,new FalseFunction(FALSE));// NOT函数this.addFunction(NOT,new NotFunction(NOT));// OR函数this.addFunction(OR,new OrFunction(OR));}public void addMathFunction() {// ABS函数this.addFunction(ABS,new AbsFunction(ABS));// AVERAGE函数this.addFunction(AVERAGE,new AvgFunction(AVERAGE));// CEILING函数this.addFunction(CEILING,new CeilingFunction(CEILING));// RADIANS函数this.addFunction(RADIANS,new RadiansFunction(RADIANS));// COS函数this.addFunction(COS,new CosFunction(COS));// COT函数this.addFunction(COT,new CotFunction(COT));// COUNT函数this.addFunction(COUNT,new CountFunction(COUNT));// COUNTIF函数this.addFunction(COUNTIF,new CountIfFunction(COUNTIF));// FIXED函数this.addFunction(FIXED,new FixedFunction(FIXED));// FLOOR函数this.addFunction(FLOOR,new FloorFunction(FLOOR));// INT函数this.addFunction(INT,new IntFunction(INT));// LARGE函数this.addFunction(LARGE,new LargeFunction(LARGE));// LOG函数this.addFunction(LOG,new LogFunction(LOG));// MAX函数this.addFunction(MAX,new MaxFunction(MAX));// MIN函数this.addFunction(MIN,new MinFunction(MIN));// MOD函数this.addFunction(MOD,new ModFunction(MOD));// POWER函数this.addFunction(POWER,new PowerFunction(POWER));// PRODUCT函数this.addFunction(PRODUCT,new ProductFunction(PRODUCT));// RAND函数this.addFunction(RAND,new RandFunction(RAND));// ROUND函数this.addFunction(ROUND,new RoundFunction(ROUND));// SIN函数this.addFunction(SIN,new SinFunction(SIN));// SMALL函数this.addFunction(SMALL,new SmallFunction(SMALL));// SQRT函数this.addFunction(SQRT,new SqrtFunction(SQRT));// SUM函数this.addFunction(SUM,new SumFunction(SUM));// SUMIF函数this.addFunction(SUMIF,new SumIfFunction(SUMIF));} } 创建测试用例 package com.ql.util.express.self.combat;import com.alibaba.fastjson.JSON; import com.ql.util.express.DefaultContext; import com.ql.util.express.self.combat.ext.FormulaRunner; import org.junit.Test;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** 类描述: 实战测试类** author admin* version 1.0.0* date 2023/11/21 15:45*/ public class CombatTest {Testpublic void SUMIF() throws Exception{FormulaRunner formulaRunner new FormulaRunner(true,true);// 创建上下文DefaultContextString, Object context new DefaultContext();ListMapString,Object list new ArrayList();MapString,Object map new HashMap();map.put(record.type,红富士);map.put(record.name,苹果);map.put(record.num,20.0);MapString,Object map2 new HashMap();map2.put(record.type,红富士);map2.put(record.name,苹果);map2.put(record.num,42.0);MapString,Object map3 new HashMap();map3.put(record.type,红星);map3.put(record.name,苹果);map3.put(record.num,30.0);MapString,Object map4 new HashMap();map4.put(record.type,美国);map4.put(record.name,苹果);map4.put(record.num,13000.0);MapString,Object map5 new HashMap();map5.put(record.type,夏黑);map5.put(record.name,葡萄);map5.put(record.num,15);MapString,Object map6 new HashMap();map6.put(record.type,阳光玫瑰);map6.put(record.name,葡萄);map6.put(record.num,30);MapString,Object map7 new HashMap();map7.put(record.type,芝麻蕉);map7.put(record.name,香蕉);map7.put(record.num,20);list.add(map);list.add(map2);list.add(map3);list.add(map4);list.add(map5);list.add(map6);list.add(map7);String s JSON.toJSONString(list);String express SUMIF(aa,bb,cc,dd);context.put(aa,s);context.put(bb,record.type);context.put(cc,!美国);context.put(dd,record.num);Object object formulaRunner.execute(express, context, null, true, true);System.out.println(object);}} 运行结果
http://www.zqtcl.cn/news/427520/

相关文章:

  • 中文 域名的网站用wordpress做的网站有哪些
  • 网站建设中需要注意的问题唐山自助建站模板
  • 网站建设捌金手指下拉一重庆 网站定制
  • 网站建设需求调研方法自己做网站要多少钱
  • 北流网站建设公众号开发 表格
  • 做教育类网站一般流程苏宁易购网站风格
  • 兼职网站推广如何做如何用ps做网站
  • 济南外贸网站建设软件公司网站
  • 衡阳做网站注册网站流程
  • 关于网站建设的申请报告wordpress花园网站
  • jsp网站 iis免费企业信息查询
  • 泊头市网站建设公司只有企业自己建立网站平台进行
  • 有阿里云服务器 怎么做网站找广告设计
  • 网站建设 ui设计公司素材网站源码
  • 网站响应式布局wordpress代码混乱
  • 免费建设个人网站四川建设人员信息查询
  • 做国际网站有哪些专门做拼花网站
  • eclipse sdk做网站小程序开发报价明细
  • 网站开发源码售卖合同百度广告投诉电话
  • wordpress读法鄂州seo
  • 网站建设方案的写作方法媒体发稿推广
  • 免费的网站空间注册空壳公司判几年
  • 网站怎么运营推广达美网站建设
  • 江苏建设人才网网站中国最新时事新闻
  • 网站建立时间毕节地seo
  • 央企网站建设意义长沙网约车
  • 广告联盟怎么建设网站做贸易 公司网站放哪里
  • 北京建设局网站首页开发游戏用什么软件
  • 做淘宝客网站能接广告吗网站悬浮二维码
  • 重庆自助建站模板网站建设juxinghulian