Prechádzať zdrojové kódy

试验-规范管理-
1、范围技术指标查询问题处理
2、范围正数无问题,负数的问题待处理

LHB 2 mesiacov pred
rodič
commit
a45a23b9d9

+ 14 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml

@@ -71,7 +71,21 @@
     </select>
     <select id="findByParentId" resultType="org.springblade.business.entity.StandardInfo">
         select
+            case
+                when
+                    symbol = '~'
+                then
+                    SUBSTRING_INDEX(name, '~', 1)
+                else
+                    name
+            end `name`,
             <include refid="Base_Column_List"/>,
+            case
+                when
+                    symbol = '~'
+                then
+                    SUBSTRING_INDEX(name, '~', -1)
+            end nameEnd,
             case
                 when
                     symbol = '~'

+ 19 - 5
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java

@@ -85,13 +85,13 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
 
                 //判断符号之后的数据是否为数字
                 if (StringUtils.isNotEmpty(item.getSymbol())) {
-                    if (!NumberUtils.isNumber(item.getName())) {
-                        throw new ServiceException("数据错误,未知字符");
+                    if(item.getName().startsWith("+")){
+                        item.setName(item.getName().substring(1));
                     }
                     //如果是范围符号 则单独处理数据
                     if(StringUtils.equals(item.getSymbol(),"~")){
-                        if (!NumberUtils.isNumber(item.getNameEnd())) {
-                            throw new ServiceException("数据错误,未知字符");
+                        if(item.getNameEnd().startsWith("+")){
+                            item.setNameEnd(item.getNameEnd().substring(1));
                         }
                         item.setName(item.getName() + "~" + item.getNameEnd());
                     }
@@ -131,6 +131,20 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
                     //更新的子集合 添加更新人
                     item.setUpdateUser(user.getUserId());
                 }
+
+                //判断符号之后的数据是否为数字
+                if (StringUtils.isNotEmpty(item.getSymbol())) {
+                    if(item.getName().startsWith("+")){
+                        item.setName(item.getName().substring(1));
+                    }
+                    //如果是范围符号 则单独处理数据
+                    if(StringUtils.equals(item.getSymbol(),"~")){
+                        if(item.getNameEnd().startsWith("+")){
+                            item.setNameEnd(item.getNameEnd().substring(1));
+                        }
+                        item.setName(item.getName() + "~" + item.getNameEnd());
+                    }
+                }
             });
             //更新父级对象
             StandardInfo parent = BeanUtil.copyProperties(uStandardInfo, StandardInfo.class);
@@ -140,7 +154,7 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
             return true;
         } catch (Exception e) {
             e.printStackTrace();
-            throw new ServiceException("更新失败");
+            throw new ServiceException(e.getMessage());
         }
     }
 

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -5180,7 +5180,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             String[] split = record.getStandardInfoIds().split(",");
             if (split.length > 0) {
                 // 技术指标
-                List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT concat(a.symbol,a.name) symbolName,b.col_key,b.col_name from u_standard_info a, u_standard_info_private_join b WHERE a.id = b.standard_info_id and " +
+                List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT  case when a.symbol = '~' then  a.name else concat(a.symbol,a.name) end symbolName,b.col_key,b.col_name from u_standard_info a, u_standard_info_private_join b WHERE a.id = b.standard_info_id and " +
                                 "a.standard_id = ? and b.private_id = ? and a.is_deleted = 0 and b.is_deleted = 0 " +
                                 "and (SELECT count(1) from u_standard_info_join WHERE standard_info_right_id in ( "+ record.getStandardInfoIds() +" ) and standard_info_left_id = a.id and is_deleted = 0) = ?"
                         , record.getStandardId() , wbsTreePrivate.getPKeyId(), split.length);

+ 48 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -5106,6 +5106,32 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                         f = f.replace(el, "缺少数据无法匹配");
                                         break;
                                     }
+                                    //生成比较公式的时候是否使用或者
+                                    Boolean isOr = false;
+                                    //如果是范围
+                                    if (list1.get(0).contains("~") || list2.get(0).contains("~")) {
+                                        if(list1.get(0).contains("~")){
+                                            String[] split2 = list1.get(0).split("~");
+                                            list1.set(0, ">" + split2[0] + " <" + split2[1]);
+                                        }else{
+                                            String[] split2 = list2.get(0).split("~");
+                                            list2.set(0, ">" + split2[0] + " <" + split2[1]);
+                                        }
+
+
+                                    } else if (list1.get(0).startsWith("±") || list2.get(0).startsWith("±")) {
+                                        isOr = true;
+                                        //如果是正负值
+                                        if(list1.get(0).startsWith("±")){
+                                            String value = list1.get(0).substring(1);
+
+                                            list1.set(0, "=" + value + " =-" + value);
+                                        }else{
+                                            String value = list2.get(0).substring(1);
+                                            list2.set(0, "=" + value + " =-" + value);
+                                        }
+                                    }
+
                                     //带后缀的数据去掉留纯数据
                                     String strings1 = extractPureNumbers(list1.get(0));
                                     String strings2 = extractPureNumbers(list2.get(0));
@@ -5146,7 +5172,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 String str = split1[1] + operator + extractPureNumbers(number);
                                                 list.add(str);
                                             }
-                                            formulaData = String.join("&&",list);
+                                            if(isOr){
+                                                formulaData = String.join("||",list);
+                                            }else{
+                                                formulaData = String.join("&&",list);
+                                            }
                                         }else{
                                             String number = null;
                                             //获取比较符
@@ -5180,7 +5210,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 String str = split1[0] + operator + extractPureNumbers(number);
                                                 list.add(str);
                                             }
-                                            formulaData = String.join("&&",list);
+                                            if(isOr){
+                                                formulaData = String.join("||",list);
+                                            }else{
+                                                formulaData = String.join("&&",list);
+                                            }
                                         }else{
                                             String number = null;
                                             //获取比较符
@@ -5313,17 +5347,23 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             return null;
         }
 
-        // 检查第一个字符是否为数字
-        if (Character.isDigit(input.charAt(0))) {
+        // 处理负数情况:以 '-' 开头且后跟数字
+        if (input.startsWith("-") && input.length() > 1 && Character.isDigit(input.charAt(1))) {
+            int endIndex = 2;  // 从 '-' 后开始检查数字
+            while (endIndex < input.length() && Character.isDigit(input.charAt(endIndex))) {
+                endIndex++;
+            }
+            return input.substring(0, endIndex);  // 返回 "-" + 连续数字
+        }
+        // 处理正数情况:以数字开头
+        else if (Character.isDigit(input.charAt(0))) {
             int endIndex = 1;
-            // 遍历后续字符,直到遇到非数字或字符串结束
             while (endIndex < input.length() && Character.isDigit(input.charAt(endIndex))) {
                 endIndex++;
             }
-            // 返回开头的连续数字子串
-            return input.substring(0, endIndex);
+            return input.substring(0, endIndex);  // 返回连续数字
         }
-        // 如果开头不是数字,返回空字符串
+        // 其他情况返回 null
         return null;
     }