|
@@ -52,26 +52,37 @@ public class FormulaMileage implements FormulaStrategy {
|
|
tec.getLog().append(cur.getEName()).append("不满足依赖");
|
|
tec.getLog().append(cur.getEName()).append("不满足依赖");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- LinkedHashMap<String,FormData> linkedHashMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ List<FormData> data=new ArrayList<>();
|
|
for(String k:relyList){
|
|
for(String k:relyList){
|
|
- linkedHashMap.put(k,tec.formDataMap.get(k));
|
|
|
|
|
|
+ FormData fdTmp =tec.formDataMap.get(k);
|
|
|
|
+ data.add(tec.formDataMap.get(k));
|
|
|
|
+ if(fdTmp==null){
|
|
|
|
+ tec.getLog().append("G10依赖元素").append(k).append("缺失");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- CompositeDataAccess cda = new CompositeDataAccess(linkedHashMap);
|
|
|
|
|
|
+ /*元素定位信息接口很不靠谱,满足条件的行才计算*/
|
|
List<Mileage> mileageList = new ArrayList<>();
|
|
List<Mileage> mileageList = new ArrayList<>();
|
|
- while (cda.hasNext()){
|
|
|
|
- LinkedHashMap<String,ElementData> row = cda.next();
|
|
|
|
- if(row.size()<relyList.size()){
|
|
|
|
- tec.getLog().append("G10元素定位信息异常");
|
|
|
|
- /*结束运行*/
|
|
|
|
- cur.setFinished(Boolean.TRUE);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- Mileage mileage = new Mileage(row);
|
|
|
|
- for(int i=0;i<relyList.size();i++){
|
|
|
|
- String key=relyList.get(i);
|
|
|
|
- ElementData ed =row.get(key);
|
|
|
|
- String val=ed.stringValue();
|
|
|
|
- mileage.setValue(i,val);
|
|
|
|
|
|
+ FormData line0=data.get(0);
|
|
|
|
+ if(line0!=null&&Func.isNotEmpty(line0.getValues())){
|
|
|
|
+ List<ElementData> eds=line0.getValues();
|
|
|
|
+ for (ElementData ed : eds) {
|
|
|
|
+ LinkedHashMap<String, ElementData> row = new LinkedHashMap<>();
|
|
|
|
+ Mileage mileage = new Mileage(row);
|
|
|
|
+ mileage.setValue(0, ed.stringValue());
|
|
|
|
+ row.put(line0.getCode(), ed);
|
|
|
|
+ for (int j = 1; j < relyList.size(); j++) {
|
|
|
|
+ FormData rely = data.get(j);
|
|
|
|
+ if (rely != null && rely.getValues().size() > 0) {
|
|
|
|
+ int finalJ = j;
|
|
|
|
+ rely.getValues().stream().filter(eo -> StringUtils.isEquals(ed.getRowKey(), eo.getRowKey())).findAny().ifPresent(d -> {
|
|
|
|
+ row.put(rely.getCode(), d);
|
|
|
|
+ mileage.setValue(finalJ, d.stringValue());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ mileageList.add(mileage);
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(Func.isNotEmpty(mileageList)){
|
|
if(Func.isNotEmpty(mileageList)){
|
|
@@ -96,10 +107,8 @@ public class FormulaMileage implements FormulaStrategy {
|
|
m.calculate(relyList);
|
|
m.calculate(relyList);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- linkedHashMap.forEach((k,v)->{
|
|
|
|
- v.setUpdate(1);
|
|
|
|
- v.setFinished(Boolean.TRUE);
|
|
|
|
- });
|
|
|
|
|
|
+ data.forEach(e->{e.setUpdate(1);e.setFinished(Boolean.TRUE);});
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -107,40 +116,7 @@ public class FormulaMileage implements FormulaStrategy {
|
|
}
|
|
}
|
|
public static final Pattern MILE_P = Pattern.compile("(?<=T\\(com.mixsmart.utils.CustomFunction\\).MILE\\()([^,]+),([^,]+)(?=,)");
|
|
public static final Pattern MILE_P = Pattern.compile("(?<=T\\(com.mixsmart.utils.CustomFunction\\).MILE\\()([^,]+),([^,]+)(?=,)");
|
|
|
|
|
|
- public Map<String,String[]> getCoordinate(String tmp,List<FormData> fds,Long contractId){
|
|
|
|
- Matcher mile=MILE_P.matcher(tmp);
|
|
|
|
- List<String> zhs;
|
|
|
|
- List<String> jzs;
|
|
|
|
- if (mile.find()){
|
|
|
|
- String zh= mile.group(1).replaceAll("E\\['","").replaceAll("']","");
|
|
|
|
- String jz= mile.group(2).replaceAll("E\\['","").replaceAll("']","");
|
|
|
|
- /*查找桩号元素*/
|
|
|
|
- Optional<FormData> op=fds.stream().filter(e->e.getCode().equals(zh)).findFirst();
|
|
|
|
- if(op.isPresent()){
|
|
|
|
- /*获取桩号数据*/
|
|
|
|
- zhs=op.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
|
|
|
|
- if(zhs.size()>0){
|
|
|
|
- Optional<FormData> op2=fds.stream().filter(e->e.getCode().equals(jz)).findFirst();
|
|
|
|
- if(op2.isPresent()){
|
|
|
|
- /*获取偏位数据*/
|
|
|
|
- jzs=op2.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
|
|
|
|
- List<String> mileages = new ArrayList<>();
|
|
|
|
- int size = Math.min(zhs.size(),jzs.size());
|
|
|
|
- for(int i=0;i<size;i++){
|
|
|
|
- String s1 =zhs.get(i);
|
|
|
|
- String s2 =jzs.get(i);
|
|
|
|
- if(StringUtils.isNotEmpty(s1,s2)){
|
|
|
|
- mileages.add(s1+"@"+s2);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return mileageClient.mileage2Coordinate(mileages,contractId);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
- }
|
|
|
|
- return new HashMap<>(20);
|
|
|
|
- }
|
|
|
|
|
|
|
|
public void write( LinkedHashMap<String,ElementData> row,List<Object>data,List<String> keys,List<String> scale3){
|
|
public void write( LinkedHashMap<String,ElementData> row,List<Object>data,List<String> keys,List<String> scale3){
|
|
if(ListUtils.isNotEmpty(data)){
|
|
if(ListUtils.isNotEmpty(data)){
|