Explorar o código

客户端设置和获取g8g10偏差,公式执行时查询偏差

lvy hai 1 mes
pai
achega
7511441b5b

+ 3 - 3
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/WbsTreeContractStatisticsClientImpl.java

@@ -45,19 +45,19 @@ public class WbsTreeContractStatisticsClientImpl implements WbsTreeContractStati
             if (!queryList.isEmpty()) {
                 for (InformationQuery query : queryList) {
                     if (map.containsKey(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify())) {
+                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                         continue;
                     }
                     try {
                         wbsTreeContractStatisticsService.updateInformationNumber(query.getWbsId(), query.getClassify(), query.getContractId());
                         map.put(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify(), "");
+                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                     } catch (Exception e) {
+                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                         redisTemplate.opsForList().rightPush("blade:statistics:information_query_statistics_key", query.getId() + "");
                         log.error("updateInformationQueryStatus wbsId = {}, contractId = {}, classify = {}", query.getWbsId(), query.getContractId(), query.getClassify() , e);
                     }
                 }
-                for (String queryId : queryIds) {
-                    redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, queryId);
-                }
             }
         }
     }

+ 98 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,14 +13,13 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.BaseUtils;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.*;
 import org.springblade.manager.dto.FileNameRuleDto;
 import org.springblade.manager.dto.FormulaBean;
 import org.springblade.manager.dto.WbsParamBean;
@@ -603,7 +603,99 @@ public class WbsParamController {
         return R.success("操作成功");
     }
 
-
-
+    private static final String G10PCFW = "G10pcfw";
+    private static final String G8PCFW = "g8pcfw";
+    /**
+     * 获取偏差范围(高程偏差和平面偏差)
+     * @param
+     * @return
+     */
+    @GetMapping("/getDeviationRange")
+    public R<List<WbsParam>> getDeviationRange(@RequestParam Long pKeyId){
+        List<WbsParam> wps = this.service.list(Wrappers.<WbsParam>lambdaUpdate().eq(WbsParam::getNodeId,pKeyId).in(WbsParam::getK,G10PCFW, G8PCFW));
+        if (wps == null || wps.isEmpty()) {
+            // 获取父节点
+            wps = this.service.list(Wrappers.<WbsParam>lambdaQuery().in(WbsParam::getK, G10PCFW, G8PCFW).apply(" node_id = (select p_id from m_wbs_tree_contract where p_key_id = " + pKeyId + " )"));
+            if (wps == null || wps.isEmpty()) {
+                wps = this.service.list(Wrappers.<WbsParam>lambdaQuery().in(WbsParam::getK, G10PCFW, G8PCFW)
+                        .apply(" node_id = (SELECT is_type_private_pid from m_wbs_tree_contract WHERE p_key_id = (select p_id from m_wbs_tree_contract where p_key_id =  "+ pKeyId +" ))"));
+            }
+        }
+        if (wps != null && !wps.isEmpty()) {
+            Map<Integer, List<WbsParam>> map = wps.stream().collect(Collectors.groupingBy(WbsParam::getType));
+            List<Integer> keys = new ArrayList<>(map.keySet());
+            keys.sort(Integer::compareTo);
+            for (int i = keys.size() - 1; i >= 0; i--) {
+                wps = map.get(keys.get(i));
+                if (wps !=  null && !wps.isEmpty()) {
+                    break;
+                }
+            }
+        }
+        return R.data(wps);
+    }
+    /**
+     * 设置偏差范围(高程偏差和平面偏差)
+     * @param
+     * @return
+     */
+    @PostMapping("/setDeviationRange")
+    public R<Boolean> setDeviationRange(@RequestBody JSONObject obj){
+        Long nodeId = obj.getLong("pKeyId");
+        if (nodeId == null || nodeId <= 0) {
+            return R.fail("参数错误");
+        }
+        String g10 = checkDeviationRange(obj.getString("g10pcfw"));
+        String g8 = checkDeviationRange(obj.getString(G8PCFW));
+        if (StringUtil.isBlank(g10) && StringUtil.isBlank(g8)) {
+            return R.fail("请输入符合格式要求的偏差范围");
+        }
+        try {
+            saveOrUpdateDeviationRange(nodeId, G10PCFW, g10, "G10偏差范围");
+            saveOrUpdateDeviationRange(nodeId, G8PCFW, g8, "G8高程偏差");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail("操作失败");
+        }
+        return R.data(true);
+    }
+    private void saveOrUpdateDeviationRange(Long nodeId, String k,String v, String name) {
+        if (v == null) {
+            return;
+        }
+        WbsParam g10Param = this.service.getOne(Wrappers.<WbsParam>lambdaUpdate().eq(WbsParam::getNodeId, nodeId).eq(WbsParam::getK,k).last(" limit 1"));
+        if (g10Param == null) {
+            g10Param = new WbsParam();
+            g10Param.setId(SnowFlakeUtil.getId());
+            g10Param.setName(name);
+            g10Param.setK(k);
+            g10Param.setNodeId(nodeId);
+            g10Param.setType(220);
+            g10Param.setCreateUser(AuthUtil.getUserId());
+            g10Param.setCreateTime(new Date());
+            g10Param.setV(v);
+            this.service.save(g10Param);
+        } else {
+            this.service.update(Wrappers.<WbsParam>lambdaUpdate().eq(WbsParam::getId,g10Param.getId()).set(WbsParam::getV, v).set(WbsParam::getUpdateUser,AuthUtil.getUserId()).set(WbsParam::getUpdateTime,new Date()));
+        }
+    }
+    private static String checkDeviationRange(String deviationRange) {
+        if (deviationRange ==  null || deviationRange.trim().isEmpty()) {
+            return null;
+        }
+        if (deviationRange.contains("±") && StringUtils.isNumber(deviationRange.replace("±", ""))) {
+            return deviationRange;
+        }
+        if (deviationRange.contains(",")) {
+            String[] split = deviationRange.split("[,,]");
+            if (split.length <= 1) {
+                return null;
+            }
+            if (StringUtils.isNumber(split[0]) && StringUtils.isNumber(split[1])) {
+                return split[0] + "," + split[1];
+            }
+        }
+        return null;
+    }
 
 }

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -935,14 +935,27 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public Map<String, Object> getWpMap(Long wbsNodeId, Long wtpPkeyId, TableElementConverter tec) {
         Map<String, Object> result = new HashMap<>(100);
         List<WbsParam> total = this.getNodeWps(wbsNodeId, wtpPkeyId);
+        Set<Long> tablePkeyIds = tec.getTableAll().stream().map(NodeTable::getPKeyId).collect(Collectors.toSet());
+        // 目前表单 参数只有偏差范围 2025-08-15
+        List<WbsParam> tabWps = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().in(WbsParam::getNodeId, tablePkeyIds).in(WbsParam::getK, "G10pcfw", "g8pcfw").eq(WbsParam::getType, 220));
         Map<String, String> logMap = new HashMap<>();
+        Map<String, WbsParam> tatalMap = new HashMap<>();
         if (CollectionUtil.isNotEmpty(total)) {
             /*同名参数私有覆盖公用*/
             for (WbsParam p : total) {
                 result.put(p.getK(), p.getV());
                 logMap.put(p.getK(), p.getName());
+                tatalMap.put(p.getK(), p);
             }
         }
+        if (CollectionUtil.isNotEmpty(tabWps)) {
+            for (WbsParam p : tabWps) {
+                result.put(p.getK(), p.getV());
+                logMap.put(p.getK(), p.getName());
+                tatalMap.put(p.getK(), p);
+            }
+            total = new ArrayList<>(tatalMap.values());
+        }
         //tec.getLog().put(FormulaLog.PARAM,result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";")));
         /*绑定节点参数公式*/
         this.bindParamFormula(total, tec);