|
@@ -8,10 +8,12 @@ import lombok.Data;
|
|
|
import org.springblade.business.feign.MileageClient;
|
|
|
import org.springblade.common.utils.BaseUtils;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springblade.core.tool.utils.StringPool;
|
|
|
import org.springblade.manager.dto.ElementData;
|
|
|
import org.springblade.manager.dto.FormData;
|
|
|
import org.springblade.manager.entity.Formula;
|
|
|
import org.springblade.manager.formula.FormulaStrategy;
|
|
|
+import org.springblade.manager.formula.Mileage;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.*;
|
|
@@ -44,55 +46,58 @@ public class FormulaMileage implements FormulaStrategy {
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public void execute(List<FormData> fds, Map<String,Object> constantMap) {
|
|
|
- List<ElementData> eds = cur.getValues();
|
|
|
- Map<String,String[]> mileages = getCoordinate(cur.getFormula().getFormula(),fds, Func.toLong(constantMap.get("contractId")));
|
|
|
- if(ListUtils.isNotEmpty(eds)&&!mileages.isEmpty()){
|
|
|
- Matcher m= MILE_ARGS.matcher(cur.getFormula().getFormula());
|
|
|
- if(m.find()){
|
|
|
- this.relyList =cur.getFormula().getRelyList();
|
|
|
- LinkedHashMap<String,FormData> map = new LinkedHashMap<>();
|
|
|
- List<FormData> listFd = new ArrayList<>();
|
|
|
- this.relyList.forEach(e->{
|
|
|
- fds.forEach(k->{
|
|
|
- if(e.equals(k.getCode())){
|
|
|
- map.put(k.getCode(),k);
|
|
|
- listFd.add(k);
|
|
|
+ public void execute(TableElementConverter tec) {
|
|
|
+ List<String> relyList = cur.getFormula().getRelyList();
|
|
|
+ if(relyList.size()<KEYS.size()){
|
|
|
+ tec.getLog().append(cur.getEName()).append("不满足依赖");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ LinkedHashMap<String,FormData> linkedHashMap = new LinkedHashMap<>();
|
|
|
+ for(String k:relyList){
|
|
|
+ linkedHashMap.put(k,tec.formDataMap.get(k));
|
|
|
+ }
|
|
|
+ CompositeDataAccess cda = new CompositeDataAccess(linkedHashMap);
|
|
|
+ List<Mileage> mileageList = new ArrayList<>();
|
|
|
+ while (cda.hasNext()){
|
|
|
+ LinkedHashMap<String,ElementData> row = cda.next();
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(Func.isNotEmpty(mileageList)){
|
|
|
+ List<String> zhpw =mileageList.stream().filter(Mileage::isChecked).map(Mileage::getZhPw).collect(Collectors.toList());
|
|
|
+ Map<String,String[]> coordinateMap = mileageClient.mileage2Coordinate(zhpw,Func.toLong(tec.getConstantMap().get("contractId")));
|
|
|
+ if(coordinateMap.size()>0){
|
|
|
+ mileageList.forEach(m->{
|
|
|
+ String[] coordinate = coordinateMap.get(m.getZhPw());
|
|
|
+ if(coordinate!=null){
|
|
|
+ m.setSjx(coordinate[0]);
|
|
|
+ m.setSjy(coordinate[1]);
|
|
|
+ if(m.isEmptyDev()){
|
|
|
+ String dev = cur.getFormula().getDev();
|
|
|
+ if(StringUtils.isEmpty(dev)){
|
|
|
+ dev=Mileage.DEV;
|
|
|
+ }
|
|
|
+ Map<String, Object> xyz = FormulaUtils.triangleSquare(dev);
|
|
|
+ m.setDx(xyz.get("X").toString());
|
|
|
+ m.setDy(xyz.get("Y").toString());
|
|
|
+ m.setDs(xyz.get("Z").toString());
|
|
|
}
|
|
|
- });
|
|
|
- });
|
|
|
- if(listFd.size()<KEYS.size()){
|
|
|
- return;
|
|
|
- }
|
|
|
- CompositeDataAccess cda = new CompositeDataAccess(map);
|
|
|
- List<String> keys = KEYS.stream().skip(2).collect(Collectors.toList());
|
|
|
- List<String> scale3=Arrays.asList(SJX,SJY,SCX,SCY);
|
|
|
- while (cda.hasNext()){
|
|
|
- LinkedHashMap<String,ElementData> row = cda.next();
|
|
|
- /*桩号*/
|
|
|
- ElementData ea=row.get(relyList.get(0));
|
|
|
- /*偏距*/
|
|
|
- ElementData eb=row.get(relyList.get(1));
|
|
|
- if(!ea.isEmpty()&&!eb.isEmpty()){
|
|
|
- String k = ea.stringValue();
|
|
|
- String jz= eb.stringValue();
|
|
|
- String[] coordinate = mileages.get(k+"@"+jz);
|
|
|
- Map<String, Object> xyz = FormulaUtils.triangleSquare("-5,+5");
|
|
|
- double dx = Double.parseDouble(xyz.get("X").toString());
|
|
|
- double dy = Double.parseDouble(xyz.get("Y").toString());
|
|
|
- double ds = Double.parseDouble(xyz.get("Z").toString());
|
|
|
- double scx= Double.parseDouble(coordinate[0]) + dx * 0.001;
|
|
|
- double scy= Double.parseDouble(coordinate[1]) + dy * 0.001;
|
|
|
- double sjx= Double.parseDouble(coordinate[0]);
|
|
|
- double sjy= Double.parseDouble(coordinate[1]);
|
|
|
- List<Object> data = new ArrayList<>(Arrays.asList("占位","占位",sjx,sjy,scx,scy,dx,dy,ds));
|
|
|
- this.write(row,data,keys,scale3);
|
|
|
+ m.calculate(relyList);
|
|
|
}
|
|
|
- }
|
|
|
- listFd.forEach(e->e.setUpdate(1));
|
|
|
+ });
|
|
|
+ linkedHashMap.forEach((k,v)->{
|
|
|
+ v.setUpdate(1);
|
|
|
+ v.setFinished(Boolean.TRUE);
|
|
|
+ });
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
- this.cur.setFinished(Boolean.TRUE);
|
|
|
+
|
|
|
}
|
|
|
public static final Pattern MILE_P = Pattern.compile("(?<=T\\(com.mixsmart.utils.CustomFunction\\).MILE\\()([^,]+),([^,]+)(?=,)");
|
|
|
|