瀏覽代碼

测站点相关

yangyj 2 年之前
父節點
當前提交
c22faac8f7

+ 3 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -81,7 +81,9 @@ public class FormData {
         this.code = code;
         this.values = values;
         this.formula = formula;
-        this.coordsList = Stream.of(coords).flatMap(e-> Arrays.stream(e.split(";"))).map(e->{String[] xy=e.split("_");return new Coords(xy[1],xy[0]);}).collect(Collectors.toList());
+        if(Func.isNotBlank(coords)){
+            this.coordsList = Stream.of(coords).flatMap(e-> Arrays.stream(e.split(";"))).map(e->{String[] xy=e.split("_");return new Coords(xy[1],xy[0]);}).collect(Collectors.toList());
+        }
     }
 
     public FormData(String code, Integer step, List<ElementData> values, Formula formula,String coords) {

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/FormulaClient.java

@@ -3,7 +3,9 @@ package org.springblade.manager.feign;
 import org.springblade.manager.dto.FormData;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import java.io.FileNotFoundException;
 import java.util.List;
 
 import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
@@ -20,4 +22,7 @@ public interface FormulaClient {
     @PostMapping(API_PREFIX+"execute")
     void formulaExecute();
 
+    @PostMapping(API_PREFIX+"d-point")
+    String dPoint(@RequestParam Long pkId, @RequestParam String key) throws FileNotFoundException;
+
 }

+ 18 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/DatumPointController.java

@@ -4,7 +4,11 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -23,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
@@ -104,6 +109,19 @@ public class DatumPointController {
         return R.data(vo);
     }
 
+    @ResponseBody
+    @GetMapping("/site")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("测站点信息获取")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true),
+            @ApiImplicitParam(name = "pkId", value = "表id", required = true),
+            @ApiImplicitParam(name = "key", value = "元素key", required = true)
+    })
+    public R<Object> site(Long contractId ,Long pkId,String key) throws FileNotFoundException {
+        return this.service.site(contractId,pkId,key);
+    }
+
 
     @PostMapping("/import")
     public R importXy(@RequestParam("file") MultipartFile file, Integer type , Long contractId, Long projectId) throws Exception {

+ 43 - 6
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/DatumPointService.java

@@ -2,18 +2,21 @@ package org.springblade.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
+import lombok.AllArgsConstructor;
 import org.apache.poi.ss.usermodel.*;
 import org.springblade.business.entity.DatumPoint;
 import org.springblade.business.mapper.DatumPointMapper;
 import org.springblade.business.utils.ExcelUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.manager.feign.FormulaClient;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.InputStream;
+import java.io.FileNotFoundException;
 import java.util.*;
 
 /**
@@ -22,12 +25,46 @@ import java.util.*;
  * @description TODO
  */
 @Service
+@AllArgsConstructor
 public class DatumPointService extends BaseServiceImpl<DatumPointMapper, DatumPoint> {
+     private  final FormulaClient formulaClient;
+    public R<Object> site(Long contractId,Long pkId,String key) throws FileNotFoundException {
+          Map<String,Object> result = new HashMap<>();
+          if(Func.isNotEmpty(contractId)&&Func.isNotEmpty(pkId)&&Func.isNotEmpty(key)) {
+              /*获取定位配置信息,取第一个
+               * {站点名称:{key_x:xxx,key_y:xxx,key_h:xxx}}
+               * */
+              key = key.replaceAll("__[\\d_]+", "");
+              String keys = this.formulaClient.dPoint(pkId, key);
+              if (Func.isNotBlank(keys)) {
+                  String[] ka = keys.split(StringPool.COMMA);
+                  LambdaQueryWrapper<DatumPoint> wrapper;
+                  if (ka.length == 1) {
+                      wrapper = Wrappers.<DatumPoint>lambdaQuery().eq(DatumPoint::getContractId, contractId).eq(DatumPoint::getType, 0);
+                  } else {
+                      wrapper = Wrappers.<DatumPoint>lambdaQuery().eq(DatumPoint::getContractId, contractId).eq(DatumPoint::getType, 1);
+                  }
+                  List<DatumPoint> data = this.list(wrapper);
+                  String finalKey = key;
+                  if (Func.isNotEmpty(data)) {
+                      if (ka.length == 1) {
+                          data.forEach(e -> {
+                              Map<String, Object> map = new HashMap<>();
+                              map.put(finalKey +"__"+ka[0], e.getH());
+                              result.put(e.getName(), map);
+                          });
+                      } else {
+                          data.forEach(e -> {
+                              Map<String, Object> map = new HashMap<>();
+                              map.put(finalKey+"__"+ka[0], e.getX());
+                              map.put(finalKey+"__"+ka[1], e.getY());
+                              result.put(e.getName(), map);
+                          });
+                      }
 
-    public R<Object> site(Long contractId,String pkId,String key){
-          Map<String,String> result = new HashMap<>();
-
-          LambdaQueryWrapper<DatumPoint> wrapper = Wrappers.<DatumPoint>lambdaQuery().eq(DatumPoint::getContractId,contractId).eq(DatumPoint::getType,1);
+                  }
+              }
+          }
           return  R.data(result);
     }
 

+ 34 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/FormulaClientImpl.java

@@ -1,15 +1,24 @@
 package org.springblade.manager.feign;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.core.tool.utils.BeanUtil;
+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.KeyMapper;
+import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.IFormulaService;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -21,6 +30,8 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class FormulaClientImpl implements  FormulaClient{
     private  final IFormulaService service;
+    private final JdbcTemplate jdbcTemplate;
+    private final IExcelTabService excelTabService;
     @Override
     public void formulaExecute() {
         List<FormData> list = new ArrayList<>();
@@ -34,6 +45,29 @@ public class FormulaClientImpl implements  FormulaClient{
         list.add(makeFd("","d","",0,10,7,2,5,5));
         service.execute(list,111111L,22222L);
     }
+
+    @Override
+    public String dPoint(Long pkId, String key)  {
+        StringBuilder sb = new StringBuilder();
+        try {
+            Map<String,String> keysMap = this.excelTabService.getTablbCols(String.valueOf(pkId),null);
+            Map<String, Object> queryForMap = this.jdbcTemplate.queryForMap("SELECT   a.p_key_id as nodeId,b.id as fieldId,b.e_key as field,c.init_table_name as tableName  from m_wbs_tree_contract a LEFT JOIN m_wbs_form_element b on a.id=b.f_id left JOIN m_wbs_tree c on a.id=c.id where b.e_key='"+key+"' and b.is_deleted=0 and a.p_key_id = (" + pkId + ")");
+          if(Func.isNotEmpty(queryForMap)) {
+              KeyMapper keyMapper = BeanUtil.toBean(queryForMap, KeyMapper.class);
+              Formula formula = this.service.getOne(Wrappers.<Formula>lambdaQuery().eq(Formula::getElementId, keyMapper.getFieldId()));
+              if(Func.isNotEmpty(formula)) {
+                  formula.getRelyList().forEach(e -> {
+                      sb.append(keysMap.get(e.split(StringPool.COLON)[1])).append(StringPool.COMMA);
+                  });
+              }
+          }
+        }catch (FileNotFoundException e){
+            e.printStackTrace();
+            sb.append("无法获取定位信息");
+        }
+        return sb.toString();
+    }
+
     public FormData makeFd(String fs,String code,String rely,Object ...obs){
         Formula f= new Formula();
         f.setRely(rely);

+ 1 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/CompositeDataAccess.java

@@ -84,9 +84,8 @@ public class CompositeDataAccess  {
             for(Map.Entry<String,FormData> fd:fds.entrySet()){
                 List<ElementData> list = fd.getValue().getValues();
                 if(list.size()<=cursor){
-                    list.addAll(Collections.nCopies(cursor-list.size()+1,null));
+                    list.addAll(Collections.nCopies(cursor-list.size()+1,new ElementData(cursor/fd.getValue().getCoordsList().size(),1,null)));
                 }
-                /*动态增减的时候难以判定是否换页,暂时全部用1代替*/
                 list.add(cursor,data.getOrDefault(fd.getKey(),new ElementData(cursor/fd.getValue().getCoordsList().size(),1,null)));
             }
         }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -107,4 +107,5 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
 
 	// 获取用户端 单个表单接口数据
 	R getBussDataInfo(Long pkeyId);
+
 }