Browse Source

update

main
wangshaoping 11 months ago
parent
commit
e6e57c006d
  1. 19
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/support/HtmlUtil.java
  2. 200
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/Indicator.java
  3. 22
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorLib.java
  4. 66
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorProcessor.java
  5. 72
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorValidator.java
  6. 60
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/IndicatorValidator.java
  7. 99
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/IndicatorParameter.java
  8. 80
      io.sc.engine.rule.frontend/public/index.html
  9. 457
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css
  10. BIN
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.eot
  11. 1
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.js
  12. 779
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.json
  13. 356
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.svg
  14. BIN
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.ttf
  15. BIN
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.woff
  16. BIN
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.woff2
  17. 1944
      io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/index.html
  18. 23
      io.sc.engine.rule.frontend/src/components/index.ts
  19. 18
      io.sc.engine.rule.frontend/src/i18n/index.ts
  20. 20
      io.sc.engine.rule.frontend/src/mock/index.ts
  21. 133
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorEntityConverter.java
  22. 223
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorProcessorEntityConverter.java
  23. 173
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorValidatorEntityConverter.java
  24. 296
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java
  25. 116
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java
  26. 136
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java
  27. 26
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/exception/IndicatorAlreadyExistsException.java
  28. 12
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/IndicatorValidatorService.java
  29. 14
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/IndicatorEntityChangedEvent.java
  30. 14
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/IndicatorProcessorEntityChangedEvent.java
  31. 13
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/IndicatorLibVo.java
  32. 96
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/IndicatorParameterEntity.java
  33. 42
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/IndicatorParameterVo.java

19
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/support/HtmlUtil.java

@ -0,0 +1,19 @@
package io.sc.engine.rule.core.mxgraph.support;
import org.springframework.util.StringUtils;
public class HtmlUtil {
private static final String htmlRegex="<[^>]+>";
private static final String paragraphRegex="<p>[^>]*</p>";
private static final String hrRegex="<hr[^>]*/>";
public static String text(String html) {
if(StringUtils.hasText(html)) {
html =html.replaceAll(paragraphRegex, "\n");
html =html.replaceAll(hrRegex, "\n\n");
html =html.replaceAll(htmlRegex, "");
return html;
}
return html;
}
}

200
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/Indicator.java

@ -0,0 +1,200 @@
package io.sc.engine.rule.core.po.lib;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import io.sc.engine.rule.core.code.impl.support.ResourceWrapper;
import io.sc.engine.rule.core.code.impl.support.parameter.ParameterGroovyCodeContributionItem;
import io.sc.engine.rule.core.enums.IndicatorType;
import io.sc.engine.rule.core.enums.ValueType;
import io.sc.engine.rule.core.po.lib.indicator.IndicatorIndicator;
import io.sc.engine.rule.core.po.lib.indicator.InterfaceIndicator;
import io.sc.engine.rule.core.po.lib.processor.EmptyIndicatorProcessor;
import io.sc.engine.rule.core.util.CodeReplacer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
/**
* 指标
* @author wangshaoping
*
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=EmptyIndicatorProcessor.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=InterfaceIndicator.class), //接口指标
@JsonSubTypes.Type(value=IndicatorIndicator.class) //计算指标
})
public abstract class Indicator implements ParameterGroovyCodeContributionItem{
protected String id; //ID,主键
protected String code; //代码
protected String name; //名称
protected String description; //描述
protected String valueType; //值类型
protected Integer valueTypeVersion; //值类型版本号
protected Integer valueScale; //参数值精度
protected RoundingMode valueRoundingMode;//参数值四舍五入模式
protected Boolean valueTypeIsList; //参数值类型是否是列表
protected String defaultValue; //默认值
protected Integer order; //排序
protected List<IndicatorValidator> validators =new ArrayList<IndicatorValidator>();//指标包含的验证器
protected List<IndicatorProcessor> processors =new ArrayList<IndicatorProcessor>();//指标包含的处理器
@JsonIgnore
public abstract IndicatorType getType();
public String getValueTypeFullName() {
String parameterValueType =this.getValueType();
if(ValueType.isBaseType(parameterValueType)) {
parameterValueType =ValueType.getSimpleJavaType(parameterValueType);
}else {
parameterValueType =parameterValueType + (this.getValueTypeVersion()==null?"":"_V" + this.getValueTypeVersion());
}
return parameterValueType;
}
@Override
public String forArgumentField(ResourceWrapper wrapper) {
StringBuilder sb =new StringBuilder("");
String parameterCode =this.getCode();
String parameterValueType =getValueTypeFullName();
if("String".equals(parameterValueType)) {
if(this.getDefaultValue()!=null) {
sb.append("String ").append(CodeReplacer.fieldName(parameterCode)).append(" =\"\"\"").append(this.getDefaultValue()).append("\"\"\"").append(";");
}else {
sb.append("String ").append(CodeReplacer.fieldName(parameterCode)).append(";");
}
sb.append("//").append(this.getName());
}else {
if(this.getDefaultValue()!=null) {
sb.append(parameterValueType).append(" ").append(CodeReplacer.fieldName(parameterCode)).append(" =").append(this.getDefaultValue()).append(";");
}else {
sb.append(parameterValueType).append(" ").append(CodeReplacer.fieldName(parameterCode)).append(";");
}
sb.append("//").append(this.getName());
}
return sb.toString();
}
@Override
public String forConvertArgumentFromMap(ResourceWrapper wrapper,String targetVarName) {
StringBuilder sb =new StringBuilder("");
String parameterCode =this.getCode();
String parameterValueType =getValueTypeFullName();
if(this.getValueTypeIsList()) {
sb.append("obj =DataTypeConvertor.convert(map.get(\"").append(parameterCode).append("\"),");
sb.append("new TypeReference<List<").append(parameterValueType).append(">>(){});\n");
}else {
sb.append("obj =DataTypeConvertor.convert(map.get(\"").append(parameterCode).append("\"),");
sb.append(parameterValueType).append(".class);\n");
}
sb.append("\t\t\t");
sb.append("if(obj!=null){");
sb.append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append(" =obj;");
sb.append("}");
sb.append("//").append(this.getName());
if(!ValueType.isBaseType(parameterValueType)) {
sb.append("\n\t\t\t");
sb.append("if(").append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append("!=null){");
sb.append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append(".init();}");
}
return sb.toString();
}
@Override
public String forConvertArgumentFromJson(ResourceWrapper wrapper,String targetVarName) {
StringBuilder sb =new StringBuilder("");
String parameterValueType =getValueTypeFullName();
if(!ValueType.isBaseType(parameterValueType)) {
sb.append("if(").append(targetVarName).append(".").append(CodeReplacer.fieldName(this.getCode())).append("!=null){");
sb.append(targetVarName).append(".").append(CodeReplacer.fieldName(this.getCode())).append(".init();}");
}else {
sb.append("//skip ").append(this.getName());
}
return sb.toString();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getValueType() {
return valueType;
}
public void setValueType(String valueType) {
this.valueType = valueType;
}
public Integer getValueTypeVersion() {
return valueTypeVersion;
}
public void setValueTypeVersion(Integer valueTypeVersion) {
this.valueTypeVersion = valueTypeVersion;
}
public Integer getValueScale() {
return valueScale;
}
public void setValueScale(Integer valueScale) {
this.valueScale = valueScale;
}
public RoundingMode getValueRoundingMode() {
return valueRoundingMode;
}
public void setValueRoundingMode(RoundingMode valueRoundingMode) {
this.valueRoundingMode = valueRoundingMode;
}
public Boolean getValueTypeIsList() {
return valueTypeIsList;
}
public void setValueTypeIsList(Boolean valueTypeIsList) {
this.valueTypeIsList = valueTypeIsList;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public List<IndicatorValidator> getValidators() {
return validators;
}
public void setValidators(List<IndicatorValidator> validators) {
this.validators = validators;
}
public List<IndicatorProcessor> getProcessors() {
return processors;
}
public void setProcessors(List<IndicatorProcessor> processors) {
this.processors = processors;
}
}

22
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorLib.java

@ -0,0 +1,22 @@
package io.sc.engine.rule.core.po.lib;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonTypeName;
@JsonTypeName("INDICATOR")
@JsonIgnoreProperties(ignoreUnknown=true)
public class IndicatorLib extends ReleasableLib {
protected List<Indicator> indicators =new ArrayList<Indicator>();
public List<Indicator> getIndicators() {
return indicators;
}
public void setIndicators(List<Indicator> indicators) {
this.indicators = indicators;
}
}

66
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorProcessor.java

@ -0,0 +1,66 @@
package io.sc.engine.rule.core.po.lib;
import io.sc.engine.rule.core.enums.ProcessorType;
import io.sc.engine.rule.core.po.lib.processor.ArithmeticIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.ConditionRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.EmptyIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.GroovyScriptIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.HttpRequestIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.NumberRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.SqlIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.TernaryIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.WhenThenIndicatorProcessor;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
/**
* 指标处理器
* @author wangshaoping
*
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=EmptyIndicatorProcessor.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=EmptyIndicatorProcessor.class), //空处理器
@JsonSubTypes.Type(value=TernaryIndicatorProcessor.class), //三元操作处理器
@JsonSubTypes.Type(value=ArithmeticIndicatorProcessor.class), //算数操作处理器
@JsonSubTypes.Type(value=WhenThenIndicatorProcessor.class), //When-Then 操作处理器
@JsonSubTypes.Type(value=NumberRangeIndicatorProcessor.class), //数值范围处理器
@JsonSubTypes.Type(value=ConditionRangeIndicatorProcessor.class), //条件范围处理器
@JsonSubTypes.Type(value=GroovyScriptIndicatorProcessor.class), //脚本代码处理器
@JsonSubTypes.Type(value=SqlIndicatorProcessor.class), //SQL赋值处理器
@JsonSubTypes.Type(value=HttpRequestIndicatorProcessor.class) //Http请求处理器
})
public class IndicatorProcessor {
protected ProcessorType type; //类型
protected String id; //ID,主键
protected String description; //描述
protected Integer order; //排序
@JsonIgnore
public ProcessorType getType() {
return type;
}
public void setType(ProcessorType type) {
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}

72
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/IndicatorValidator.java

@ -0,0 +1,72 @@
package io.sc.engine.rule.core.po.lib;
import io.sc.engine.rule.core.enums.ValidatorType;
import io.sc.engine.rule.core.po.lib.processor.EmptyIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.validator.DateRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.DecimalRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.EmailIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.EmptyIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.FalseIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.IntegerRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.LengthRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.NotEmptyIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.PatternIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.TrueIndicatorValidator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
/**
* 指标验证器
* @author wangshaoping
*
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=EmptyIndicatorProcessor.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=DateRangeIndicatorValidator.class),
@JsonSubTypes.Type(value=DecimalRangeIndicatorValidator.class),
@JsonSubTypes.Type(value=EmailIndicatorValidator.class),
@JsonSubTypes.Type(value=EmptyIndicatorValidator.class),
@JsonSubTypes.Type(value=FalseIndicatorValidator.class),
@JsonSubTypes.Type(value=IntegerRangeIndicatorValidator.class),
@JsonSubTypes.Type(value=LengthRangeIndicatorValidator.class),
@JsonSubTypes.Type(value=NotEmptyIndicatorValidator.class),
@JsonSubTypes.Type(value=PatternIndicatorValidator.class),
@JsonSubTypes.Type(value=TrueIndicatorValidator.class)
})
public abstract class IndicatorValidator {
protected String id;//ID,主键
protected String description;//描述
protected Integer order;//排序
protected String tip;//错误提示
@JsonIgnore
public abstract ValidatorType getType();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
}

60
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/IndicatorValidator.java

@ -0,0 +1,60 @@
package io.sc.engine.rule.core.po.model;
import io.sc.engine.rule.core.po.lib.processor.ArithmeticIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.ConditionRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.EmptyIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.GroovyScriptIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.NumberRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.TernaryIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.WhenThenIndicatorProcessor;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
/**
* 指标验证器
* @author wangshaoping
*
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=EmptyIndicatorProcessor.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=EmptyIndicatorProcessor.class), //空处理器
@JsonSubTypes.Type(value=TernaryIndicatorProcessor.class), //三元操作处理器
@JsonSubTypes.Type(value=ArithmeticIndicatorProcessor.class), //算数操作处理器
@JsonSubTypes.Type(value=WhenThenIndicatorProcessor.class), //When-Then 操作处理器
@JsonSubTypes.Type(value=NumberRangeIndicatorProcessor.class), //数值范围处理器
@JsonSubTypes.Type(value=ConditionRangeIndicatorProcessor.class), //条件范围处理器
@JsonSubTypes.Type(value=GroovyScriptIndicatorProcessor.class) //脚本代码处理器
})
public class IndicatorValidator {
protected String id;//ID,主键
protected String description;//描述
protected Integer order;//排序
protected String tip;//错误提示
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
}

99
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/IndicatorParameter.java

@ -0,0 +1,99 @@
package io.sc.engine.rule.core.po.model.parameter;
import io.sc.engine.rule.core.code.impl.support.ResourceWrapper;
import io.sc.engine.rule.core.code.impl.support.ResourceWrapper4Resource;
import io.sc.engine.rule.core.code.impl.support.lib.LibUtil;
import io.sc.engine.rule.core.code.impl.support.parameter.ParameterGroovyCodeContributionItem;
import io.sc.engine.rule.core.enums.ParameterType;
import io.sc.engine.rule.core.enums.ValueType;
import io.sc.engine.rule.core.po.lib.Indicator;
import io.sc.engine.rule.core.po.model.Parameter;
import io.sc.engine.rule.core.util.CodeReplacer;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonTypeName;
/**
* 模型参数(指标)
* @author wangshaoping
*
*/
@JsonTypeName("INDICATOR")
@JsonIgnoreProperties(ignoreUnknown=true)
public class IndicatorParameter extends Parameter implements ParameterGroovyCodeContributionItem{
protected String libCode;//库代码
protected Integer libVersion;//库版本
protected String indicatorCode;//指标代码
@Override
public String forConvertArgumentFromMap(ResourceWrapper wrapper,String targetVarName) {
StringBuilder sb =new StringBuilder("");
//只要进入此处执行,一定是 ResourceWrapper4Resource
ResourceWrapper4Resource resourceWrapper =(ResourceWrapper4Resource)wrapper;
Indicator indicator =LibUtil.findIndicator(resourceWrapper.getLibs(),this.getLibCode(),this.getLibVersion(),this.getIndicatorCode());
if(indicator!=null) {
String indicatorCode =indicator.getCode();
String parameterCode =this.getCode();
if(wrapper.getIsExecuteTestCase()) { //如果是在执行测试用例时
indicatorCode =this.getCode();
}
String parameterValueType =getValueTypeFullName();
if(this.getValueTypeIsList()) {
sb.append("obj =DataTypeConvertor.convert(map.get(\"").append(indicatorCode).append("\"),");
sb.append("new TypeReference<List<").append(parameterValueType).append(">>(){});\n");
}else {
sb.append("obj =DataTypeConvertor.convert(map.get(\"").append(indicatorCode).append("\"),");
sb.append(parameterValueType).append(".class);\n");
}
sb.append("\t\t\t");
sb.append("if(obj!=null){");
sb.append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append(" =obj;");
sb.append("}");
sb.append("//").append(this.getName());
if(!ValueType.isBaseType(parameterValueType)) {
sb.append("\n\t\t\t");
sb.append("if(").append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append("!=null){");
sb.append(targetVarName).append(".").append(CodeReplacer.fieldName(parameterCode)).append(".init();}");
}
sb.append("\n");
}
return sb.toString();
}
@Override
public ParameterType getType() {
return ParameterType.INDICATOR;
}
public String getLibCode() {
return libCode;
}
public void setLibCode(String libCode) {
this.libCode = libCode;
}
public Integer getLibVersion() {
return libVersion;
}
public void setLibVersion(Integer libVersion) {
this.libVersion = libVersion;
}
public String getIndicatorCode() {
return indicatorCode;
}
public void setIndicatorCode(String indicatorCode) {
this.indicatorCode = indicatorCode;
}
@Override
public String getValueType() {
return super.getValueType();
}
@Override
public Integer getValueTypeVersion() {
return super.getValueTypeVersion();
}
}

80
io.sc.engine.rule.frontend/public/index.html

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- luckysheet css -->
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css}"/>
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/plugins.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/plugins.css}"/>
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/css/luckysheet.css" th:href="@{/webjars/luckysheet/2.1.13/css/luckysheet.css}"/>
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css" th:href="@{/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css}"/>
<!-- luckysheet js -->
<script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script>
<script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script>
<!-- tailwindcss js -->
<script src="/webjars/tailwindcss/3.3.5/tailwindcss.js" th:src="@{/webjars/tailwindcss/3.3.5/tailwindcss.js}"></script>
<script src="/configure.js" th:src="@{/configure.js}"></script>
</head>
<body>
<noscript>
<strong th:text="#{noscript}">抱歉, {} 在浏览器未开启 JavaScript 时不能正常工作. 请开启后重试.</strong>
</noscript>
<!--加载 js 时,-->
<div id="appInitializer" style="height: 100vh; display: grid; place-items: center;"><!--全屏高度,grid布局,子元素垂直方向位于屏幕中间-->
<div style="display: grid; justify-items: center;"><!--grid布局, 子元素水平方向位于屏幕中间-->
<svg style="color: #14234a;" width="48px" height="48px" stroke="currentColor" fill="currentColor" viewBox="0 0 64 64">
<g stroke-width="4" stroke-linecap="round">
<line y1="17" y2="29" transform="translate(32,32) rotate(180)">
<animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(210)">
<animate attributeName="stroke-opacity" dur="750ms" values="0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(240)">
<animate attributeName="stroke-opacity" dur="750ms" values=".1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(270)">
<animate attributeName="stroke-opacity" dur="750ms" values=".15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(300)">
<animate attributeName="stroke-opacity" dur="750ms" values=".25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(330)">
<animate attributeName="stroke-opacity" dur="750ms" values=".35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(0)">
<animate attributeName="stroke-opacity" dur="750ms" values=".45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(30)">
<animate attributeName="stroke-opacity" dur="750ms" values=".55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(60)">
<animate attributeName="stroke-opacity" dur="750ms" values=".65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(90)">
<animate attributeName="stroke-opacity" dur="750ms" values=".7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(120)">
<animate attributeName="stroke-opacity" dur="750ms" values=".85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(150)">
<animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate>
</line>
</g>
</svg>
<div style="padding: 10px;" th:text="#{pageLoading}">正在加载, 请稍后......</div>
<div id="appInitializerStatus"></div>
</div>
</div>
<div id="app"></div>
<!-- 以下会生成由 HtmlWebpackPlugin webpack 插件自动注入需要的资源引用 -->
</body>
</html>

457
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css

File diff suppressed because one or more lines are too long

BIN
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.eot

Binary file not shown.

1
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.js

File diff suppressed because one or more lines are too long

779
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.json

@ -0,0 +1,779 @@
{
"id": "1990368",
"name": "lucksheet",
"font_family": "iconfont",
"css_prefix_text": "luckysheet-iconfont-",
"description": "",
"glyphs": [
{
"icon_id": "17878780",
"name": "链接",
"font_class": "lianjie",
"unicode": "e7f8",
"unicode_decimal": 59384
},
{
"icon_id": "17612330",
"name": "打印区域",
"font_class": "dayinquyu",
"unicode": "e7f5",
"unicode_decimal": 59381
},
{
"icon_id": "17612331",
"name": "打印页面配置",
"font_class": "dayinyemianpeizhi",
"unicode": "e7f6",
"unicode_decimal": 59382
},
{
"icon_id": "17612332",
"name": "打印标题",
"font_class": "dayinbiaoti",
"unicode": "e7f7",
"unicode_decimal": 59383
},
{
"icon_id": "17600443",
"name": "分页预览",
"font_class": "fenyeyulan",
"unicode": "e7f2",
"unicode_decimal": 59378
},
{
"icon_id": "17600444",
"name": "普通",
"font_class": "putong",
"unicode": "e7f3",
"unicode_decimal": 59379
},
{
"icon_id": "17600445",
"name": "页面布局",
"font_class": "yemianbuju",
"unicode": "e7f4",
"unicode_decimal": 59380
},
{
"icon_id": "17597312",
"name": "表格锁定",
"font_class": "biaogesuoding",
"unicode": "e7ee",
"unicode_decimal": 59374
},
{
"icon_id": "17444514",
"name": "转到",
"font_class": "zhuandao1",
"unicode": "e7f1",
"unicode_decimal": 59377
},
{
"icon_id": "17444503",
"name": "右箭头",
"font_class": "youjiantou",
"unicode": "e7ed",
"unicode_decimal": 59373
},
{
"icon_id": "17444507",
"name": "菜单",
"font_class": "caidan2",
"unicode": "e7ef",
"unicode_decimal": 59375
},
{
"icon_id": "17444508",
"name": "替换",
"font_class": "tihuan",
"unicode": "e7f0",
"unicode_decimal": 59376
},
{
"icon_id": "17392794",
"name": "冻结",
"font_class": "dongjie1",
"unicode": "e7e1",
"unicode_decimal": 59361
},
{
"icon_id": "17392795",
"name": "剪",
"font_class": "jian1",
"unicode": "e7e2",
"unicode_decimal": 59362
},
{
"icon_id": "17392796",
"name": "加",
"font_class": "jia1",
"unicode": "e7e3",
"unicode_decimal": 59363
},
{
"icon_id": "17392797",
"name": "溢出",
"font_class": "yichu1",
"unicode": "e7e4",
"unicode_decimal": 59364
},
{
"icon_id": "17392798",
"name": "升序",
"font_class": "shengxu1",
"unicode": "e7e5",
"unicode_decimal": 59365
},
{
"icon_id": "17392799",
"name": "内框线",
"font_class": "neikuangxian",
"unicode": "e7e6",
"unicode_decimal": 59366
},
{
"icon_id": "17392800",
"name": "清除筛选",
"font_class": "qingchushaixuan",
"unicode": "e7e7",
"unicode_decimal": 59367
},
{
"icon_id": "17392801",
"name": "文本向上",
"font_class": "wenbenxiangshang",
"unicode": "e7e8",
"unicode_decimal": 59368
},
{
"icon_id": "17392802",
"name": "降序",
"font_class": "jiangxu1",
"unicode": "e7e9",
"unicode_decimal": 59369
},
{
"icon_id": "17392803",
"name": "内框横线",
"font_class": "neikuanghengxian",
"unicode": "e7ea",
"unicode_decimal": 59370
},
{
"icon_id": "17392804",
"name": "内框竖线",
"font_class": "neikuangshuxian",
"unicode": "e7eb",
"unicode_decimal": 59371
},
{
"icon_id": "17392805",
"name": "自定义排序",
"font_class": "zidingyipaixu",
"unicode": "e7ec",
"unicode_decimal": 59372
},
{
"icon_id": "16746498",
"name": "logo2",
"font_class": "logo2",
"unicode": "e7df",
"unicode_decimal": 59359
},
{
"icon_id": "16746532",
"name": "logo",
"font_class": "logo",
"unicode": "e7e0",
"unicode_decimal": 59360
},
{
"icon_id": "16730159",
"name": "文本倾斜",
"font_class": "wenbenqingxie1",
"unicode": "e7de",
"unicode_decimal": 59358
},
{
"icon_id": "16728412",
"name": "加粗",
"font_class": "jiacu",
"unicode": "e7d9",
"unicode_decimal": 59353
},
{
"icon_id": "16728080",
"name": "搜索",
"font_class": "sousuo",
"unicode": "e78a",
"unicode_decimal": 59274
},
{
"icon_id": "16728081",
"name": "关闭",
"font_class": "guanbi",
"unicode": "e78b",
"unicode_decimal": 59275
},
{
"icon_id": "16728082",
"name": "下一个",
"font_class": "xiayige",
"unicode": "e78c",
"unicode_decimal": 59276
},
{
"icon_id": "16728083",
"name": "下拉",
"font_class": "xiala",
"unicode": "e78d",
"unicode_decimal": 59277
},
{
"icon_id": "16728084",
"name": "文本颜色",
"font_class": "wenbenyanse",
"unicode": "e78e",
"unicode_decimal": 59278
},
{
"icon_id": "16728085",
"name": "上一个",
"font_class": "shangyige",
"unicode": "e78f",
"unicode_decimal": 59279
},
{
"icon_id": "16728086",
"name": "数据透视",
"font_class": "shujutoushi",
"unicode": "e790",
"unicode_decimal": 59280
},
{
"icon_id": "16728087",
"name": "填充",
"font_class": "tianchong",
"unicode": "e791",
"unicode_decimal": 59281
},
{
"icon_id": "16728088",
"name": "增加小数位",
"font_class": "zengjiaxiaoshuwei",
"unicode": "e792",
"unicode_decimal": 59282
},
{
"icon_id": "16728089",
"name": "编辑2",
"font_class": "bianji2",
"unicode": "e793",
"unicode_decimal": 59283
},
{
"icon_id": "16728090",
"name": "截屏",
"font_class": "jieping",
"unicode": "e794",
"unicode_decimal": 59284
},
{
"icon_id": "16728092",
"name": "减小小数位",
"font_class": "jianxiaoxiaoshuwei",
"unicode": "e796",
"unicode_decimal": 59286
},
{
"icon_id": "16728093",
"name": "菜单",
"font_class": "caidan",
"unicode": "e797",
"unicode_decimal": 59287
},
{
"icon_id": "16728094",
"name": "数据库",
"font_class": "shujuku",
"unicode": "e798",
"unicode_decimal": 59288
},
{
"icon_id": "16728095",
"name": "无边框",
"font_class": "wubiankuang",
"unicode": "e799",
"unicode_decimal": 59289
},
{
"icon_id": "16728096",
"name": "编辑",
"font_class": "bianji",
"unicode": "e79a",
"unicode_decimal": 59290
},
{
"icon_id": "16728097",
"name": "清除样式",
"font_class": "qingchuyangshi",
"unicode": "e79b",
"unicode_decimal": 59291
},
{
"icon_id": "16728099",
"name": "删除",
"font_class": "shanchu",
"unicode": "e79c",
"unicode_decimal": 59292
},
{
"icon_id": "16728100",
"name": "文本居中对齐",
"font_class": "wenbenjuzhongduiqi",
"unicode": "e79d",
"unicode_decimal": 59293
},
{
"icon_id": "16728101",
"name": "打印",
"font_class": "dayin",
"unicode": "e79e",
"unicode_decimal": 59294
},
{
"icon_id": "16728102",
"name": "文本分割",
"font_class": "wenbenfenge",
"unicode": "e79f",
"unicode_decimal": 59295
},
{
"icon_id": "16728103",
"name": "函数‘",
"font_class": "hanshu",
"unicode": "e7a0",
"unicode_decimal": 59296
},
{
"icon_id": "16728104",
"name": "降序",
"font_class": "jiangxu",
"unicode": "e7a1",
"unicode_decimal": 59297
},
{
"icon_id": "16728105",
"name": "顶部对齐",
"font_class": "dingbuduiqi",
"unicode": "e7a2",
"unicode_decimal": 59298
},
{
"icon_id": "16728106",
"name": "图片",
"font_class": "tupian",
"unicode": "e7a3",
"unicode_decimal": 59299
},
{
"icon_id": "16728107",
"name": "向下90",
"font_class": "xiangxia90",
"unicode": "e7a4",
"unicode_decimal": 59300
},
{
"icon_id": "16728108",
"name": "竖排文字",
"font_class": "shupaiwenzi",
"unicode": "e7a5",
"unicode_decimal": 59301
},
{
"icon_id": "16728109",
"name": "全加边框",
"font_class": "quanjiabiankuang",
"unicode": "e7a6",
"unicode_decimal": 59302
},
{
"icon_id": "16728110",
"name": "升序",
"font_class": "shengxu",
"unicode": "e7a7",
"unicode_decimal": 59303
},
{
"icon_id": "16728111",
"name": "裁剪",
"font_class": "caijian",
"unicode": "e7a8",
"unicode_decimal": 59304
},
{
"icon_id": "16728112",
"name": "金额",
"font_class": "jine",
"unicode": "e7a9",
"unicode_decimal": 59305
},
{
"icon_id": "16728113",
"name": "菜单1",
"font_class": "caidan1",
"unicode": "e7aa",
"unicode_decimal": 59306
},
{
"icon_id": "16728114",
"name": "取消合并",
"font_class": "quxiaohebing",
"unicode": "e7ab",
"unicode_decimal": 59307
},
{
"icon_id": "16728115",
"name": "文本下划线",
"font_class": "wenbenxiahuaxian",
"unicode": "e7ac",
"unicode_decimal": 59308
},
{
"icon_id": "16728116",
"name": "上边框",
"font_class": "shangbiankuang",
"unicode": "e7ad",
"unicode_decimal": 59309
},
{
"icon_id": "16728117",
"name": "定位",
"font_class": "dingwei",
"unicode": "e7ae",
"unicode_decimal": 59310
},
{
"icon_id": "16728118",
"name": "四周加边框",
"font_class": "sizhoujiabiankuang",
"unicode": "e7af",
"unicode_decimal": 59311
},
{
"icon_id": "16728119",
"name": "侧边栏收起",
"font_class": "cebianlanshouqi",
"unicode": "e7b0",
"unicode_decimal": 59312
},
{
"icon_id": "16728120",
"name": "合并",
"font_class": "hebing",
"unicode": "e7b1",
"unicode_decimal": 59313
},
{
"icon_id": "16728121",
"name": "向上倾斜",
"font_class": "xiangshangqingxie",
"unicode": "e7b2",
"unicode_decimal": 59314
},
{
"icon_id": "16728122",
"name": "水平对齐",
"font_class": "shuipingduiqi",
"unicode": "e7b3",
"unicode_decimal": 59315
},
{
"icon_id": "16728123",
"name": "文本删除线",
"font_class": "wenbenshanchuxian",
"unicode": "e7b4",
"unicode_decimal": 59316
},
{
"icon_id": "16728124",
"name": "文本右对齐",
"font_class": "wenbenyouduiqi",
"unicode": "e7b5",
"unicode_decimal": 59317
},
{
"icon_id": "16728125",
"name": "前进",
"font_class": "qianjin",
"unicode": "e7b6",
"unicode_decimal": 59318
},
{
"icon_id": "16728126",
"name": "图表",
"font_class": "tubiao",
"unicode": "e7b7",
"unicode_decimal": 59319
},
{
"icon_id": "16728127",
"name": "右边框",
"font_class": "youbiankuang",
"unicode": "e7b8",
"unicode_decimal": 59320
},
{
"icon_id": "16728128",
"name": "百分号",
"font_class": "baifenhao",
"unicode": "e7b9",
"unicode_decimal": 59321
},
{
"icon_id": "16728129",
"name": "格式刷",
"font_class": "geshishua",
"unicode": "e7ba",
"unicode_decimal": 59322
},
{
"icon_id": "16728130",
"name": "保存",
"font_class": "baocun",
"unicode": "e7bb",
"unicode_decimal": 59323
},
{
"icon_id": "16728131",
"name": "数据验证",
"font_class": "shujuyanzheng",
"unicode": "e7bc",
"unicode_decimal": 59324
},
{
"icon_id": "16728132",
"name": "截断",
"font_class": "jieduan",
"unicode": "e7bd",
"unicode_decimal": 59325
},
{
"icon_id": "16728133",
"name": "格式条件",
"font_class": "geshitiaojian",
"unicode": "e7be",
"unicode_decimal": 59326
},
{
"icon_id": "16728134",
"name": "自动换行",
"font_class": "zidonghuanhang",
"unicode": "e7bf",
"unicode_decimal": 59327
},
{
"icon_id": "16728135",
"name": "侧边栏展开",
"font_class": "cebianlanzhankai",
"unicode": "e7c0",
"unicode_decimal": 59328
},
{
"icon_id": "16728136",
"name": "筛选2",
"font_class": "shaixuan2",
"unicode": "e7c1",
"unicode_decimal": 59329
},
{
"icon_id": "16728137",
"name": "向下倾斜",
"font_class": "xiangxiaqingxie",
"unicode": "e7c2",
"unicode_decimal": 59330
},
{
"icon_id": "16728138",
"name": "溢出",
"font_class": "yichu",
"unicode": "e7c3",
"unicode_decimal": 59331
},
{
"icon_id": "16728139",
"name": "垂直合并",
"font_class": "chuizhihebing",
"unicode": "e7c4",
"unicode_decimal": 59332
},
{
"icon_id": "16728140",
"name": "文本分散对齐",
"font_class": "wenbenfensanduiqi",
"unicode": "e7c5",
"unicode_decimal": 59333
},
{
"icon_id": "16728141",
"name": "左边框",
"font_class": "zuobiankuang",
"unicode": "e7c6",
"unicode_decimal": 59334
},
{
"icon_id": "16728142",
"name": "分页查看",
"font_class": "fenyechakan",
"unicode": "e7c7",
"unicode_decimal": 59335
},
{
"icon_id": "16728143",
"name": "运行",
"font_class": "yunhang",
"unicode": "e7c8",
"unicode_decimal": 59336
},
{
"icon_id": "16728144",
"name": "列",
"font_class": "lie",
"unicode": "e7c9",
"unicode_decimal": 59337
},
{
"icon_id": "16728145",
"name": "全屏",
"font_class": "quanping",
"unicode": "e7ca",
"unicode_decimal": 59338
},
{
"icon_id": "16728146",
"name": "筛选",
"font_class": "shaixuan",
"unicode": "e7cb",
"unicode_decimal": 59339
},
{
"icon_id": "16728147",
"name": "更新",
"font_class": "gengxin",
"unicode": "e7cc",
"unicode_decimal": 59340
},
{
"icon_id": "16728148",
"name": "清除",
"font_class": "qingchu",
"unicode": "e7cd",
"unicode_decimal": 59341
},
{
"icon_id": "16728149",
"name": "行",
"font_class": "hang",
"unicode": "e7ce",
"unicode_decimal": 59342
},
{
"icon_id": "16728150",
"name": "注释",
"font_class": "zhushi",
"unicode": "e7cf",
"unicode_decimal": 59343
},
{
"icon_id": "16728151",
"name": "剪",
"font_class": "jian",
"unicode": "e7d0",
"unicode_decimal": 59344
},
{
"icon_id": "16728152",
"name": "计算",
"font_class": "jisuan",
"unicode": "e7d1",
"unicode_decimal": 59345
},
{
"icon_id": "16728153",
"name": "加",
"font_class": "jia",
"unicode": "e7d2",
"unicode_decimal": 59346
},
{
"icon_id": "16728154",
"name": "底部对齐",
"font_class": "dibuduiqi",
"unicode": "e7d3",
"unicode_decimal": 59347
},
{
"icon_id": "16728155",
"name": "向上90",
"font_class": "xiangshang90",
"unicode": "e7d4",
"unicode_decimal": 59348
},
{
"icon_id": "16728156",
"name": "无选装",
"font_class": "wuxuanzhuang",
"unicode": "e7d5",
"unicode_decimal": 59349
},
{
"icon_id": "16728157",
"name": "显示隐藏网格",
"font_class": "xianshiyincangwangge",
"unicode": "e7d6",
"unicode_decimal": 59350
},
{
"icon_id": "16728158",
"name": "冻结",
"font_class": "dongjie",
"unicode": "e7d7",
"unicode_decimal": 59351
},
{
"icon_id": "16728159",
"name": "文本左对齐",
"font_class": "wenbenzuoduiqi",
"unicode": "e7d8",
"unicode_decimal": 59352
},
{
"icon_id": "16728161",
"name": "后退",
"font_class": "houtui",
"unicode": "e7da",
"unicode_decimal": 59354
},
{
"icon_id": "16728162",
"name": "水平合并",
"font_class": "shuipinghebing",
"unicode": "e7db",
"unicode_decimal": 59355
},
{
"icon_id": "16728163",
"name": "下边框",
"font_class": "xiabiankuang",
"unicode": "e7dc",
"unicode_decimal": 59356
},
{
"icon_id": "16728164",
"name": "设置",
"font_class": "shezhi",
"unicode": "e7dd",
"unicode_decimal": 59357
}
]
}

356
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.svg

@ -0,0 +1,356 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="lianjie" unicode="&#59384;" d="M771.584 644.266667c-49.066667 51.2-132.266667 51.2-181.333333 0l-74.666667-76.8c-8.533333-8.533333-8.533333-23.466667 0-32 8.533333-8.533333 21.333333-8.533333 29.866667 0l74.666666 76.8c34.133333 34.133333 87.466667 34.133333 121.6 0 34.133333-34.133333 34.133333-89.6 0-123.733334l-121.6-123.733333c-34.133333-34.133333-87.466667-34.133333-121.6 0-8.533333 8.533333-21.333333 8.533333-29.866666 0-8.533333-8.533333-8.533333-23.466667 0-32 49.066667-51.2 132.266667-51.2 181.333333 0l121.6 123.733333c51.2 53.333333 51.2 136.533333 0 187.733334zM477.184 232.533333l-74.666667-76.8c-34.133333-34.133333-87.466667-34.133333-121.6 0-34.133333 34.133333-34.133333 89.6 0 123.733334l121.6 123.733333c34.133333 34.133333 87.466667 34.133333 121.6 0 8.533333-8.533333 21.333333-8.533333 29.866667 0 8.533333 8.533333 8.533333 23.466667 0 32-49.066667 51.2-132.266667 51.2-181.333333 0l-121.6-123.733333c-51.2-51.2-49.066667-134.4 0-185.6 49.066667-51.2 132.266667-51.2 181.333333 0l74.666667 76.8c8.533333 8.533333 8.533333 23.466667 0 32-8.533333 6.4-21.333333 6.4-29.866667-2.133334z" horiz-adv-x="1024" />
<glyph glyph-name="dayinquyu" unicode="&#59381;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM362.666667 170.666667v-42.666667h-128v42.666667h128z m128 0v-42.666667h-42.666667v42.666667h42.666667z m301.696 143.957333a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2zM256 362.666667v-128H213.333333v128h42.666667z m411.477333-85.845334H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM768 533.333333v-128h-42.666667v128h42.666667z m-512 42.666667v-128H213.333333v128h42.666667zM768 682.666667v-64h-42.666667V640h-64V682.666667H768zM362.666667 682.666667v-42.666667H256v-21.333333H213.333333V682.666667h149.333334z m213.333333 0v-42.666667h-128V682.666667h128z" horiz-adv-x="1024" />
<glyph glyph-name="dayinyemianpeizhi" unicode="&#59382;" d="M635.477333 682.666667H388.522667c-15.530667 0-28.16-13.226667-28.288-29.610667v-71.68h303.530666v71.68c0 16.298667-12.586667 29.568-28.288 29.568V682.666667z m7.978667-388.48H380.586667a23.893333 23.893333 0 0 1-17.365334-7.509334 26.581333 26.581333 0 0 1-7.253333-18.261333V85.333333h312.149333v183.125334a26.581333 26.581333 0 0 1-7.253333 18.218666 23.893333 23.893333 0 0 1-17.365333 7.509334z m130.602667 249.728H250.069333c-20.224 0-36.736-17.28-36.736-38.4v-234.410667c0-21.162667 16.512-38.442667 36.693334-38.442667h56.96v22.912c0.213333 42.666667 33.109333 77.184 73.557333 77.098667h262.912c40.448 0.085333 73.386667-34.389333 73.557333-77.098667v-22.912h56.917334c20.224 0 36.736 17.28 36.736 38.4V505.514667c-0.042667 21.290667-16.426667 38.485333-36.608 38.442666z m-249.813334-126.933334H323.498667c-13.44 0-24.405333 11.434667-24.490667 25.642667a25.173333 25.173333 0 0 0 24.490667 25.685333h200.746666c13.44 0 24.490667-11.52 24.490667-25.685333 0-14.08-11.050667-25.6-24.490667-25.6v-0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="dayinbiaoti" unicode="&#59383;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM768 682.666667v-277.333334h-42.666667V640H256v-469.333333h234.666667v-42.666667H213.333333V682.666667h554.666667z m24.362667-368.042667a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2z m-124.885334-37.802667H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM341.333333 554.666667h298.666667v-42.666667H341.333333zM341.333333 469.333333h170.666667v-42.666666H341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="fenyeyulan" unicode="&#59378;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM256 384h256v-42.666667H256zM554.666667 640v-298.666667h-42.666667V640zM405.333333 640v-298.666667h-42.666666V640z" horiz-adv-x="1024" />
<glyph glyph-name="putong" unicode="&#59379;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" />
<glyph glyph-name="yemianbuju" unicode="&#59380;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="biaogesuoding" unicode="&#59374;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334zM341.333333 512.128H256V128h85.333333V512.128z m426.666667 0H383.872V128H768V512.128z m-149.333333-21.461333a64 64 0 0 0 63.701333-57.856L682.666667 426.666667v-64h42.666666v-213.333334h-298.666666v213.333334h42.666666V426.666667a64 64 0 0 0 57.856 63.701333L533.333333 490.666667h85.333334z m64-170.666667h-213.333334v-128h213.333334v128z m-106.666667-21.333333a21.333333 21.333333 0 0 0 21.333333-21.333334v-42.666666a21.333333 21.333333 0 1 0-42.666666 0v42.666666a21.333333 21.333333 0 0 0 21.333333 21.333334z m42.666667 149.333333h-85.333334a21.333333 21.333333 0 0 1-20.992-17.493333L512 426.666667v-64h128V426.666667a21.333333 21.333333 0 0 1-13.909333 20.010666l-3.584 0.981334-3.84 0.341333zM768 640H383.872v-85.290667L768 554.666667V640zM341.333333 640H256v-85.333333l85.333333 0.042666V640z" horiz-adv-x="1024" />
<glyph glyph-name="zhuandao1" unicode="&#59377;" d="M804.992 201.941333l-84.650667 84.224c-7.552 7.509333-21.930667 8.448-26.026666-1.365333-1.066667-2.602667-1.365333-10.026667-1.365334-10.026667v-56.874666H406.442667a69.034667 69.034667 0 0 0-69.205334 68.778666 69.034667 69.034667 0 0 0 69.205334 68.821334h259.84a128.341333 128.341333 0 0 1 128.597333 127.829333 128.384 128.384 0 0 1-128.554667 127.914667H411.946667A101.632 101.632 0 0 1 213.333333 581.674667a101.632 101.632 0 1 1 198.613334-29.525334h254.378666a69.034667 69.034667 0 0 0 69.162667-68.821333 69.034667 69.034667 0 0 0-69.162667-68.778667H406.442667a128.341333 128.341333 0 0 1-128.597334-127.872 128.341333 128.341333 0 0 1 128.597334-127.872h286.506666v-54.016s0-8.277333 1.408-11.52c4.053333-9.813333 18.432-10.24 25.984-2.730666l84.650667 84.181333a19.2 19.2 0 0 1 0 27.221333zM314.88 539.776a42.069333 42.069333 0 0 0-42.112 41.898667c0 23.082667 18.858667 41.856 42.112 41.856 23.210667 0 42.112-18.773333 42.112-41.856a42.069333 42.069333 0 0 0-42.112-41.898667z" horiz-adv-x="1024" />
<glyph glyph-name="youjiantou" unicode="&#59373;" d="M682.666667 384l-341.333334-341.333333V725.333333z" horiz-adv-x="1024" />
<glyph glyph-name="caidan2" unicode="&#59375;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM213.333333 682.666667h597.333334v-85.333334H213.333333zM213.333333 170.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="tihuan" unicode="&#59376;" d="M768 465.066667H280.405333l-4.394666 0.554666c-5.461333 0.853333-6.570667 1.749333-12.885334 6.528l-2.986666 5.376c-6.4 11.946667-5.376 13.738667 2.986666 28.885334L440.618667 682.666667l34.218666-34.048-136.362666-135.424H768v-48.170667z m-7.594667-163.242667L585.472 128l-34.261333 34.048 136.362666 135.424H258.048v48.170667h484.096c10.453333 0 19.882667-6.272 23.893333-15.872a25.6 25.6 0 0 0-5.632-27.989334z" horiz-adv-x="1024" />
<glyph glyph-name="dongjie1" unicode="&#59361;" d="M809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666zM256.426667 322.389333v-193.408l193.365333 0.042667-193.365333 193.365333z m510.549333 40.618667h-234.026667v-234.026667h234.026667v234.026667z m-276.565333 0H276.053333l214.357334-214.4v214.4z m276.565333 276.522667h-234.026667v-233.984h234.026667V639.530667zM256.426667 609.450667v-203.946667l203.904 0.042667-203.946667 203.946666z m233.984 30.08H286.592l203.861333-203.861334V639.573333z" horiz-adv-x="1024" />
<glyph glyph-name="jian1" unicode="&#59362;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jia1" unicode="&#59363;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="yichu1" unicode="&#59364;" d="M300.288 85.333333H213.333333V682.666667h86.954667v-279.978667h441.898667l-91.306667 85.845333 26.624 26.112L810.666667 384l-133.162667-130.688-26.624 26.154667 91.306667 85.845333-441.898667 0.042667zM530.688 682.666667h42.666667v-242.688h-42.666667V682.666667z m0-354.688h42.666667V85.333333h-42.666667v242.688z" horiz-adv-x="1024" />
<glyph glyph-name="shengxu1" unicode="&#59365;" d="M684.757333 482.944v-290.645333a20.650667 20.650667 0 0 0-6.4-15.274667 23.04 23.04 0 0 0-16-6.357333 22.229333 22.229333 0 0 0-22.4 21.632V482.944L550.4 398.08a22.528 22.528 0 0 0-15.872-6.442667 22.613333 22.613333 0 0 0-15.914667 6.442667 20.650667 20.650667 0 0 0-6.613333 15.061333c0 5.674667 2.389333 11.093333 6.613333 15.061334l126.72 120.064a22.485333 22.485333 0 0 0 15.658667 6.4 23.594667 23.594667 0 0 0 16.128-5.546667l126.72-120.064c4.309333-3.84 6.826667-9.301333 6.826667-15.061333a20.266667 20.266667 0 0 0-6.826667-15.061334 23.04 23.04 0 0 0-15.914667-6.272 23.04 23.04 0 0 0-15.872 6.272l-87.296 84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.194667 213.333333 533.546667s7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuangxian" unicode="&#59366;" d="M213.333333 384h554.666667v-42.666667H213.333333zM512 640v-554.666667h-42.666667V640zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="qingchushaixuan" unicode="&#59367;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenxiangshang" unicode="&#59368;" d="M192 400.213333l213.333333 77.653334v0.64l1.621334-0.042667L554.666667 532.224v-45.354667l-106.666667-38.826666v-152.405334l106.666667-38.826666v-45.354667l-147.498667 53.674667-1.834667 0.042666v0.64l-213.333333 77.610667V400.213333z m46.634667-28.416L405.333333 311.125333v121.386667l-166.698666-60.714667zM597.333333 559.829333l90.496 90.538667 90.538667-90.538667-30.165333-30.165333-37.802667 37.76V106.666667h-42.666667V569.898667l-40.234666-40.234667L597.333333 559.829333z" horiz-adv-x="1024" />
<glyph glyph-name="jiangxu1" unicode="&#59369;" d="M684.757333 242.389333V533.034667a20.650667 20.650667 0 0 1-6.4 15.274666 23.04 23.04 0 0 1-16 6.357334 22.229333 22.229333 0 0 1-22.4-21.632v-290.645334L550.4 327.253333a22.528 22.528 0 0 1-15.872 6.442667 22.613333 22.613333 0 0 1-15.914667-6.442667 20.650667 20.650667 0 0 1-6.613333-15.061333c0-5.674667 2.389333-11.093333 6.613333-15.061333l126.72-120.064a22.485333 22.485333 0 0 1 15.658667-6.4 23.594667 23.594667 0 0 1 16.128 5.546666l126.72 120.064c4.309333 3.84 6.826667 9.301333 6.826667 15.061334a20.266667 20.266667 0 0 1-6.826667 15.061333 23.04 23.04 0 0 1-15.914667 6.272 23.04 23.04 0 0 1-15.872-6.272l-87.296-84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.237333 213.333333 533.546667c0-11.648 7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuanghengxian" unicode="&#59370;" d="M213.333333 384h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuangshuxian" unicode="&#59371;" d="M213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM384 384h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667zM512 640v-554.666667h-42.666667V640z" horiz-adv-x="1024" />
<glyph glyph-name="zidingyipaixu" unicode="&#59372;" d="M704 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333zM512 512c11.776 0 21.333333-7.68 21.333333-17.194667v-221.610666c0-9.514667-9.472-17.194667-21.333333-17.194667-11.776 0-21.333333 7.68-21.333333 17.194667V494.805333c0 4.565333 2.218667 8.96 6.186666 12.16A24.32 24.32 0 0 0 512 512zM320 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333z m283.562667-368.896a21.333333 21.333333 0 0 0 30.165333-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 0l-106.666667 106.666667a21.333333 21.333333 0 0 0 30.165334 30.165333L512 179.498667l91.605333 91.562666z m0.298666 225.834667a21.333333 21.333333 0 0 1 30.165334 30.165333l-106.666667 106.666667a21.333333 21.333333 0 0 1-30.165333 0l-106.666667-106.666667a21.333333 21.333333 0 0 1 30.165333-30.165333l91.562667 91.562666 91.605333-91.562666z" horiz-adv-x="1024" />
<glyph glyph-name="logo2" unicode="&#59359;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92z" horiz-adv-x="1024" />
<glyph glyph-name="logo" unicode="&#59360;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92zM1678.08 160v64h-247.04V616.96H1356.8V160h321.28z m177.568-8.96c40.96 0 75.52 17.28 103.68 51.84V160h72.96V490.88h-72.96v-202.24c-6.4-23.68-17.28-42.24-32-56.32-14.72-13.44-30.08-20.48-46.08-20.48-25.6 0-43.52 6.4-55.04 18.56-11.52 12.8-16.64 32-16.64 58.88v201.6h-72.96v-206.08c0-88.96 39.68-133.76 119.04-133.76z m407.936 0c42.88 0 77.44 10.88 103.04 32 26.24 21.76 43.52 55.04 51.2 99.84h-72.32c-5.76-48-32.64-72.32-81.28-72.32-28.16 0-49.28 10.24-63.36 30.08-15.36 20.48-22.4 49.28-22.4 85.76 0 35.84 7.68 64 23.04 83.84 15.36 20.48 36.48 30.08 63.36 30.08 21.76 0 39.68-5.12 53.12-15.36 12.8-10.24 21.76-25.6 26.24-46.72h72.32c-6.4 41.6-23.04 72.32-49.28 92.8-25.6 19.2-59.52 28.8-102.4 28.8-51.84 0-92.16-17.28-120.96-51.84-26.88-31.36-40.32-72.32-40.32-122.24 0-51.2 13.44-92.8 40.96-124.8 28.16-33.28 67.84-49.92 119.04-49.92z m292.128 8.96v115.84l33.28 31.36 115.84-147.2h93.44l-159.36 193.92 146.56 136.96h-94.08l-135.68-131.2V625.92h-72.96V160h72.96z m404.096-126.72l179.2 457.6h-79.36l-83.84-235.52-87.68 235.52h-79.36l131.2-323.2-58.24-134.4h78.08z m357.408 117.76c99.2 0 149.12 35.2 149.12 105.6 0 29.44-13.44 53.12-39.68 69.76-17.92 12.16-46.08 22.4-83.2 31.36-33.28 8.32-55.04 14.72-65.92 19.2-17.92 7.68-26.24 17.28-26.24 27.52 0 12.8 5.12 21.76 16.64 27.52 9.6 5.76 24.32 8.32 43.52 8.32 22.4 0 39.04-3.2 49.92-10.24 10.24-6.4 17.92-18.56 23.04-35.2h71.04c-7.68 70.4-55.68 104.96-142.72 104.96-40.96 0-73.6-8.32-98.56-26.24-25.6-16.64-37.76-40.32-37.76-71.04 0-28.8 12.8-51.2 38.4-67.2 16-10.24 43.52-19.84 82.56-28.8 33.28-7.68 55.04-13.44 65.28-18.56 19.2-8.96 28.8-21.12 28.8-36.48 0-26.88-25.6-40.96-76.8-40.96-24.32 0-41.6 4.48-52.48 12.16-10.88 8.96-18.56 23.68-22.4 44.8h-71.04c7.04-77.44 56.32-116.48 148.48-116.48z m286.976 8.96v184.96c0 28.16 6.4 50.56 19.84 68.48 12.8 17.92 30.72 26.88 53.76 26.88 24.96 0 43.52-7.68 56.32-23.68 10.88-14.72 16.64-36.48 16.64-64.64v-192h72.96v204.8c0 44.16-9.6 77.44-28.16 99.84-19.84 23.68-49.92 35.2-90.24 35.2-21.12 0-39.68-3.84-55.68-12.16-17.92-8.96-33.28-22.4-45.44-40.96v179.2h-72.96V160h72.96z m447.648-8.96c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m285.088-209.28c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m310.016-200.32v60.16h-43.52c-7.68 0-12.8 1.92-16.64 5.76-3.84 4.48-5.12 10.24-5.12 17.92v186.88h73.6v60.16h-73.6V597.76l-72.96-30.08v-76.8h-59.52v-60.16h59.52v-186.88c0-26.88 6.4-46.72 19.2-60.8 13.44-15.36 34.56-23.04 63.36-23.04h55.68z" horiz-adv-x="4864" />
<glyph glyph-name="wenbenqingxie1" unicode="&#59358;" d="M469.333333 640h170.666667v-42.666667h-170.666667zM573.738667 611.413333l-81.493334-462.208-41.984 7.381334 81.493334 462.208zM384 170.666667h170.666667v-42.666667H384z" horiz-adv-x="1024" />
<glyph glyph-name="jiacu" unicode="&#59353;" d="M298.666667 682.666667h224a174.208 174.208 0 0 0 141.952-275.242667A174.208 174.208 0 0 0 572.458667 85.333333H298.666667V682.666667z m273.792-348.458667l-174.250667 0.042667v-149.333334h174.250667a74.666667 74.666667 0 0 1 6.101333 149.077334l-6.101333 0.213333zM398.208 583.125333v-149.333333h124.458667a74.666667 74.666667 0 0 1 6.144 149.077333l-6.144 0.256H398.208z" horiz-adv-x="1024" />
<glyph glyph-name="sousuo" unicode="&#59274;" d="M664.832 261.376l128.554667-128.597333a21.333333 21.333333 0 1 0-30.165334-30.165334l-128.597333 128.597334a256 256 0 1 0 30.165333 30.165333zM469.333333 213.333333a213.333333 213.333333 0 1 1 0 426.666667 213.333333 213.333333 0 0 1 0-426.666667z" horiz-adv-x="1024" />
<glyph glyph-name="guanbi" unicode="&#59275;" d="M119.808 715.946667l60.330667 60.245333 724.053333-724.053333-60.330667-60.330667zM843.946667 776.192l60.245333-60.330667-724.053333-724.053333-60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="xiayige" unicode="&#59276;" d="M512 213.333333L170.666667 554.666667h682.666666z" horiz-adv-x="1024" />
<glyph glyph-name="xiala" unicode="&#59277;" d="M149.930667 451.669333l60.330666 60.330667 362.069334-362.069333L512 89.6zM813.738667 512l60.330666-60.330667L512 89.6l-60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenyanse" unicode="&#59278;" d="M549.546667 640l194.133333-533.333333h-45.354667l-77.653333 213.333333H421.632l-77.653333-213.333333H298.666667L492.757333 640h56.789334z m-28.416-46.634667L437.162667 362.666667h167.978666l-84.010666 230.698666z" horiz-adv-x="1024" />
<glyph glyph-name="shangyige" unicode="&#59279;" d="M512 554.666667l341.333333-341.333334H170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="shujutoushi" unicode="&#59280;" d="M256 533.333333v-298.666666l256-149.333334 256 149.333334v298.666666L512 682.666667 256 533.333333zM725.333333 256l-213.333333-128-213.333333 128V512l213.333333 128 213.333333-128v-256z m-189.354666-40.021333a18.645333 18.645333 0 0 0-18.645334-18.645334 18.304 18.304 0 0 0-18.688 18.645334V360.533333l-130.645333 75.349334a18.645333 18.645333 0 0 0 4.565333 34.133333 18.304 18.304 0 0 0 14.08-2.005333l130.688-74.666667 129.578667 74.666667a18.304 18.304 0 0 0 25.386667-6.698667 18.645333 18.645333 0 0 0-6.784-25.386667l-129.536-74.666666v-145.237334z" horiz-adv-x="1024" />
<glyph glyph-name="tianchong" unicode="&#59281;" d="M730.24 333.824l-253.44-253.44-217.173333 217.258667 253.44 253.44 217.173333-217.258667z m-72.405333 0.042667L512.981333 478.72l-180.992-180.992 144.810667-144.853333 181.034667 181.034666zM520.533333 597.333333v-230.4H469.333333V546.176H392.533333v-179.626667H341.333333V597.333333zM699.733333 341.333333c48.768 0 88.32-37.802667 88.32-84.48 0-46.634667-39.552-84.48-88.32-84.48" horiz-adv-x="1024" />
<glyph glyph-name="zengjiaxiaoshuwei" unicode="&#59282;" d="M533.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V256a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V256a42.666667 42.666667 0 0 0 42.666667 42.666667zM367.829333 96.298667l90.538667 90.538666L367.786667 277.333333l-30.165334-30.165333 37.76-37.802667H256v-42.666666h121.898667l-40.234667-40.234667 30.165333-30.165333zM490.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM341.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="bianji2" unicode="&#59283;" d="M810.581333 382.634667V128a42.666667 42.666667 0 0 0-42.666666-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h234.624v-42.666667H320a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h426.581333a21.333333 21.333333 0 0 1 21.333334 21.333333V384h0.042666a21.333333 21.333333 0 1 0 42.581334-1.365333z m-285.056 2.432l241.365334 241.365333a21.333333 21.333333 0 0 0 30.165333-30.165333l-241.365333-241.365334a21.333333 21.333333 0 0 0-30.165334 30.165334zM533.290667 640V682.666667a21.333333 21.333333 0 0 0 21.333333-21.333334c0-11.776-10.069333-21.333333-21.333333-21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jieping" unicode="&#59284;" d="M590.848 328.96l-265.386667 306.645333a28.245333 28.245333 0 0 0 3.2 40.149334 29.141333 29.141333 0 0 0 40.789334-3.242667l267.946666-309.674667a124.885333 124.885333 0 0 0 144.213334-34.474666 125.141333 125.141333 0 0 0-16.042667-176.256 125.141333 125.141333 0 0 0-176.341333 14.805333 125.013333 125.013333 0 0 0 1.621333 162.048z m40.149333-18.133333c-18.602667-15.701333-29.312-38.826667-29.312-63.189334 0-45.909333 37.461333-83.157333 83.754667-83.157333a83.413333 83.413333 0 0 1 83.712 83.157333 83.413333 83.413333 0 0 1-83.712 83.114667c-15.189333 0-29.44-4.010667-41.685333-11.008a28.458667 28.458667 0 0 0-12.757334-8.96v0.042667z m-150.698666 52.565333l-38.229334-44.16a29.653333 29.653333 0 0 0-0.768-0.810667 124.885333 124.885333 0 0 0-6.528-151.509333 125.141333 125.141333 0 0 0-176.341333-14.805333C205.226667 196.693333 198.101333 275.626667 242.346667 328.362667a124.928 124.928 0 0 0 156.416 28.544l38.528 44.501333c9.514667-17.237333 24.746667-30.634667 43.008-37.973333z m105.6 122.026667a85.632 85.632 0 0 1-43.818667 37.12l129.749333 150.016a29.141333 29.141333 0 0 0 40.789334 3.242666 28.245333 28.245333 0 0 0 3.2-40.149333l-129.92-150.186667z m-300.8-301.44c35.413333-29.738667 88.064-25.301333 117.546666 9.813333a83.413333 83.413333 0 0 1-10.666666 117.546667 83.456 83.456 0 0 1-117.589334-9.856 83.456 83.456 0 0 1 10.709334-117.504z" horiz-adv-x="1024" />
<glyph glyph-name="jianxiaoxiaoshuwei" unicode="&#59286;" d="M533.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM341.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM346.496 501.632L256 592.213333 346.496 682.666667l30.165333-30.165334-37.717333-37.802666h119.424v-42.666667H336.469333l40.192-40.234667-30.165333-30.165333zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM490.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="caidan" unicode="&#59287;" d="M256 682.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667A21.333333 21.333333 0 0 1 426.666667 640H277.333333z m298.666667 42.666667H768a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-21.333333-277.333333H768a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-341.333333 42.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H277.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shujuku" unicode="&#59288;" d="M256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334zM256 490.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667zM256 298.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z m0 384h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="wubiankuang" unicode="&#59289;" d="M384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM213.333333 597.333333V640h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM213.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM213.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM213.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM213.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM213.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667zM213.333333 512V554.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="bianji" unicode="&#59290;" d="M642.56 532.266667l-170.88-170.88 37.76-22.613334 22.613333-37.717333 170.88 170.88-60.373333 60.330667z m30.208 30.165333l60.330667-60.330667 15.104 15.061334a21.333333 21.333333 0 0 1 0 30.165333l-30.165334 30.165333a21.333333 21.333333 0 0 1-30.165333 0l-15.104-15.104v0.042667z m-231.253333-231.253333l-10.112-10.112v-60.330667h60.330666l10.112 10.112-22.613333 37.717333-37.717333 22.613334z m291.584 291.584l60.373333-60.330667a42.666667 42.666667 0 0 0 0-60.330667l-284.032-284.032H388.736V338.773333l284.032 283.989334a42.666667 42.666667 0 0 0 60.330667 0zM554.666667 661.333333a21.333333 21.333333 0 0 0-21.333334-21.333333h-256c-11.818667 0-21.333333-9.472-21.333333-21.162667v-469.674666c0-11.434667 9.557333-21.162667 21.333333-21.162667h469.333334c11.818667 0 21.333333 9.472 21.333333 21.162667V320a21.333333 21.333333 0 1 0 42.666667 0v-191.872c0-23.637333-19.2-42.794667-42.453334-42.794667H255.786667A42.624 42.624 0 0 0 213.333333 128.085333V639.872C213.333333 663.509333 232.533333 682.666667 255.829333 682.666667H533.333333a21.333333 21.333333 0 0 0 21.333334-21.333334z" horiz-adv-x="1024" />
<glyph glyph-name="qingchuyangshi" unicode="&#59291;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" />
<glyph glyph-name="shanchu" unicode="&#59292;" d="M320 554.666667v-426.581334A42.666667 42.666667 0 0 1 362.581333 85.333333h298.88a42.666667 42.666667 0 0 1 42.538667 42.794667V554.666667h42.666667a21.333333 21.333333 0 1 1 0 42.666666h-469.333334a21.333333 21.333333 0 0 1 0-42.666666h42.666667zM426.666667 661.333333c0 11.776 9.642667 21.333333 21.248 21.333334h128.170666c11.690667 0 21.248-9.472 21.248-21.333334 0-11.776-9.642667-21.333333-21.248-21.333333h-128.170666A21.248 21.248 0 0 0 426.666667 661.333333zM362.666667 533.504A21.333333 21.333333 0 0 0 384.128 554.666667h255.701333c11.904 0 21.504-9.728 21.504-21.162667v-384.341333a21.333333 21.333333 0 0 0-21.504-21.162667H384.128c-11.733333 0-21.290667 9.386667-21.461333 21.162667V533.504z m42.666666-42.837333a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z m85.333334 0a21.290667 21.290667 0 1 0 42.666666 0v-298.666667a21.290667 21.290667 0 1 0-42.666666 0v298.666667z m85.333333 0a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenjuzhongduiqi" unicode="&#59293;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666zM341.333333 469.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-106.666666-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666zM341.333333 213.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="dayin" unicode="&#59294;" d="M743.125333 554.666667c35.669333 0 64.384-28.885333 67.285334-65.024l0.256-6.101334V213.333333h-149.76v42.666667H768V483.541333c0 14.592-9.514667 26.154667-21.333333 28.16L743.168 512H280.874667c-12.16 0-22.784-10.24-24.576-24.149333l-0.298667-4.266667V256h127.36v-42.666667H213.333333V483.541333c0 36.906667 26.794667 67.712 61.653334 70.826667L280.874667 554.666667h462.250666zM682.666667 682.666667H341.333333v-170.666667h341.333334V682.666667z m-42.666667-42.666667v-85.333333H384V640h256zM682.666667 341.333333v-256H341.333333v256h341.333334z m-42.666667-42.666666H384v-170.666667h256v170.666667zM341.333333 469.333333h128v-42.666666H341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenfenge" unicode="&#59295;" d="M544.896 506.282667h110.762667v-46.933334c6.698667-6.613333 15.658667-6.613333 22.357333 0l84.949333 55.125334c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386666c-6.741333 6.613333-15.701333 6.613333-22.4 0v-41.258666h-133.12l-89.429334-154.453334H343.722667v-0.128h-22.698667c-11.178667 0-22.357333-11.050667-22.357333-22.058666 0-11.050667 11.178667-22.058667 22.357333-22.058667h134.101333l-0.085333 0.128h0.426667l89.386666 154.453333h0.042667z m133.12-198.954667a15.061333 15.061333 0 0 1-22.314667 0v-43.690667h-66.133333l-67.029333 110.293334-22.357334-44.117334s62.592-103.68 67.072-110.293333h88.448V174.933333a15.061333 15.061333 0 0 1 22.314667 0l84.949333 55.168c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386667h-0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="hanshu" unicode="&#59296;" d="M771.072 504.746667a6.698667 6.698667 0 0 1-0.512 9.514666 6.997333 6.997333 0 0 1-4.48 1.749334h-61.354667c-1.962667 0-3.84-0.853333-5.12-2.346667l-103.893333-122.709333a6.698667 6.698667 0 0 0-11.392 1.621333l-53.674667 119.381333a6.656 6.656 0 0 1-6.144 4.010667H381.866667l0.853333 3.968 6.741333 35.712c8.874667 46.933333 32.085333 68.864 72.533334 68.864 15.658667 0 29.994667-1.450667 41.258666-4.010667l11.861334 56.490667a197.888 197.888 0 0 1-46.464 5.12c-87.296 0-132.224-37.418667-148.650667-124.458667l-7.978667-41.813333H229.632a6.698667 6.698667 0 0 1-6.613333-5.376l-9.130667-43.818667a6.826667 6.826667 0 0 1 6.570667-8.106666h79.786666l-75.264-363.52a6.826667 6.826667 0 0 1 6.570667-8.234667H287.573333c3.242667 0 5.973333 2.346667 6.570667 5.418667l75.861333 366.165333h114.773334l57.685333-117.546667a6.570667 6.570667 0 0 0-1.024-7.381333l-152.746667-171.690667a6.826667 6.826667 0 0 1 5.12-11.264h61.44c2.005333 0 3.882667 0.853333 5.162667 2.389334l104.576 123.989333a6.826667 6.826667 0 0 0 11.392-1.493333l55.594667-120.661334a6.741333 6.741333 0 0 1 6.186666-3.968h54.613334a6.784 6.784 0 0 1 6.101333 9.770667L618.325333 328.533333a6.698667 6.698667 0 0 0 1.066667 7.466667l151.722667 168.661333-0.042667 0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="jiangxu" unicode="&#59297;" d="M430.848 229.802667H366.592V659.925333a6.656 6.656 0 0 1-6.741333 6.528h-47.36a6.656 6.656 0 0 1-6.741334-6.528v-430.122666H241.493333c-5.674667 0-8.874667-6.314667-5.333333-10.538667l94.72-115.2a6.912 6.912 0 0 1 10.624 0l94.72 115.2c3.413333 4.224 0.298667 10.538667-5.376 10.538667zM582.442667 89.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 362.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 409.301333v39.168h-124.288l124.288 203.093334V682.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" />
<glyph glyph-name="dingbuduiqi" unicode="&#59298;" d="M298.666667 512h426.666666v-42.666667H298.666667zM416 368.170667l90.496 90.496 90.538667-90.496-30.165334-30.165334-37.802666 37.717334v-290.090667h-42.666667v292.565333l-40.234667-40.192-30.165333 30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="tupian" unicode="&#59299;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-263.381334l-233.984-190.890666-118.613333 98.218666L256 191.36V128h512v291.285333zM768 640H256v-392.704l159.146667 134.954667 119.04-98.602667L768 474.325333V640zM384 554.666667a42.666667 42.666667 0 1 0 0-85.333334 42.666667 42.666667 0 0 0 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="xiangxia90" unicode="&#59300;" d="M789.333333 367.786667l-213.333333-77.653334v-0.64l-1.621333 0.042667L426.666667 235.776v45.354667l106.666666 38.826666V472.362667l-106.666666 38.826666V556.544l147.498666-53.674667 1.834667-0.042666v-0.64l213.333333-77.610667v-56.789333z m-46.634666 28.416L576 456.874667v-121.386667l166.698667 60.714667zM384 208.170667l-90.496-90.538667-90.538667 90.538667 30.165334 30.165333 37.802666-37.76V661.333333h42.666667v-463.232l40.234667 40.234667 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="shupaiwenzi" unicode="&#59301;" d="M636.757333 597.333333l77.653334-213.333333h0.64l-0.042667-1.621333 53.76-147.712h-45.354667l-38.826666 106.666666h-152.405334l-38.826666-106.666666H448l53.674667 147.498666 0.042666 1.834667h0.64l77.610667 213.333333h56.789333z m-28.416-46.634666L547.669333 384h121.386667l-60.714667 166.698667zM394.368 197.504L303.786667 106.965333 213.333333 197.546667l30.165334 30.165333 37.802666-37.76V650.666667h42.666667v-463.232l40.234667 40.234666 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="quanjiabiankuang" unicode="&#59302;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM469.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 384h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shengxu" unicode="&#59303;" d="M430.848 538.24H366.592v-430.165333a6.656 6.656 0 0 0-6.741333-6.485334h-47.36a6.656 6.656 0 0 0-6.741334 6.485334V538.24H241.493333c-5.674667 0-8.874667 6.314667-5.333333 10.538667l94.72 115.2a6.912 6.912 0 0 0 10.624 0l94.72-115.2c3.413333-4.224 0.298667-10.538667-5.376-10.538667zM582.442667 409.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 682.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 89.301333v39.168h-124.288l124.288 203.093334V362.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" />
<glyph glyph-name="caijian" unicode="&#59304;" d="M341.333333 682.666667h42.666667v-469.333334H341.333333zM810.666667 256v-42.666667H341.333333v42.666667zM682.666667 85.333333h-42.666667V554.666667h42.666667zM213.333333 512V554.666667h469.333334v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="jine" unicode="&#59305;" d="M658.816 640l34.986667-24.490667-124.629334-177.92h119.04v-42.666666h-149.333333v-85.333334h149.333333v-42.666666h-149.333333v-128h-42.666667v128h-149.333333v42.666666h149.333333v85.333334h-149.333333v42.666666h119.04L341.333333 615.509333 376.32 640l141.226667-201.728L658.816 640z" horiz-adv-x="1024" />
<glyph glyph-name="caidan1" unicode="&#59306;" d="M256 256h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM682.666667 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 256h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666zM469.333333 682.666667h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V640a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666z m192-384h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 469.333333h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666666 42.666666z m21.333334-42.666666a21.333333 21.333333 0 0 1-21.333334-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333334-21.333334h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333334 21.333334h-42.666666zM256 469.333333h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H256a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m426.666667 0h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m21.333333-42.666666a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667z m-426.666667 0a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667zM256 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="quxiaohebing" unicode="&#59307;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM533.333333 682.666667v-170.666667h-42.666666V682.666667zM405.333333 469.333333v-213.333333h-42.666666v213.333333zM533.333333 490.666667v-213.333334h-42.666666v213.333334zM661.333333 490.666667v-213.333334h-42.666666v213.333334zM533.333333 298.666667v-170.666667h-42.666666v170.666667zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenxiahuaxian" unicode="&#59308;" d="M362.666667 640v-298.666667a149.333333 149.333333 0 0 1 298.453333-8.192L661.333333 341.333333V640h42.666667v-298.666667a192 192 0 0 0-383.786667-9.045333L320 341.333333V640h42.666667zM256 128m21.333333 0l469.333334 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-469.333334 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM256 640m21.333333 0l128 0q21.333333 0 21.333334-21.333333l0 0q0-21.333333-21.333334-21.333334l-128 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM597.333333 640m21.333334 0l128 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-128 0q-21.333333 0-21.333334 21.333334l0 0q0 21.333333 21.333334 21.333333Z" horiz-adv-x="1024" />
<glyph glyph-name="shangbiankuang" unicode="&#59309;" d="M213.333333 640h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM384 384h42.666667v-42.666667H384zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="dingwei" unicode="&#59310;" d="M618.666667 172.416V234.666667a21.333333 21.333333 0 1 0 42.666666 0v-62.250667a128.128 128.128 0 0 1 104.917334 104.917333H704a21.333333 21.333333 0 1 0 0 42.666667h62.250667a128.128 128.128 0 0 1-104.917334 104.874667V362.666667a21.333333 21.333333 0 1 0-42.666666 0v62.208a128.085333 128.085333 0 0 1-104.874667-104.874667H576a21.333333 21.333333 0 0 0 0-42.666667h-62.208a128.128 128.128 0 0 1 104.874667-104.917333z m149.333333 296.96a213.12 213.12 0 0 1-42.666667 24.874667V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-426.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-341.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h153.6c2.986667-14.848 7.594667-29.098667 13.482667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h469.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666667zM640 128a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="sizhoujiabiankuang" unicode="&#59311;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="cebianlanshouqi" unicode="&#59312;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333zM256 384c0 11.776 9.6 21.333333 21.461333 21.333333h277.077334a21.333333 21.333333 0 1 0 0-42.666666H277.504A21.333333 21.333333 0 0 0 256 384z m0-192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m368.896 283.562667a21.333333 21.333333 0 0 0 30.165333 30.165333l106.666667-106.666667a21.333333 21.333333 0 0 0 0-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 30.165334L716.501333 384l-91.562666 91.605333z" horiz-adv-x="1024" />
<glyph glyph-name="hebing" unicode="&#59313;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM389.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.802667 37.845333-119.466667-0.042666v42.666666l121.856 0.042667-40.192 40.192 30.165334 30.165333zM645.162667 469.333333L554.666667 378.837333l90.496-90.538666 30.165333 30.165333-37.76 37.845333 119.466667-0.042666v42.666666l-121.856 0.042667 40.149333 40.192-30.165333 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangshangqingxie" unicode="&#59314;" d="M290.944 606.634667l205.738667-95.914667 0.469333 0.426667 1.109333-1.152 142.506667-66.432-32.128-32.085334-102.826667 47.957334-107.818666-107.733334 48-102.912-32.085334-32.042666-66.346666 142.250666-1.28 1.28 0.469333 0.512-96 205.696 40.192 40.149334z m12.885333-53.034667l74.965334-160.810667 85.845333 85.845334L303.786667 553.6zM690.432 432.896h128v-128h-42.666667v53.418667l-325.845333-325.802667-30.165333 30.165333 327.552 327.552h-56.874667v42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="shuipingduiqi" unicode="&#59315;" d="M725.333333 362.666667H298.666667v42.666666h426.666666zM426.666667 261.504l90.496 90.496 90.538666-90.496-30.165333-30.165333-39.936 39.850666v-121.557333h-42.666667v119.765333l-38.101333-38.058666-30.165333 30.165333zM426.666667 506.837333l90.496-90.538666 90.538666 90.538666-30.165333 30.165334-39.936-39.893334V618.666667h-42.666667v-119.765334l-38.101333 38.101334-30.165333-30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenshanchuxian" unicode="&#59316;" d="M298.666667 640h426.666666v-42.666667H298.666667zM533.290667 341.333333l0.042666-192h-42.666666l-0.042667 192h42.666667z m0.042666 277.333334l-0.042666-234.666667h-42.666667l0.042667 234.666667h42.666666zM320 640v-85.333333h-42.666667V640zM746.666667 640v-85.333333h-42.666667V640zM256 426.666667h512v-42.666667H256zM426.666667 170.666667h170.666666v-42.666667h-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenyouduiqi" unicode="&#59317;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-213.333333-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="qianjin" unicode="&#59318;" d="M287.018667 476.672h310.997333v-42.666667H286.72l84.48-84.437333a21.333333 21.333333 0 1 0-30.208-30.165333l-120.746667 120.704a21.248 21.248 0 0 0 0 30.165333l120.746667 120.661333a21.333333 21.333333 0 0 0 30.165333-30.165333L287.018667 476.672z m524.330666-213.333333a213.333333 213.333333 0 0 1-213.333333 213.333333v-42.666667a170.666667 170.666667 0 0 0 170.666667-170.666666h42.666666z m0 0h-42.666666v-64a21.333333 21.333333 0 1 1 42.666666 0v64z" horiz-adv-x="1024" />
<glyph glyph-name="tubiao" unicode="&#59319;" d="M256 682.666667H213.333333v-597.333334h597.333334v42.666667H256zM490.666667 552.533333V341.333333h185.6c-19.2-72.533333-85.333333-128-164.266667-128-93.866667 0-170.666667 76.8-170.666667 170.666667 0 87.466667 66.133333 157.866667 149.333334 168.533333M512 597.333333c-117.333333 0-213.333333-96-213.333333-213.333333s96-213.333333 213.333333-213.333333 213.333333 96 213.333333 213.333333h-192V597.333333H512zM618.666667 635.733333c83.2-14.933333 134.4-74.666667 147.2-166.4H618.666667V635.733333m-42.666667 46.933334v-256H810.666667c0 149.333333-85.333333 256-234.666667 256z" horiz-adv-x="1024" />
<glyph glyph-name="youbiankuang" unicode="&#59320;" d="M768 640v-554.666667h-42.666667V640zM597.333333 640v-42.666667h-42.666666V640zM426.666667 640v-42.666667H384V640zM682.666667 640v-42.666667h-42.666667V640zM512 640v-42.666667h-42.666667V640zM341.333333 640v-42.666667H298.666667V640zM597.333333 384v-42.666667h-42.666666v42.666667zM597.333333 128v-42.666667h-42.666666v42.666667zM426.666667 128v-42.666667H384v42.666667zM682.666667 128v-42.666667h-42.666667v42.666667zM512 128v-42.666667h-42.666667v42.666667zM341.333333 128v-42.666667H298.666667v42.666667zM256 128v-42.666667H213.333333v42.666667zM426.666667 384v-42.666667H384v42.666667zM682.666667 384v-42.666667h-42.666667v42.666667zM512 384v-42.666667h-42.666667v42.666667zM341.333333 384v-42.666667H298.666667v42.666667zM256 640v-42.666667H213.333333V640zM256 469.333333v-42.666666H213.333333v42.666666zM256 298.666667v-42.666667H213.333333v42.666667zM256 554.666667v-42.666667H213.333333V554.666667zM256 384v-42.666667H213.333333v42.666667zM256 213.333333v-42.666666H213.333333v42.666666zM512 469.333333v-42.666666h-42.666667v42.666666zM512 298.666667v-42.666667h-42.666667v42.666667zM512 554.666667v-42.666667h-42.666667V554.666667zM512 384v-42.666667h-42.666667v42.666667zM512 213.333333v-42.666666h-42.666667v42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="baifenhao" unicode="&#59321;" d="M653.525333 682.666667l36.949334-21.333334-320-554.24-36.949334 21.333334L653.525333 682.666667zM682.666667 426.666667c71.68 0 128-67.626667 128-149.333334S754.346667 128 682.666667 128s-128 67.626667-128 149.333333 56.32 149.333333 128 149.333334z m0-42.666667c-46.165333 0-85.333333-46.976-85.333334-106.666667s39.168-106.666667 85.333334-106.666666c46.165333 0 85.333333 46.976 85.333333 106.666666s-39.168 106.666667-85.333333 106.666667zM341.333333 661.333333c71.68 0 128-67.626667 128-149.333333s-56.32-149.333333-128-149.333333S213.333333 430.293333 213.333333 512s56.32 149.333333 128 149.333333z m0-42.666666C295.168 618.666667 256 571.690667 256 512s39.168-106.666667 85.333333-106.666667c46.165333 0 85.333333 46.976 85.333334 106.666667s-39.168 106.666667-85.333334 106.666667z" horiz-adv-x="1024" />
<glyph glyph-name="geshishua" unicode="&#59322;" d="M725.333333 682.666667v-85.333334h85.333334v-234.666666h-298.666667V298.666667h21.333333v-213.333334h-85.333333v213.333334h21.333333v106.666666h298.666667V554.666667h-42.666667v-85.333334H213.333333V682.666667h512z m-42.666666-42.666667H256v-128h426.666667V640z" horiz-adv-x="1024" />
<glyph glyph-name="baocun" unicode="&#59323;" d="M341.333333 640H277.333333a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v469.333334a21.333333 21.333333 0 0 1-21.333333 21.333333H682.666667v-213.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V640zM256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m128-42.666667v-192a21.333333 21.333333 0 0 1 21.333333-21.333333h213.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V640H384z m192-42.666667a21.333333 21.333333 0 0 0 21.333333-21.333333v-85.333333a21.333333 21.333333 0 0 0-42.666666 0v85.333333a21.333333 21.333333 0 0 0 21.333333 21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shujuyanzheng" unicode="&#59324;" d="M764.330667 303.829333l30.165333-30.165333L734.165333 213.333333l60.330667-60.330666-30.165333-30.165334-60.330667 60.330667-60.330667-60.330667-30.165333 30.165334L673.834667 213.333333l-60.330667 60.330667 30.165333 30.165333 60.330667-60.330666 60.330667 60.330666zM725.333333 384v-42.666667H256v-128h256v-42.666666H213.333333v213.333333h512z m47.829334 209.664l30.165333-30.165333L682.666667 442.88l-30.165334-30.165333-90.496 90.453333 30.165334 30.208 60.330666-60.330667 120.661334 120.661334zM725.333333 640v-42.666667H256v-128h256v-42.666666H213.333333V640h512z" horiz-adv-x="1024" />
<glyph glyph-name="jieduan" unicode="&#59325;" d="M767.829333 682.666667h42.496v-597.333334h-42.496zM767.146667 342.784h-384v42.496h384v-42.496zM213.333333 682.666667h84.992v-597.333334H213.333333V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="geshitiaojian" unicode="&#59326;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-320h-106.666667V128H768v234.666667z m-405.376 0h-106.666667V128h106.666667v234.666667z m256.042667-86.784L445.482667 128H618.666667v147.882667z m0 162.346666l-213.376-179.968v-108.885333l213.376 179.072v109.781333z m0 163.669334l-213.333334-179.029334v-108.885333l213.333334 179.072V601.898667zM768 640h-103.936l-2.730667-2.304V405.333333H768V640zM362.666667 640H256v-234.666667h106.666667V640z m235.008 0H405.333333v-161.408L597.674667 640z" horiz-adv-x="1024" />
<glyph glyph-name="zidonghuanhang" unicode="&#59327;" d="M213.333333 682.666667h85.12v-597.333334H213.333333V682.666667z m225.450667-477.44l25.557333 21.333333-72.362666 63.786667 72.362666 63.872-25.557333 21.248-93.610667-80.853334h4.266667-4.266667l93.610667-89.386666zM768 682.666667h42.581333v-597.333334H768zM540.928 528.725333H391.978667v-42.581333h148.949333c59.605333 0 106.410667-38.314667 106.410667-85.12s-46.805333-85.12-106.410667-85.12H391.978667v-42.581333h148.949333c85.12 0 157.482667 55.338667 157.482667 127.701333s-72.362667 127.701333-157.44 127.701333z" horiz-adv-x="1024" />
<glyph glyph-name="cebianlanzhankai" unicode="&#59328;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m192-192c0 11.776 9.557333 21.333333 21.461333 21.333333h277.034667a21.333333 21.333333 0 1 0 0-42.666666h-277.034667a21.333333 21.333333 0 0 0-21.461333 21.333333zM256 192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m143.061333 283.562667L307.541333 384l91.605334-91.562667a21.333333 21.333333 0 0 0-30.165334-30.165333l-106.666666 106.666667a21.333333 21.333333 0 0 0 0 30.165333l106.666666 106.666667a21.333333 21.333333 0 0 0 30.165334-30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="shaixuan2" unicode="&#59329;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangxiaqingxie" unicode="&#59330;" d="M755.968 583.722667l-95.914667-205.738667 0.426667-0.469333-1.152-1.109334-66.432-142.506666-32.085333 32.128 47.957333 102.826666-107.733333 107.818667-102.912-48-32.042667 32.085333 142.250667 66.346667 1.28 1.28 0.512-0.469333 205.696 96 40.149333-40.192z m-53.034667-12.885334l-160.810666-74.965333 85.845333-85.845333 74.965333 160.810666zM582.229333 184.234667v-128h-128v42.666666h53.418667l-325.802667 325.845334 30.165334 30.165333 327.552-327.552v56.874667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="yichu" unicode="&#59331;" d="M256 682.666667h85.333333v-597.333334H256zM711.466667 253.312l-26.154667 26.154667 89.6 85.845333H256v37.376h518.954667l-89.6 85.845333 26.112 26.112L842.154667 384zM573.354667 682.666667h42.666666v-242.688h-42.666666V682.666667z m0-354.688h42.666666V85.333333h-42.666666v242.688z" horiz-adv-x="1024" />
<glyph glyph-name="chuizhihebing" unicode="&#59332;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM640 682.666667v-597.333334h-42.666667V682.666667zM426.666667 682.666667v-597.333334H384V682.666667zM597.034667 304.170667l-90.538667-90.538667L416 304.213333l30.165333 30.165334 37.802667-37.76V544h42.666667v-249.898667l40.234666 40.234667 30.165334-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenfensanduiqi" unicode="&#59333;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="zuobiankuang" unicode="&#59334;" d="M213.333333 85.333333V640h42.666667v-554.666667zM384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="fenyechakan" unicode="&#59335;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="yunhang" unicode="&#59336;" d="M268.032 372.565333l60.373333 60.330667 211.2-211.2-60.373333-60.330667zM780.928 583.765333l60.373333-60.330666-331.904-331.861334-60.330666 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="lie" unicode="&#59337;" d="M234.666667 64v597.333333h42.666666v-597.333333zM405.333333 64v597.333333h42.666667v-597.333333zM576 64v597.333333h42.666667v-597.333333zM746.666667 64v597.333333h42.666666v-597.333333z" horiz-adv-x="1024" />
<glyph glyph-name="quanping" unicode="&#59338;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM341.333333 298.666667v-85.376L426.666667 213.333333v-42.666666H298.666667v128h42.666666z m384 0v-128h-128v42.666666h85.376L682.666667 298.666667h42.666666z m-298.666666 298.666666v-42.666666l-85.333334 0.042666V469.333333H298.666667V597.333333h128z m298.666666 0v-128h-42.666666l0.042666 85.333334H597.333333V597.333333h128z" horiz-adv-x="1024" />
<glyph glyph-name="shaixuan" unicode="&#59339;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333zM688.213333 517.589333l-101.546666-101.589333c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334L403.626667 487.68l284.586666 29.909333z" horiz-adv-x="1024" />
<glyph glyph-name="gengxin" unicode="&#59340;" d="M358.101333 640A298.666667 298.666667 0 0 1 512 85.333333a21.333333 21.333333 0 1 1 0 42.666667A256 256 0 0 0 405.333333 616.789333V532.906667A21.333333 21.333333 0 0 1 426.666667 512c11.776 0 21.333333 9.130667 21.333333 20.906667V661.76a20.565333 20.565333 0 0 1-6.229333 14.634667l0.042666 0.128A20.650667 20.650667 0 0 1 427.050667 682.666667H298.24a21.333333 21.333333 0 0 1-20.906667-21.333334c0-11.776 9.173333-21.333333 20.906667-21.333333h59.818667z m307.797334-512A298.666667 298.666667 0 0 1 512 682.666667a21.333333 21.333333 0 0 1 0-42.666667 256 256 0 0 0 106.666667-488.789333V235.093333A21.333333 21.333333 0 0 1 597.333333 256c-11.776 0-21.333333-9.130667-21.333333-20.906667v-128.810666a20.48 20.48 0 0 1 6.229333-14.634667l-0.042666-0.170667a20.650667 20.650667 0 0 1 14.762666-6.144h128.768a21.333333 21.333333 0 0 1 20.949334 21.333334c0 11.776-9.173333 21.333333-20.906667 21.333333h-59.861333z" horiz-adv-x="1024" />
<glyph glyph-name="qingchu" unicode="&#59341;" d="M330.965333 625.365333l422.4-422.4-60.330666-60.330666-422.4 422.4zM753.365333 565.034667l-422.4-422.4-60.330666 60.330666 422.4 422.4z" horiz-adv-x="1024" />
<glyph glyph-name="hang" unicode="&#59342;" d="M213.333333 640h597.333334v-42.666667H213.333333zM213.333333 469.333333h597.333334v-42.666666H213.333333zM213.333333 298.666667h597.333334v-42.666667H213.333333zM213.333333 128h597.333334v-42.666667H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="zhushi" unicode="&#59343;" d="M352 405.333333a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0zM768 597.333333H256c-23.466667 0-42.666667-19.2-42.666667-42.666666v-298.666667c0-23.466667 19.2-42.666667 42.666667-42.666667h106.666667v-128l128 128H768c23.466667 0 42.666667 19.2 42.666667 42.666667V554.666667c0 23.466667-19.2 42.666667-42.666667 42.666666z m0-320c0-12.8-8.533333-21.333333-21.333333-21.333333H469.333333l-64-64V256h-128c-12.8 0-21.333333 8.533333-21.333333 21.333333v256c0 12.8 8.533333 21.333333 21.333333 21.333334h469.333334c12.8 0 21.333333-8.533333 21.333333-21.333334v-256z" horiz-adv-x="1024" />
<glyph glyph-name="jian" unicode="&#59344;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jisuan" unicode="&#59345;" d="M774.058667 682.666667v-42.666667H310.784l236.288-256-236.330667-256h463.317334v-42.666667H213.333333l275.669334 298.666667L213.333333 682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="jia" unicode="&#59346;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="dibuduiqi" unicode="&#59347;" d="M725.333333 170.666667H298.666667v42.666666h426.666666zM608 314.496l-90.496-90.496-90.538667 90.496 30.165334 30.165333 37.802666-37.717333V597.034667h42.666667v-292.565334l40.234667 40.192 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangshang90" unicode="&#59348;" d="M789.333333 400.213333l-213.333333 77.653334v0.64l-1.621333-0.042667L426.666667 532.224v-45.354667l106.666666-38.826666v-152.405334l-106.666666-38.826666v-45.354667l147.498666 53.674667 1.834667 0.042666v0.64l213.333333 77.610667V400.213333z m-46.634666-28.416L576 311.125333v121.386667l166.698667-60.714667zM384 559.829333L293.504 650.368 202.965333 559.786667l30.165334-30.165334 37.802666 37.76V106.666667h42.666667V569.898667l40.234667-40.234667L384 559.829333z" horiz-adv-x="1024" />
<glyph glyph-name="wuxuanzhuang" unicode="&#59349;" d="M549.546667 682.666667l77.653333-213.333334h0.64l-0.042667-1.621333 53.76-147.712h-45.354666l-38.826667 106.666667h-152.405333l-38.826667-106.666667H360.789333l53.674667 147.498667 0.042667 1.834666h0.64l77.610666 213.333334h56.789334z m-28.416-46.634667L460.458667 469.333333h121.386666l-60.714666 166.698667zM709.162667 277.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H256v42.666666h463.232l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xianshiyincangwangge" unicode="&#59350;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" />
<glyph glyph-name="dongjie" unicode="&#59351;" d="M256.426667 639.573333h255.317333v-553.130666H256.426667zM809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666z m-42.538666-42.538666H256.426667v-510.549334h510.549333V639.573333zM490.453333 639.573333h42.538667v-510.592h-42.538667zM256.426667 363.008v42.538667h510.592v-42.538667zM256.384 669.738667l264.192-264.192-30.122667-30.08-264.192 264.192 30.122667 30.08z m-30.122667-317.184l30.122667 30.122666 264.192-264.192-30.122667-30.08-264.192 264.149334z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenzuoduiqi" unicode="&#59352;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="houtui" unicode="&#59354;" d="M737.664 476.672H426.666667v-42.666667h311.296l-84.48-84.437333a21.333333 21.333333 0 0 1 30.208-30.165333l120.746666 120.704a21.290667 21.290667 0 0 1 0 30.165333l-120.746666 120.661333a21.333333 21.333333 0 0 1-30.165334-30.165333l84.138667-84.096zM213.333333 263.338667a213.333333 213.333333 0 0 0 213.333334 213.333333v-42.666667a170.666667 170.666667 0 0 1-170.666667-170.666666H213.333333z m0 0h42.666667v-64a21.333333 21.333333 0 0 0-42.666667 0v64z" horiz-adv-x="1024" />
<glyph glyph-name="shuipinghebing" unicode="&#59355;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666zM581.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H341.333333v42.666666h249.898667l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiabiankuang" unicode="&#59356;" d="M768 85.333333H213.333333v42.666667h554.666667zM768 256h-42.666667v42.666667h42.666667zM768 426.666667h-42.666667v42.666666h42.666667zM768 170.666667h-42.666667v42.666666h42.666667zM768 341.333333h-42.666667v42.666667h42.666667zM768 512h-42.666667V554.666667h42.666667zM512 256h-42.666667v42.666667h42.666667zM256 256H213.333333v42.666667h42.666667zM256 426.666667H213.333333v42.666666h42.666667zM256 170.666667H213.333333v42.666666h42.666667zM256 341.333333H213.333333v42.666667h42.666667zM256 512H213.333333V554.666667h42.666667zM256 597.333333H213.333333V640h42.666667zM512 426.666667h-42.666667v42.666666h42.666667zM512 170.666667h-42.666667v42.666666h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM512 512h-42.666667V554.666667h42.666667zM768 597.333333h-42.666667V640h42.666667zM597.333333 597.333333h-42.666666V640h42.666666zM426.666667 597.333333H384V640h42.666667zM682.666667 597.333333h-42.666667V640h42.666667zM512 597.333333h-42.666667V640h42.666667zM341.333333 597.333333H298.666667V640h42.666666zM597.333333 341.333333h-42.666666v42.666667h42.666666zM426.666667 341.333333H384v42.666667h42.666667zM682.666667 341.333333h-42.666667v42.666667h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM341.333333 341.333333H298.666667v42.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="shezhi" unicode="&#59357;" d="M794.496 470.314667a112.341333 112.341333 0 0 0-72.917333 53.034666 108.074667 108.074667 0 0 0-9.941334 88.234667 13.781333 13.781333 0 0 1-4.394666 14.592 299.392 299.392 0 0 1-95.616 55.424 14.421333 14.421333 0 0 1-15.146667-3.584 113.578667 113.578667 0 0 0-84.48-35.968 113.578667 113.578667 0 0 0-82.858667 35.157333 14.421333 14.421333 0 0 1-16.768 4.394667 298.154667 298.154667 0 0 1-95.573333-55.808 13.781333 13.781333 0 0 1-4.394667-14.634667c9.344-29.354667 5.717333-61.269333-9.984-87.808a112.341333 112.341333 0 0 0-72.96-53.034666 13.909333 13.909333 0 0 1-10.752-11.050667 281.856 281.856 0 0 1 0-109.610667c1.024-5.504 5.290667-9.813333 10.752-11.008a112.341333 112.341333 0 0 0 72.96-52.650666c15.786667-26.666667 19.413333-58.709333 9.941334-88.192a13.781333 13.781333 0 0 1 4.352-14.634667 299.392 299.392 0 0 1 95.658666-55.424h4.778667c3.882667 0 7.637333 1.578667 10.325333 4.394667a114.773333 114.773333 0 0 0 166.229334 0c4.096-5.546667 11.648-7.424 17.92-4.394667a298.666667 298.666667 0 0 1 97.194666 55.04c4.266667 3.541333 6.016 9.301333 4.394667 14.592a108.074667 108.074667 0 0 0 8.362667 88.618667 112.341333 112.341333 0 0 0 72.96 52.650666 13.909333 13.909333 0 0 1 10.709333 11.008 280.32 280.32 0 0 1 0 109.653334 14.336 14.336 0 0 1-10.752 11.008z m-26.709333-105.173334a136.106667 136.106667 0 0 1-79.658667-60.928 131.285333 131.285333 0 0 1-13.568-97.322666 259.114667 259.114667 0 0 0-69.717333-39.552A135.552 135.552 0 0 1 512 206.890667a137.941333 137.941333 0 0 1-92.842667-39.552 258.304 258.304 0 0 0-69.717333 39.552 129.664 129.664 0 0 1-14.762667 96.938666 136.106667 136.106667 0 0 1-78.506666 61.312 239.189333 239.189333 0 0 0 0 79.061334A136.106667 136.106667 0 0 1 335.872 505.173333c16.896 29.525333 21.76 64.426667 13.525333 97.365334a258.730667 258.730667 0 0 0 69.717334 39.552c25.386667-23.125333 58.453333-35.968 92.842666-36.010667a136.064 136.064 0 0 1 92.842667 36.010667c25.173333-9.472 48.682667-22.826667 69.717333-39.594667a131.285333 131.285333 0 0 1 14.336-96.896 136.106667 136.106667 0 0 1 79.701334-60.928c4.394667-26.197333 4.394667-52.906667 0-79.104l-0.810667-0.426667h0.042667zM513.706667 525.653333a119.466667 119.466667 0 1 1 0-238.933333 119.466667 119.466667 0 0 1 0 238.933333z m0-199.125333a79.658667 79.658667 0 1 0 0 159.36 79.658667 79.658667 0 0 0 0-159.36z" horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 85 KiB

BIN
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.ttf

Binary file not shown.

BIN
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.woff

Binary file not shown.

BIN
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.woff2

Binary file not shown.

1944
io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/index.html

File diff suppressed because one or more lines are too long

23
io.sc.engine.rule.frontend/src/components/index.ts

@ -0,0 +1,23 @@
/**
* ,
*/
import resources from '@/views/resources/Resources.vue';
import authorization from '@/views/authorization/Authorization.vue';
import workflow from '@/views/workflow/Workflow.vue';
import dictionary from '@/views/dictionary/Dictionary.vue';
import lib from '@/views/lib/Lib.vue';
import testcase from '@/views/testcase/Testcase.vue';
import migration from '@/views/migration/Migration.vue';
const localComponents = {
'component.engine.rule.resources': resources,
'component.engine.rule.authorization': authorization,
'component.engine.rule.workflow': workflow,
'component.engine.rule.dictionary': dictionary,
'component.engine.rule.lib': lib,
'component.engine.rule.testcase': testcase,
'component.engine.rule.migration': migration,
};
export default localComponents;

18
io.sc.engine.rule.frontend/src/i18n/index.ts

@ -0,0 +1,18 @@
/**
*
* 1
*/
import messages from './messages.json';
import messages_tw_CN from './messages_tw_CN.json';
import messages_zh_CN from './messages_zh_CN.json';
const localI18nMessages = [
{
en: messages,
tw_CN: messages_tw_CN,
zh_CN: messages_zh_CN,
},
];
export default localI18nMessages;

20
io.sc.engine.rule.frontend/src/mock/index.ts

@ -0,0 +1,20 @@
/**
* mock, json mock, mock :
{
"enable": true,
"url": "/api/sample/action1",
"method": "get",
"response": {
"code": 200,
"messageI18nKey": "success",
"message": "success",
"data": {
"message": "This is a message for Action 1"
}
}
}
*/
const localMocks = [];
export default localMocks;

133
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorEntityConverter.java

@ -0,0 +1,133 @@
package io.sc.engine.rule.server.lib.converter;
import java.util.ArrayList;
import java.util.List;
import io.sc.engine.rule.core.po.lib.Indicator;
import io.sc.engine.rule.core.po.lib.indicator.IndicatorIndicator;
import io.sc.engine.rule.core.po.lib.indicator.InterfaceIndicator;
import io.sc.engine.rule.server.lib.entity.IndicatorEntity;
import io.sc.engine.rule.server.lib.entity.IndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.IndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.indicator.IndicatorIndicatorEntity;
import io.sc.engine.rule.server.lib.entity.indicator.InterfaceIndicatorEntity;
/**
* 指标实体转换器用于实现持久化实体和PO对象之间的互相转换
*/
public class IndicatorEntityConverter {
/**
* 将实体转换成 PO 对象
* @param entity 实体对象
* @return PO 对象
*/
public static Indicator toPo(IndicatorEntity entity) {
if(entity!=null) {
Indicator po =null;
if(entity instanceof InterfaceIndicatorEntity) {
po =new InterfaceIndicator();
}else if(entity instanceof IndicatorIndicatorEntity) {
po =new IndicatorIndicator();
}else {
po =new InterfaceIndicator();
}
po.setId(entity.getId());
po.setCode(entity.getCode());
po.setName(entity.getName());
po.setDescription(entity.getDescription());
po.setValueType(entity.getValueType());
po.setValueTypeVersion(entity.getValueTypeVersion());
po.setValueScale(entity.getValueScale());
po.setValueRoundingMode(entity.getValueRoundingMode());
po.setValueTypeIsList(entity.getValueTypeIsList());
po.setDefaultValue(entity.getDefaultValue());
po.setOrder(entity.getOrder());
po.setValidators(IndicatorValidatorEntityConverter.toPo(entity.getValidators()));
po.setProcessors(IndicatorProcessorEntityConverter.toPo(entity.getProcessors()));
return po;
}
return null;
}
/**
* 将实体集合转换成 PO 对象集合
* @param entities 实体集合
* @return PO 对象集合
*/
public static List<Indicator> toPo(List<IndicatorEntity> entities){
if(entities!=null && entities.size()>0) {
List<Indicator> pos =new ArrayList<Indicator>(entities.size());
for(IndicatorEntity entity : entities) {
pos.add(toPo(entity));
}
return pos;
}
return null;
}
/**
* PO 对象转换成实体对象
* @param po PO 对象
* @return 实体对象
*/
public static IndicatorEntity fromPo(Indicator po) {
if(po!=null) {
IndicatorEntity entity =null;
if(po instanceof InterfaceIndicator) {
entity =new InterfaceIndicatorEntity();
}else if(po instanceof IndicatorIndicator) {
entity =new IndicatorIndicatorEntity();
}else {
entity =new InterfaceIndicatorEntity();
}
entity.setId(po.getId());
entity.setCode(po.getCode());
entity.setName(po.getName());
entity.setDescription(po.getDescription());
entity.setValueType(po.getValueType());
entity.setValueTypeVersion(po.getValueTypeVersion());
entity.setValueScale(po.getValueScale());
entity.setValueRoundingMode(po.getValueRoundingMode());
entity.setValueTypeIsList(po.getValueTypeIsList());
entity.setDefaultValue(po.getDefaultValue());
entity.setOrder(po.getOrder());
List<IndicatorValidatorEntity> validators =IndicatorValidatorEntityConverter.fromPo(po.getValidators());
if(validators!=null && validators.size()>0) {
for(IndicatorValidatorEntity validator : validators) {
validator.setIndicator(entity);
}
}
entity.setValidators(validators);
List<IndicatorProcessorEntity> processors =IndicatorProcessorEntityConverter.fromPo(po.getProcessors());
if(processors!=null && processors.size()>0) {
for(IndicatorProcessorEntity processor : processors) {
processor.setIndicator(entity);
}
}
entity.setProcessors(processors);
return entity;
}
return null;
}
/**
* PO 对象集合转换成实体对象集合
* @param pos PO 对象集合
* @return 实体对象集合
*/
public static List<IndicatorEntity> fromPo(List<Indicator> pos){
if(pos!=null && pos.size()>0) {
List<IndicatorEntity> entities =new ArrayList<IndicatorEntity>(pos.size());
for(Indicator po : pos) {
entities.add(fromPo(po));
}
return entities;
}
return null;
}
}

223
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorProcessorEntityConverter.java

@ -0,0 +1,223 @@
package io.sc.engine.rule.server.lib.converter;
import java.util.ArrayList;
import java.util.List;
import io.sc.engine.rule.core.po.lib.IndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.ArithmeticIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.ConditionRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.EmptyIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.GroovyScriptIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.HttpRequestIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.NumberRangeIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.SqlIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.TernaryIndicatorProcessor;
import io.sc.engine.rule.core.po.lib.processor.WhenThenIndicatorProcessor;
import io.sc.engine.rule.server.lib.entity.IndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.ArithmeticIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.ConditionRangeIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.EmptyIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.GroovyScriptIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.HttpRequestIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.NumberRangeIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.SqlIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.TernaryIndicatorProcessorEntity;
import io.sc.engine.rule.server.lib.entity.processor.WhenThenIndicatorProcessorEntity;
/**
* 指标处理器实体转换器用于实现持久化实体和PO对象之间的互相转换
*/
public class IndicatorProcessorEntityConverter {
/**
* 将实体转换成 PO 对象
* @param entity 实体对象
* @return PO 对象
*/
public static IndicatorProcessor toPo(IndicatorProcessorEntity entity) {
if(entity!=null) {
IndicatorProcessor po =null;
if(entity instanceof EmptyIndicatorProcessorEntity) {
po =new EmptyIndicatorProcessor();
}else if(entity instanceof ArithmeticIndicatorProcessorEntity) {
ArithmeticIndicatorProcessorEntity _entity =(ArithmeticIndicatorProcessorEntity)entity;
ArithmeticIndicatorProcessor _po =new ArithmeticIndicatorProcessor();
_po.setArithmetic(_entity.getArithmetic());
po =_po;
}else if(entity instanceof ConditionRangeIndicatorProcessorEntity) {
ConditionRangeIndicatorProcessorEntity _entity =(ConditionRangeIndicatorProcessorEntity)entity;
ConditionRangeIndicatorProcessor _po =new ConditionRangeIndicatorProcessor();
_po.setConditionRange(_entity.getConditionRange());
po =_po;
}else if(entity instanceof TernaryIndicatorProcessorEntity) {
TernaryIndicatorProcessorEntity _entity =(TernaryIndicatorProcessorEntity)entity;
TernaryIndicatorProcessor _po =new TernaryIndicatorProcessor();
_po.setTernaryCondition(_entity.getTernaryCondition());
_po.setTernaryTrue(_entity.getTernaryTrue());
_po.setTernaryFalse(_entity.getTernaryFalse());
po =_po;
}else if(entity instanceof WhenThenIndicatorProcessorEntity) {
WhenThenIndicatorProcessorEntity _entity =(WhenThenIndicatorProcessorEntity)entity;
WhenThenIndicatorProcessor _po =new WhenThenIndicatorProcessor();
_po.setWhen(_entity.getWhen());
_po.setThen(_entity.getThen());
_po.setIsWhenThenShorted(_entity.getIsWhenThenShorted());
po =_po;
}else if(entity instanceof NumberRangeIndicatorProcessorEntity) {
NumberRangeIndicatorProcessorEntity _entity =(NumberRangeIndicatorProcessorEntity)entity;
NumberRangeIndicatorProcessor _po =new NumberRangeIndicatorProcessor();
_po.setNumberRangeVar(_entity.getNumberRangeVar());
_po.setNumberRange(_entity.getNumberRange());
po =_po;
}else if(entity instanceof GroovyScriptIndicatorProcessorEntity) {
GroovyScriptIndicatorProcessorEntity _entity =(GroovyScriptIndicatorProcessorEntity)entity;
GroovyScriptIndicatorProcessor _po =new GroovyScriptIndicatorProcessor();
_po.setGroovyScript(_entity.getGroovyScript());
po =_po;
}else if(entity instanceof SqlIndicatorProcessorEntity) {
SqlIndicatorProcessorEntity _entity =(SqlIndicatorProcessorEntity)entity;
SqlIndicatorProcessor _po =new SqlIndicatorProcessor();
_po.setSqlDatasourceName(_entity.getSqlDatasourceName());
_po.setSql(_entity.getSql());
_po.setSqlParameterValues(_entity.getSqlParameterValues());
_po.setSqlFieldMapping(_entity.getSqlFieldMapping());
po =_po;
}else if(entity instanceof HttpRequestIndicatorProcessorEntity) {
HttpRequestIndicatorProcessorEntity _entity=(HttpRequestIndicatorProcessorEntity)entity;
HttpRequestIndicatorProcessor _po =new HttpRequestIndicatorProcessor();
_po.setHttpMethod(_entity.getHttpMethod());
_po.setHttpUrl(_entity.getHttpUrl());
_po.setHttpAuthType(_entity.getHttpAuthType());
_po.setHttpAuthApikey(_entity.getHttpAuthApikey());
_po.setHttpAuthApiValue(_entity.getHttpAuthApiValue());
_po.setHttpAuthApiAddTo(_entity.getHttpAuthApiAddTo());
_po.setHttpAuthBasicUsername(_entity.getHttpAuthBasicUsername());
_po.setHttpAuthBasicPassword(_entity.getHttpAuthBasicPassword());
_po.setHttpAuthBearerToken(_entity.getHttpAuthBearerToken());
_po.setHttpParams(_entity.getHttpParams());
_po.setHttpBody(_entity.getHttpBody());
_po.setHttpResponseMapping(_entity.getHttpResponseMapping());
po =_po;
}else {
po =new EmptyIndicatorProcessor();
}
po.setId(entity.getId());
po.setDescription(entity.getDescription());
po.setOrder(entity.getOrder());
return po;
}
return null;
}
/**
* 将实体集合转换成 PO 对象集合
* @param entities 实体集合
* @return PO 对象集合
*/
public static List<IndicatorProcessor> toPo(List<IndicatorProcessorEntity> entities){
if(entities!=null && entities.size()>0) {
List<IndicatorProcessor> pos =new ArrayList<IndicatorProcessor>(entities.size());
for(IndicatorProcessorEntity entity : entities) {
pos.add(toPo(entity));
}
return pos;
}
return null;
}
/**
* PO 对象转换成实体对象
* @param po PO 对象
* @return 实体对象
*/
public static IndicatorProcessorEntity fromPo(IndicatorProcessor po) {
if(po!=null) {
IndicatorProcessorEntity entity =null;
if(po instanceof EmptyIndicatorProcessor) {
entity =new EmptyIndicatorProcessorEntity();
}else if(po instanceof ArithmeticIndicatorProcessor) {
ArithmeticIndicatorProcessor _po =(ArithmeticIndicatorProcessor)po;
ArithmeticIndicatorProcessorEntity _entity =new ArithmeticIndicatorProcessorEntity();
_entity.setArithmetic(_po.getArithmetic());
entity =_entity;
}else if(po instanceof ConditionRangeIndicatorProcessor) {
ConditionRangeIndicatorProcessor _po =(ConditionRangeIndicatorProcessor)po;
ConditionRangeIndicatorProcessorEntity _entity =new ConditionRangeIndicatorProcessorEntity();
_entity.setConditionRange(_po.getConditionRange());
entity =_entity;
}else if(po instanceof TernaryIndicatorProcessor) {
TernaryIndicatorProcessor _po =(TernaryIndicatorProcessor)po;
TernaryIndicatorProcessorEntity _entity =new TernaryIndicatorProcessorEntity();
_entity.setTernaryCondition(_po.getTernaryCondition());
_entity.setTernaryTrue(_po.getTernaryTrue());
_entity.setTernaryFalse(_po.getTernaryFalse());
entity =_entity;
}else if(po instanceof WhenThenIndicatorProcessor) {
WhenThenIndicatorProcessor _po =(WhenThenIndicatorProcessor)po;
WhenThenIndicatorProcessorEntity _entity =new WhenThenIndicatorProcessorEntity();
_entity.setWhen(_po.getWhen());
_entity.setThen(_po.getThen());
_entity.setIsWhenThenShorted(_po.getIsWhenThenShorted());
entity =_entity;
}else if(po instanceof NumberRangeIndicatorProcessor) {
NumberRangeIndicatorProcessor _po =(NumberRangeIndicatorProcessor)po;
NumberRangeIndicatorProcessorEntity _entity =new NumberRangeIndicatorProcessorEntity();
_entity.setNumberRangeVar(_po.getNumberRangeVar());
_entity.setNumberRange(_po.getNumberRange());
entity =_entity;
}else if(po instanceof GroovyScriptIndicatorProcessor) {
GroovyScriptIndicatorProcessor _po =(GroovyScriptIndicatorProcessor)po;
GroovyScriptIndicatorProcessorEntity _entity =new GroovyScriptIndicatorProcessorEntity();
_entity.setGroovyScript(_po.getGroovyScript());
entity =_entity;
}else if(po instanceof SqlIndicatorProcessor) {
SqlIndicatorProcessor _po =(SqlIndicatorProcessor)po;
SqlIndicatorProcessorEntity _entity =new SqlIndicatorProcessorEntity();
_entity.setSqlDatasourceName(_po.getSqlDatasourceName());
_entity.setSql(_po.getSql());
_entity.setSqlParameterValues(_po.getSqlParameterValues());
_entity.setSqlFieldMapping(_po.getSqlFieldMapping());
entity =_entity;
}else if(po instanceof HttpRequestIndicatorProcessor){
HttpRequestIndicatorProcessor _po =(HttpRequestIndicatorProcessor)po;
HttpRequestIndicatorProcessorEntity _entity =new HttpRequestIndicatorProcessorEntity();
_entity.setHttpMethod(_po.getHttpMethod());
_entity.setHttpUrl(_po.getHttpUrl());
_entity.setHttpAuthType(_po.getHttpAuthType());
_entity.setHttpAuthApikey(_po.getHttpAuthApikey());
_entity.setHttpAuthApiValue(_po.getHttpAuthApiValue());
_entity.setHttpAuthApiAddTo(_po.getHttpAuthApiAddTo());
_entity.setHttpAuthBasicUsername(_po.getHttpAuthBasicUsername());
_entity.setHttpAuthBasicPassword(_po.getHttpAuthBasicPassword());
_entity.setHttpAuthBearerToken(_po.getHttpAuthBearerToken());
_entity.setHttpParams(_po.getHttpParams());
_entity.setHttpBody(_po.getHttpBody());
_entity.setHttpResponseMapping(_po.getHttpResponseMapping());
entity =_entity;
}else {
entity =new EmptyIndicatorProcessorEntity();
}
entity.setId(po.getId());
entity.setDescription(po.getDescription());
entity.setOrder(po.getOrder());
return entity;
}
return null;
}
/**
* PO 对象集合转换成实体对象集合
* @param pos PO 对象集合
* @return 实体对象集合
*/
public static List<IndicatorProcessorEntity> fromPo(List<IndicatorProcessor> pos){
if(pos!=null && pos.size()>0) {
List<IndicatorProcessorEntity> entities =new ArrayList<IndicatorProcessorEntity>(pos.size());
for(IndicatorProcessor po : pos) {
entities.add(fromPo(po));
}
return entities;
}
return null;
}
}

173
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/IndicatorValidatorEntityConverter.java

@ -0,0 +1,173 @@
package io.sc.engine.rule.server.lib.converter;
import java.util.ArrayList;
import java.util.List;
import io.sc.engine.rule.core.po.lib.IndicatorValidator;
import io.sc.engine.rule.core.po.lib.RangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.DateRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.DecimalRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.EmailIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.EmptyIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.FalseIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.IntegerRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.LengthRangeIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.NotEmptyIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.PatternIndicatorValidator;
import io.sc.engine.rule.core.po.lib.validator.TrueIndicatorValidator;
import io.sc.engine.rule.server.lib.entity.IndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.RangeIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.DateRangeIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.DecimalRangeIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.EmailIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.EmptyIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.FalseIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.IntegerRangeIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.LengthRangeIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.NotEmptyIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.PatternIndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.entity.validator.TrueIndicatorValidatorEntity;
/**
* 指标验证器实体转换器用于实现持久化实体和PO对象之间的互相转换
*/
public class IndicatorValidatorEntityConverter {
/**
* 将实体转换成 PO 对象
* @param entity 实体对象
* @return PO 对象
*/
public static IndicatorValidator toPo(IndicatorValidatorEntity entity) {
if(entity!=null) {
IndicatorValidator po =null;
if(entity instanceof DateRangeIndicatorValidatorEntity) {
po =new DateRangeIndicatorValidator();
}else if(entity instanceof DecimalRangeIndicatorValidatorEntity) {
po =new DecimalRangeIndicatorValidator();
}else if(entity instanceof EmailIndicatorValidatorEntity) {
po =new EmailIndicatorValidator();
}else if(entity instanceof EmptyIndicatorValidatorEntity) {
po =new EmptyIndicatorValidator();
}else if(entity instanceof FalseIndicatorValidatorEntity) {
po =new FalseIndicatorValidator();
}else if(entity instanceof IntegerRangeIndicatorValidatorEntity) {
po =new IntegerRangeIndicatorValidator();
}else if(entity instanceof LengthRangeIndicatorValidatorEntity) {
po =new LengthRangeIndicatorValidator();
}else if(entity instanceof NotEmptyIndicatorValidatorEntity) {
po =new NotEmptyIndicatorValidator();
}else if(entity instanceof PatternIndicatorValidatorEntity) {
PatternIndicatorValidatorEntity _entity =(PatternIndicatorValidatorEntity)entity;
PatternIndicatorValidator _po =new PatternIndicatorValidator();
_po.setPattern(_entity.getPattern());
po =_po;
}else if(entity instanceof TrueIndicatorValidatorEntity) {
po =new TrueIndicatorValidator();
}else {
po =new NotEmptyIndicatorValidator();
}
if(entity instanceof RangeIndicatorValidatorEntity) {
RangeIndicatorValidatorEntity _entity =(RangeIndicatorValidatorEntity)entity;
RangeIndicatorValidator _po =(RangeIndicatorValidator)po;
_po.setMinValue(_entity.getMinValue());
_po.setMinInclude(_entity.getMinInclude());
_po.setMaxValue(_entity.getMaxValue());
_po.setMaxInclude(_entity.getMaxInclude());
}
po.setId(entity.getId());
po.setDescription(entity.getDescription());
po.setOrder(entity.getOrder());
po.setTip(entity.getTip());
return po;
}
return null;
}
/**
* 将实体集合转换成 PO 对象集合
* @param entities 实体集合
* @return PO 对象集合
*/
public static List<IndicatorValidator> toPo(List<IndicatorValidatorEntity> entities){
if(entities!=null && entities.size()>0) {
List<IndicatorValidator> pos =new ArrayList<IndicatorValidator>(entities.size());
for(IndicatorValidatorEntity entity : entities) {
pos.add(toPo(entity));
}
return pos;
}
return null;
}
/**
* PO 对象转换成实体对象
* @param po PO 对象
* @return 实体对象
*/
public static IndicatorValidatorEntity fromPo(IndicatorValidator po) {
if(po!=null) {
IndicatorValidatorEntity entity =null;
if(po instanceof DateRangeIndicatorValidator) {
entity =new DateRangeIndicatorValidatorEntity();
}else if(po instanceof DecimalRangeIndicatorValidator) {
entity =new DecimalRangeIndicatorValidatorEntity();
}else if(po instanceof EmailIndicatorValidator) {
entity =new EmailIndicatorValidatorEntity();
}else if(po instanceof EmptyIndicatorValidator) {
entity =new EmptyIndicatorValidatorEntity();
}else if(po instanceof FalseIndicatorValidator) {
entity =new FalseIndicatorValidatorEntity();
}else if(po instanceof IntegerRangeIndicatorValidator) {
entity =new IntegerRangeIndicatorValidatorEntity();
}else if(po instanceof LengthRangeIndicatorValidator) {
entity =new LengthRangeIndicatorValidatorEntity();
}else if(po instanceof NotEmptyIndicatorValidator) {
entity =new NotEmptyIndicatorValidatorEntity();
}else if(po instanceof PatternIndicatorValidator) {
PatternIndicatorValidator _po =(PatternIndicatorValidator)po;
PatternIndicatorValidatorEntity _entity =new PatternIndicatorValidatorEntity();
_entity.setPattern(_po.getPattern());
entity =_entity;
}else if(po instanceof TrueIndicatorValidator) {
entity =new TrueIndicatorValidatorEntity();
}else {
entity =new NotEmptyIndicatorValidatorEntity();
}
if(po instanceof RangeIndicatorValidator) {
RangeIndicatorValidator _po =(RangeIndicatorValidator)po;
RangeIndicatorValidatorEntity _entity =(RangeIndicatorValidatorEntity)entity;
_entity.setMinValue(_po.getMinValue());
_entity.setMinInclude(_po.getMinInclude());
_entity.setMaxValue(_po.getMaxValue());
_entity.setMaxInclude(_po.getMaxInclude());
}
entity.setId(po.getId());
entity.setDescription(po.getDescription());
entity.setOrder(po.getOrder());
entity.setTip(po.getTip());
return entity;
}
return null;
}
/**
* PO 对象集合转换成实体对象集合
* @param pos PO 对象集合
* @return 实体对象集合
*/
public static List<IndicatorValidatorEntity> fromPo(List<IndicatorValidator> pos){
if(pos!=null && pos.size()>0) {
List<IndicatorValidatorEntity> entities =new ArrayList<IndicatorValidatorEntity>(pos.size());
for(IndicatorValidator po : pos) {
entities.add(fromPo(po));
}
return entities;
}
return null;
}
}

296
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java

@ -0,0 +1,296 @@
package io.sc.engine.rule.server.lib.entity;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.sc.engine.rule.core.enums.IndicatorType;
import io.sc.engine.rule.server.lib.entity.indicator.IndicatorIndicatorEntity;
import io.sc.engine.rule.server.lib.entity.indicator.InterfaceIndicatorEntity;
import io.sc.engine.rule.server.lib.vo.IndicatorVo;
import io.sc.engine.rule.server.testcase.annotation.TestCaseParameterAble;
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper;
import io.sc.platform.orm.DeepClone;
import io.sc.platform.orm.IdClearable;
import io.sc.platform.orm.api.vo.BaseVo;
import io.sc.platform.orm.converter.NumericBooleanConverter;
import io.sc.platform.orm.entity.AuditorEntity;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.beans.BeanUtils;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
/**
* 指标实体类
* @author wangshaoping
*
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="FD_TYPE",discriminatorType=DiscriminatorType.STRING,length=20)
@Table(name="RE_LIB_INDICATOR")
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=InterfaceIndicatorEntity.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=InterfaceIndicatorEntity.class), //接口
@JsonSubTypes.Type(value=IndicatorIndicatorEntity.class) //指标
})
public abstract class IndicatorEntity extends AuditorEntity<IndicatorVo> implements DeepClone, IdClearable,TestCaseParameterAble {
//ID,主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_", length=36)
@Size(max=36)
protected String id;
//代码
@Column(name="CODE_", length=255)
@Size(max=255)
protected String code;
//名称
@Column(name="NAME_", length=255)
@Size(max=255)
protected String name;
//描述
@Column(name="DESCRIPTION_", length=255)
@Size(max=255)
protected String description;
//参数类型(用于区分子类)
@Column(name="TYPE_",insertable=false,updatable=false)
@Enumerated(EnumType.STRING)
protected IndicatorType type;
//值类型
@Column(name="VALUE_TYPE_", length=255)
protected String valueType;
//值类型版本号
@Column(name="VALUE_TYPE_VERSION_")
protected Integer valueTypeVersion;
//参数值精度
@Column(name="VALUE_SCALE_")
protected Integer valueScale;
//参数值四舍五入模式
@Column(name="VALUE_ROUNDING_MODE_")
@Enumerated(EnumType.STRING)
protected RoundingMode valueRoundingMode;
//参数值类型是否是列表
@Column(name="VALUE_TYPE_IS_LIST_")
@Convert(converter= NumericBooleanConverter.class)
protected Boolean valueTypeIsList;
//默认值
@Column(name="DEFAULT_VALUE_", length=255)
protected String defaultValue;
//排序
@Column(name="ORDER_")
protected Integer order;
//指标包含的验证器
@OneToMany(mappedBy="indicator",cascade= {CascadeType.PERSIST})
@OrderBy("order")
protected List<IndicatorValidatorEntity> validators =new ArrayList<IndicatorValidatorEntity>();
//指标包含的处理器
@OneToMany(mappedBy="indicator",cascade= {CascadeType.PERSIST})
@OrderBy("order")
protected List<IndicatorProcessorEntity> processors =new ArrayList<IndicatorProcessorEntity>();
//所属库
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="LIB_ID_")
protected LibEntity lib;
public IndicatorEntity() {}
public IndicatorEntity(String id) {
this.id =id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public IndicatorType getType() {
return type;
}
public void setType(IndicatorType type) {
this.type = type;
}
public String getValueType() {
return valueType;
}
public void setValueType(String valueType) {
this.valueType = valueType;
}
public Integer getValueTypeVersion() {
return valueTypeVersion;
}
public void setValueTypeVersion(Integer valueTypeVersion) {
this.valueTypeVersion = valueTypeVersion;
}
public Integer getValueScale() {
return valueScale;
}
public void setValueScale(Integer valueScale) {
this.valueScale = valueScale;
}
public RoundingMode getValueRoundingMode() {
return valueRoundingMode;
}
public void setValueRoundingMode(RoundingMode valueRoundingMode) {
this.valueRoundingMode = valueRoundingMode;
}
public Boolean getValueTypeIsList() {
return valueTypeIsList;
}
public void setValueTypeIsList(Boolean valueTypeIsList) {
this.valueTypeIsList = valueTypeIsList;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public List<IndicatorValidatorEntity> getValidators() {
return validators;
}
public void setValidators(List<IndicatorValidatorEntity> validators) {
this.validators = validators;
}
public List<IndicatorProcessorEntity> getProcessors() {
return processors;
}
public void setProcessors(List<IndicatorProcessorEntity> processors) {
this.processors = processors;
}
public LibEntity getLib() {
return lib;
}
public void setLib(LibEntity lib) {
this.lib = lib;
}
@Override
public Object deepClone() throws Exception {
IndicatorEntity entity =this.getClass().newInstance();
BeanUtils.copyProperties(this, entity,"validators","processors");
//validators
List<IndicatorValidatorEntity> validators =this.getValidators();
if(validators!=null && validators.size()>0) {
for(IndicatorValidatorEntity validator : validators) {
IndicatorValidatorEntity clone =(IndicatorValidatorEntity)validator.deepClone();
clone.setIndicator(entity);
entity.getValidators().add(clone);
}
}
//processors
List<IndicatorProcessorEntity> processors =this.getProcessors();
if(processors!=null && processors.size()>0) {
for(IndicatorProcessorEntity processor : processors) {
IndicatorProcessorEntity clone =(IndicatorProcessorEntity)processor.deepClone();
clone.setIndicator(entity);
entity.getProcessors().add(clone);
}
}
return entity;
}
@Override
public void clearId() {
this.setId(null);
//validators
List<IndicatorValidatorEntity> validators =this.getValidators();
if(validators!=null && validators.size()>0) {
for(IndicatorValidatorEntity validator : validators) {
validator.clearId();
}
}
//processors
List<IndicatorProcessorEntity> processors =this.getProcessors();
if(processors!=null && processors.size()>0) {
for(IndicatorProcessorEntity processor : processors) {
processor.clearId();
}
}
}
@Override
public TestCaseParameterWrapper toTestCaseParameterWrapper() {
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false);
wrapper.setTestCaseId(null);
wrapper.setParent(null);
wrapper.setCategory("P");
wrapper.setName(this.getName());
wrapper.setParameterType(null);
wrapper.setScoreCardVarType(null);
wrapper.setIndicatorType(this.getType());
wrapper.setValueType(null);
wrapper.setDefaultValue(null);
wrapper.setOrder(this.getOrder());
return wrapper;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
IndicatorEntity other = (IndicatorEntity) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}

116
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java

@ -0,0 +1,116 @@
package io.sc.engine.rule.server.lib.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.sc.engine.rule.core.enums.LibType;
import io.sc.engine.rule.server.lib.vo.IndicatorLibVo;
import io.sc.engine.rule.server.testcase.entity.LibTestCaseEntity;
import org.springframework.beans.BeanUtils;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* 参数库实体类
*/
@Entity
@DiscriminatorValue("INDICATOR")
@JsonTypeName("INDICATOR")
public class IndicatorLibEntity extends ReleasableLibEntity {
//接口
@OneToMany(mappedBy="lib",cascade= {CascadeType.PERSIST})
@OrderBy("order")
protected List<IndicatorEntity> indicators =new ArrayList<IndicatorEntity>();
@Override
public IndicatorLibVo toVo() {
IndicatorLibVo vo =new IndicatorLibVo();
super.toVo(vo);
return vo;
}
public IndicatorLibEntity() {}
public IndicatorLibEntity(String id) {
this.id =id;
}
@Override
public LibType getType() {
return LibType.INDICATOR;
}
public List<IndicatorEntity> getIndicators() {
return indicators;
}
public void setIndicators(List<IndicatorEntity> indicators) {
this.indicators = indicators;
}
@Override
public Object deepClone() throws Exception {
IndicatorLibEntity entity =new IndicatorLibEntity();
BeanUtils.copyProperties(this, entity, "children","indicators","testCases");
//children
List<LibEntity> children =this.getChildren();
if(children!=null && children.size()>0) {
for(LibEntity child : children) {
LibEntity clone =(LibEntity)child.deepClone();
clone.setParent(entity);
entity.getChildren().add(clone);
}
}
//indicators
List<IndicatorEntity> indicators =this.getIndicators();
if(indicators!=null && indicators.size()>0) {
for(IndicatorEntity indicator : indicators) {
IndicatorEntity clone =(IndicatorEntity)indicator.deepClone();
clone.setLib(entity);
entity.getIndicators().add(clone);
}
}
//testCases
List<LibTestCaseEntity> testCases =this.getTestCases();
if(testCases!=null && testCases.size()>0) {
for(LibTestCaseEntity testCase : testCases) {
LibTestCaseEntity clone =(LibTestCaseEntity)testCase.deepClone();
clone.setOwner(entity);
entity.getTestCases().add(clone);
}
}
return entity;
}
@Override
public void clearId() {
super.clearId();
List<IndicatorEntity> indicators =this.getIndicators();
if(indicators!=null && indicators.size()>0) {
for(IndicatorEntity indicator : indicators) {
indicator.clearId();
}
}
}
@Override
public String toString() {
return "IndicatorLibEntity ["
+ " type=" + type
+ " id=" + id
+ ", code=" + code
+ ", name=" + name
+ ", description=" + description
+ ", order=" + order
+ ", status=" + status
+ ", version=" + version
+ ", creator=" + creator
+ ", createDate=" + createDate
+ ", lastModifier=" + lastModifier
+ ", lastModifyDate=" + lastModifyDate
+ "]";
}
}

136
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java

@ -0,0 +1,136 @@
package io.sc.engine.rule.server.lib.entity;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.sc.engine.rule.core.enums.ProcessorType;
import io.sc.engine.rule.server.common.CodeAndNameReplacer;
import io.sc.engine.rule.server.lib.entity.processor.*;
import io.sc.engine.rule.server.lib.vo.IndicatorProcessorVo;
import io.sc.platform.orm.DeepClone;
import io.sc.platform.orm.IdClearable;
import io.sc.platform.orm.entity.AuditorEntity;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.beans.BeanUtils;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.util.Map;
/**
* 指标处理器实体类
* @author wangshaoping
*
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="FD_TYPE",discriminatorType=DiscriminatorType.STRING,length=20)
@Table(name="RE_LIB_INDICATOR_PROCESSOR")
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=EmptyIndicatorProcessorEntity.class)
@JsonSubTypes({
@JsonSubTypes.Type(value=EmptyIndicatorProcessorEntity.class), //空处理器
@JsonSubTypes.Type(value=TernaryIndicatorProcessorEntity.class), //三元操作处理器
@JsonSubTypes.Type(value=ArithmeticIndicatorProcessorEntity.class), //算数操作处理器
@JsonSubTypes.Type(value=WhenThenIndicatorProcessorEntity.class), //When-Then 操作处理器
@JsonSubTypes.Type(value=NumberRangeIndicatorProcessorEntity.class), //数值范围处理器
@JsonSubTypes.Type(value=ConditionRangeIndicatorProcessorEntity.class), //条件范围处理器
@JsonSubTypes.Type(value=GroovyScriptIndicatorProcessorEntity.class), //脚本代码处理器
@JsonSubTypes.Type(value=SqlIndicatorProcessorEntity.class), //SQL处理器
@JsonSubTypes.Type(value=HttpRequestIndicatorProcessorEntity.class) //Http请求处理器
})
public abstract class IndicatorProcessorEntity extends AuditorEntity<IndicatorProcessorVo> implements DeepClone, IdClearable, CodeAndNameReplacer{
//ID,主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_", length=36)
@Size(max=36)
protected String id;
//类型(用于区分子类)
@Column(name="TYPE_", insertable=false,updatable=false)
@Enumerated(EnumType.STRING)
protected ProcessorType type;
//所属指标
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="INDICATOR_ID_")
protected IndicatorEntity indicator;
//描述
@Column(name="DESCRIPTION_", length=255)
@Size(max=255)
protected String description;
//排序
@Column(name="ORDER_")
protected Integer order;
@Override
public IndicatorProcessorVo toVo() {
IndicatorProcessorVo vo =new IndicatorProcessorVo();
super.toVo(vo);
vo.setId(this.getId());
vo.setType(this.getType());
vo.setDescription(this.getDescription());
vo.setOrder(this.getOrder());
vo.setIndicator(this.getIndicator()==null?null:this.getIndicator().getId());
return vo;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public IndicatorEntity getIndicator() {
return indicator;
}
public void setIndicator(IndicatorEntity indicator) {
this.indicator = indicator;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public ProcessorType getType() {
return type;
}
public void setType(ProcessorType type) {
this.type = type;
}
@Override
public Object deepClone() throws Exception{
IndicatorProcessorEntity entity =this.getClass().newInstance();
BeanUtils.copyProperties(this, entity);
return entity;
}
@Override
public void clearId() {
this.setId(null);
}
@Override
public boolean replace(Map<String, String> mapping) {
return false;
}
}

26
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/exception/IndicatorAlreadyExistsException.java

@ -0,0 +1,26 @@
package io.sc.engine.rule.server.lib.exception;
/**
* 指标库中的指标已经存在违例
*/
public class IndicatorAlreadyExistsException extends RuntimeException{
public IndicatorAlreadyExistsException() {
super();
}
public IndicatorAlreadyExistsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public IndicatorAlreadyExistsException(String message, Throwable cause) {
super(message, cause);
}
public IndicatorAlreadyExistsException(String message) {
super(message);
}
public IndicatorAlreadyExistsException(Throwable cause) {
super(cause);
}
}

12
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/IndicatorValidatorService.java

@ -0,0 +1,12 @@
package io.sc.engine.rule.server.lib.service;
import io.sc.engine.rule.server.lib.entity.IndicatorValidatorEntity;
import io.sc.engine.rule.server.lib.repository.IndicatorValidatorRepository;
import io.sc.platform.orm.service.DaoService;
/**
* 指标验证器服务器接口
*/
public interface IndicatorValidatorService extends DaoService<IndicatorValidatorEntity, String, IndicatorValidatorRepository>{
}

14
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/IndicatorEntityChangedEvent.java

@ -0,0 +1,14 @@
package io.sc.engine.rule.server.lib.service.support;
import io.sc.engine.rule.server.lib.entity.IndicatorEntity;
import io.sc.platform.orm.entity.support.EntityChangedEvent;
import io.sc.platform.orm.entity.support.EntityChangedEventType;
/**
* 指标实体变化事件
*/
public class IndicatorEntityChangedEvent extends EntityChangedEvent<IndicatorEntity>{
public IndicatorEntityChangedEvent(EntityChangedEventType type, IndicatorEntity oldEntity, IndicatorEntity newEntity) {
super(type, oldEntity, newEntity);
}
}

14
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/IndicatorProcessorEntityChangedEvent.java

@ -0,0 +1,14 @@
package io.sc.engine.rule.server.lib.service.support;
import io.sc.engine.rule.server.lib.entity.IndicatorProcessorEntity;
import io.sc.platform.orm.entity.support.EntityChangedEvent;
import io.sc.platform.orm.entity.support.EntityChangedEventType;
/**
* 指标处理器实体变化事件
*/
public class IndicatorProcessorEntityChangedEvent extends EntityChangedEvent<IndicatorProcessorEntity>{
public IndicatorProcessorEntityChangedEvent(EntityChangedEventType type, IndicatorProcessorEntity oldEntity, IndicatorProcessorEntity newEntity) {
super(type, oldEntity, newEntity);
}
}

13
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/IndicatorLibVo.java

@ -0,0 +1,13 @@
package io.sc.engine.rule.server.lib.vo;
import io.sc.engine.rule.core.enums.LibType;
/**
* 参数库 Vo
*/
public class IndicatorLibVo extends ReleasableLibVo {
@Override
public LibType getType() {
return LibType.INDICATOR;
}
}

96
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/IndicatorParameterEntity.java

@ -0,0 +1,96 @@
package io.sc.engine.rule.server.model.entity.parameter;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.sc.engine.rule.core.enums.ParameterType;
import io.sc.engine.rule.server.model.entity.ParameterEntity;
import io.sc.engine.rule.server.model.vo.parameter.IndicatorParameterVo;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
/**
* 模型参数(指标)实体类
*/
@Entity
@DiscriminatorValue("INDICATOR")
@JsonTypeName("INDICATOR")
public class IndicatorParameterEntity extends ParameterEntity {
//库代码
@Column(name="LIB_CODE_")
protected String libCode;
//库版本
@Column(name="LIB_VERSION_")
protected Integer libVersion;
//指标代码
@Column(name="INDICATOR_CODE_")
protected String indicatorCode;
@Override
public IndicatorParameterVo toVo() {
IndicatorParameterVo vo =new IndicatorParameterVo();
super.toVo(vo);
this.setType(this.getType());
vo.setLibCode(this.getLibCode());
vo.setLibVersion(this.getLibVersion());
vo.setIndicatorCode(this.getIndicatorCode());
return vo;
}
public IndicatorParameterEntity() {}
public IndicatorParameterEntity(String id) {
this.id =id;
}
@Override
public ParameterType getType() {
return ParameterType.INDICATOR;
}
public String getLibCode() {
return libCode;
}
public void setLibCode(String libCode) {
this.libCode = libCode;
}
public Integer getLibVersion() {
return libVersion;
}
public void setLibVersion(Integer libVersion) {
this.libVersion = libVersion;
}
public String getIndicatorCode() {
return indicatorCode;
}
public void setIndicatorCode(String indicatorCode) {
this.indicatorCode = indicatorCode;
}
@Override
public String toString() {
return "IndicatorParameterEntity ["
+ " type=" + type
+ " id=" + id
+ ", code=" + code
+ ", name=" + name
+ ", description=" + description
+ ", order=" + order
+ ", valueType" + valueType
+ ", valueScale" + valueScale
+ ", valueRoundingMode" + valueRoundingMode
+ ", valueTypeIsList" + valueTypeIsList
+ ", defaultValue=" + defaultValue
+ ", libCode" + libCode
+ ", libVersion" + libVersion
+ ", indicatorCode" + indicatorCode
+ ", creator=" + creator
+ ", createDate=" + createDate
+ ", lastModifier=" + lastModifier
+ ", lastModifyDate=" + lastModifyDate
+ "]";
}
}

42
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/IndicatorParameterVo.java

@ -0,0 +1,42 @@
package io.sc.engine.rule.server.model.vo.parameter;
import io.sc.engine.rule.core.enums.ParameterType;
import io.sc.engine.rule.server.model.vo.ParameterVo;
/**
* 模型参数(指标) Vo
*/
public class IndicatorParameterVo extends ParameterVo {
//库代码
protected String libCode;
//库版本
protected Integer libVersion;
//指标代码
protected String indicatorCode;
@Override
public ParameterType getType() {
return ParameterType.INDICATOR;
}
public String getLibCode() {
return libCode;
}
public void setLibCode(String libCode) {
this.libCode = libCode;
}
public Integer getLibVersion() {
return libVersion;
}
public void setLibVersion(Integer libVersion) {
this.libVersion = libVersion;
}
public String getIndicatorCode() {
return indicatorCode;
}
public void setIndicatorCode(String indicatorCode) {
this.indicatorCode = indicatorCode;
}
}
Loading…
Cancel
Save