|
@@ -1,21 +1,25 @@
|
|
|
package org.springblade.manager.formula.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.annotation.JSONField;
|
|
|
import com.mixsmart.utils.FormulaUtils;
|
|
|
import com.mixsmart.utils.StringUtils;
|
|
|
+import io.swagger.models.auth.In;
|
|
|
import lombok.Data;
|
|
|
import lombok.EqualsAndHashCode;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springblade.core.tool.utils.ReflectUtil;
|
|
|
+import org.springblade.core.tool.utils.StringPool;
|
|
|
import org.springblade.manager.dto.ElementData;
|
|
|
import org.springblade.manager.dto.FormData;
|
|
|
import org.springblade.manager.formula.FormulaExecutor;
|
|
|
import org.springblade.manager.formula.NodeTable;
|
|
|
import org.springblade.manager.vo.BaseInfo;
|
|
|
+import org.springblade.manager.vo.InterimPaymentCertificate;
|
|
|
import org.springblade.manager.vo.Material;
|
|
|
+import org.springblade.manager.vo.MeterType;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Optional;
|
|
|
+import java.lang.reflect.Field;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
@@ -36,11 +40,10 @@ public class ExecutorSpecial extends FormulaExecutor {
|
|
|
|
|
|
@Override
|
|
|
public void handle() {
|
|
|
- for(NodeTable nodeTable:tec.getTableAll()){
|
|
|
- if(Material.TBN_CH.equals(nodeTable.getNodeName())){
|
|
|
- MaterialCalc materialCalc = new MaterialCalc(tec.getFormDataList());
|
|
|
- this.specialList.add(materialCalc);
|
|
|
- }
|
|
|
+ if(MeterType.MATERIAL.equals(tec.getMeterType())){
|
|
|
+ this.specialList.add(new MaterialCalc());
|
|
|
+ }else if(MeterType.INTERIM.equals(tec.getMeterType())){
|
|
|
+ this.specialList.add(new InterimPayCert());
|
|
|
}
|
|
|
this.specialList.stream().filter(Special::ready).forEach(Special::parse);
|
|
|
}
|
|
@@ -65,7 +68,8 @@ public class ExecutorSpecial extends FormulaExecutor {
|
|
|
/**预付款合计*/
|
|
|
private String totalAdvance;
|
|
|
private List<FormData> fds=new ArrayList<>();
|
|
|
- public MaterialCalc(List<FormData> list) {
|
|
|
+ public MaterialCalc() {
|
|
|
+ List<FormData> list =tec.getFormDataList();
|
|
|
Optional<FormData> fop= list.stream().filter(e->e.executable()&&"MATERIAL".equals(e.getFormula().getNumber())).findAny();
|
|
|
List<FormData> candidate = new ArrayList<>();
|
|
|
if(fop.isPresent()){
|
|
@@ -184,8 +188,45 @@ public class ExecutorSpecial extends FormulaExecutor {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Data
|
|
|
+ public class InterimPayCert implements Special{
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean ready() {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void parse() {
|
|
|
+ LinkedHashMap<String,FormData> fdm = FormulaUtils.toFormDataMap(new InterimPaymentCertificate());
|
|
|
+ Map<String,Function<InterimPaymentCertificate,Object>> functionMap = FormulaUtils.functionMapBuilder(InterimPaymentCertificate.class);
|
|
|
+ tec.getFormDataMap().putAll(fdm);
|
|
|
+ List<InterimPaymentCertificate> dataList = new ArrayList<>();
|
|
|
+ /*数据获取start*/
|
|
|
+ dataList.add(new InterimPaymentCertificate()) ;//测试,按照业务写,实际会复杂许多
|
|
|
+ //TODO
|
|
|
+ /*数据获取end*/
|
|
|
+ fdm.values().forEach(fd->{
|
|
|
+ List<Object> raw = dataList.stream().map(functionMap.get(fd.getCode())).filter(Func::isNotEmpty).collect(Collectors.toList());
|
|
|
+ if(raw.size()>0){
|
|
|
+ List<ElementData> eds = fd.getValues();
|
|
|
+ for(Object value:raw){
|
|
|
+ eds.add(new ElementData(value));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public interface Special{
|
|
|
+ /**是否满足执行条件*/
|
|
|
boolean ready();
|
|
|
+ /**解析数据*/
|
|
|
void parse();
|
|
|
}
|
|
|
}
|