소스 검색

Merge remote-tracking branch 'origin/dev' into dev

cr 1 주 전
부모
커밋
d32d3290cc
14개의 변경된 파일229개의 추가작업 그리고 27개의 파일을 삭제
  1. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/StandardInfo.java
  2. 12 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/TaskSplitController.java
  3. 3 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/ITaskSplitService.java
  4. 38 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/TaskSplitServiceImpl.java
  5. 54 4
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml
  6. 33 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java
  7. 3 1
      blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/EqualNode.java
  8. 6 1
      blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/GtNode.java
  9. 6 1
      blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtEqNode.java
  10. 6 1
      blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtNode.java
  11. 3 1
      blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/NotEqualNode.java
  12. 1 0
      blade-service/blade-manager/src/main/java/com/jfireel/expression/parse/impl/NumberParser.java
  13. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  14. 57 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/StandardInfo.java

@@ -104,4 +104,10 @@ public class StandardInfo {
      */
     @TableField(exist = false)
     private String parentName;
+
+    /**
+     * 父级名称
+     */
+    @TableField(exist = false)
+    private String nameEnd;
 }

+ 12 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/TaskSplitController.java

@@ -34,6 +34,8 @@ import org.springblade.archive.entity.TaskSplit;
 import org.springblade.archive.service.ITaskSplitService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.Map;
+
 /**
  * 解析主标任务 控制器
  *
@@ -92,6 +94,16 @@ public class TaskSplitController extends BladeController {
 		return taskSplitService.saveTaskSplit(taskSplit);
 	}
 
+	/**
+	 * 查询 解析主标任务
+	 */
+	@PostMapping("/getSaveInfo")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "查询 解析主标任务", notes = "传入taskSplit")
+	public R<Map<String, Object>> getSaveInfo(@Valid @RequestBody TaskSplit taskSplit) {
+		return taskSplitService.getSaveInfo(taskSplit);
+	}
+
 /*
 	*/
 /**

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/ITaskSplitService.java

@@ -22,6 +22,8 @@ import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.tool.api.R;
 
+import java.util.Map;
+
 /**
  * 解析主标任务 服务类
  *
@@ -41,4 +43,5 @@ public interface ITaskSplitService extends BaseService<TaskSplit> {
 
 	R saveTaskSplit(TaskSplit taskSplit);
 
+	R<Map<String, Object>> getSaveInfo(TaskSplit taskSplit);
 }

+ 38 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/TaskSplitServiceImpl.java

@@ -28,6 +28,7 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -111,4 +112,41 @@ public class TaskSplitServiceImpl extends BaseServiceImpl<TaskSplitMapper, TaskS
 		return R.data(200,data,"操作成功");
 	}
 
+    @Override
+    public R<Map<String, Object>> getSaveInfo(TaskSplit taskSplit) {
+        Random random = new Random();
+        // 数据校验区
+        Map<String, Object> data = new HashMap<>();
+        String contractId = taskSplit.getContractId();
+        String splitIds = taskSplit.getIds();
+        if (StringUtils.isEmpty(contractId)) {
+            return R.fail("合同段Id为空");
+        }
+        // 代表整个合同解析
+        if (StringUtils.isEmpty(splitIds) || Func.isEmpty(splitIds)) {
+            // 查询整个合同段下的所有文件
+            Integer spliteTaskCount = baseMapper.getSpliteTaskCount(contractId);
+            if (spliteTaskCount >= 1) {
+                return R.fail("该合同已经添加任务,无需重复操作");
+            }
+            // 生成10到20之间的随机数
+            int randomNumber = random.nextInt(30) + 150;
+            int i = (int) Math.ceil(randomNumber * spliteTaskCount / 60.0);
+
+            Integer archiveCount = baseMapper.getArchiveCount(contractId);
+            data.put("fileCount", archiveCount);
+            data.put("taskTime", i);
+
+        } else {
+            // 指定文件解析
+            List<String> split = Func.toStrList(splitIds);
+            // 生成10到20之间的随机数
+            int randomNumber = random.nextInt(30) + 150;
+            int i = (int) Math.ceil(randomNumber * split.size() / 60.0);
+            data.put("fileCount", split.size());
+            data.put("taskTime", i);
+        }
+
+        return R.data(200, data, "操作成功");
+    }
 }

+ 54 - 4
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml

@@ -71,7 +71,29 @@
     </select>
     <select id="findByParentId" resultType="org.springblade.business.entity.StandardInfo">
         select
-            <include refid="Base_Column_List"/>,concat(symbol,name) symbolName
+            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 = '~'
+                then
+                    name
+                else
+                    concat(symbol,name)
+            end symbolName
         FROM
             u_standard_info
         WHERE
@@ -110,7 +132,17 @@
 
     <select id="getConditionSet" resultMap="BaseResultConditionSet">
         select
-            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName,b.group_id
+            <include refid="Base_Column_Join_List"/>,
+            case
+                when
+                    a.symbol = '~'
+                then
+                    a.name
+                else
+                    concat(a.symbol,a.name)
+            end symbolName,
+
+            b.group_id
         from
             u_standard_info a
             INNER join u_standard_info p on a.parent_id = p.id and a.is_deleted = p.is_deleted
@@ -211,7 +243,16 @@
     </sql>
     <select id="getElementJoin" resultMap="BaseResultElementJoin">
         select
-            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName,b.group_id
+            <include refid="Base_Column_Join_List"/>,
+            case
+                when
+                    a.symbol = '~'
+                then
+                    a.name
+                else
+                    concat(a.symbol,a.name)
+            end symbolName,
+            b.group_id
         from
             u_standard_info a
             INNER JOIN u_standard_info c on a.parent_id = c.id and a.is_deleted = c.is_deleted
@@ -285,7 +326,16 @@
 
     <select id="effectPreview" resultMap="BaseResultElementJoin">
         SELECT
-            a.*, concat(a.symbol,a.name) symbolName,null group_id
+            a.*,
+            case
+                when
+                    a.symbol = '~'
+                then
+                    a.name
+                else
+                concat(a.symbol,a.name)
+            end symbolName,
+            null group_id
         FROM
             u_standard_info a
                 INNER JOIN u_standard_info_join b ON a.id = b.standard_info_left_id

+ 33 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang.math.NumberUtils;
 import org.springblade.business.dto.StandardInfoJoinDTO;
 import org.springblade.business.dto.StandardInfoPrivateJoinDTO;
 import org.springblade.business.dto.StandardInfoDTO;
@@ -81,6 +82,20 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
                 item.setParentId(uStandardInfo.getId());
                 item.setStandardId(uStandardInfo.getStandardId());
                 item.setCreateUser(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());
+                    }
+                }
             });
 
             //把父级对象转出来单独保存
@@ -92,7 +107,7 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
             return true;
         } catch (BeansException e) {
             e.printStackTrace();
-            throw new ServiceException("添加失败");
+            throw new ServiceException(e.getMessage());
         }
     }
 
@@ -116,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);
@@ -125,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());
         }
     }
 
@@ -206,7 +235,7 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
                 Collections.sort(newRightIds);
 
                 String newRightIdsStr = String.join(",", newRightIds.stream().map(String::valueOf).collect(Collectors.toList()));
-                if(CollectionUtil.isNotEmpty(newRightIds)){
+                if (CollectionUtil.isNotEmpty(newRightIds)) {
                     //把左Id加进来 确保只有在左id相同的情况下才进行判断
                     newRightIdsStr = newRightIdsStr + "," + leftId;
                 }
@@ -356,7 +385,7 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
     @Override
     public List<StandardInfoPrivateJoinVO> effectPreview(String ids) {
         List<Long> collect = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
-        return baseMapper.effectPreview(collect,collect.size());
+        return baseMapper.effectPreview(collect, collect.size());
     }
 }
 

+ 3 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/EqualNode.java

@@ -31,12 +31,14 @@ public class EqualNode extends OperatorResultNode {
                 Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
 
                 //如果是数字类型 第一个是float  第二个是整数所以不能使用equals
-                if(leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number){
+                if (leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number) {
                     return EqUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
                 }
 
                 boolean equals = StringUtils.isEquals(leftAndRight[0], leftAndRight[1]);
                 return leftAndRight == null ? null : equals;
+            } else if (leftValue instanceof Boolean || rightValue instanceof Boolean) {
+                return leftValue instanceof Boolean ? leftValue : rightValue;
             } else {
                 return leftValue.equals(rightValue);
             }

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/GtNode.java

@@ -21,7 +21,12 @@ public class GtNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : GtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
     }
 

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtEqNode.java

@@ -21,7 +21,12 @@ public class LtEqNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : !((Boolean) GtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]));
     }
 

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtNode.java

@@ -22,7 +22,12 @@ public class LtNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : LtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
     }
 

+ 3 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/NotEqualNode.java

@@ -31,12 +31,14 @@ public class NotEqualNode extends OperatorResultNode {
                 Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
 
                 //如果是数字类型 第一个是float  第二个是整数所以不能使用equals
-                if(leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number){
+                if (leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number) {
                     return !EqUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
                 }
 
                 boolean equals = !StringUtils.isEquals(leftAndRight[0], leftAndRight[1]);
                 return leftAndRight == null ? null : equals;
+            } else if (leftValue instanceof Boolean || rightValue instanceof Boolean) {
+                return leftValue instanceof Boolean ? leftValue : rightValue;
             } else {
                 return leftValue.equals(rightValue) == false;
             }

+ 1 - 0
blade-service/blade-manager/src/main/java/com/jfireel/expression/parse/impl/NumberParser.java

@@ -7,6 +7,7 @@ import com.jfireel.expression.parse.Invoker;
 import com.jfireel.expression.token.Operator;
 import com.jfireel.expression.token.Symbol;
 import com.jfireel.expression.token.Token;
+import com.jfireel.expression.token.TokenType;
 import com.jfireel.expression.util.CharType;
 
 import java.util.Deque;

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

@@ -5257,7 +5257,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);

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

@@ -5112,6 +5112,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));
@@ -5149,10 +5175,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 }
 
                                                 operator = strReplace(operator);
-                                                String str = split1[1] + operator + extractPureNumbers(number);
+                                                number = extractPureNumbers(number);
+                                                String str = split1[1] + operator + (number != null && number.startsWith("-") ? "(" + number + ")" : number);
                                                 list.add(str);
                                             }
-                                            formulaData = String.join("&&",list);
+                                            if(isOr){
+                                                formulaData = String.join("||",list);
+                                            }else{
+                                                formulaData = String.join("&&",list);
+                                            }
                                         }else{
                                             String number = null;
                                             //获取比较符
@@ -5164,8 +5195,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 number = s3.substring(1);
                                             }
                                             operator = strReplace(operator);
-
-                                            formulaData = split1[1] + operator + extractPureNumbers(number);
+                                            number = extractPureNumbers(number);
+                                            formulaData = split1[1] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                         }
                                     }else if (pattern.matcher(s3).matches() && !pattern.matcher(s4).matches()){
                                         list1.set(0,s3);
@@ -5183,10 +5214,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                     number = string.substring(1);
                                                 }
                                                 operator = strReplace(operator);
-                                                String str = split1[0] + operator + extractPureNumbers(number);
+                                                number = extractPureNumbers(number);
+                                                String str = split1[0] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                                 list.add(str);
                                             }
-                                            formulaData = String.join("&&",list);
+                                            if(isOr){
+                                                formulaData = String.join("||",list);
+                                            }else{
+                                                formulaData = String.join("&&",list);
+                                            }
                                         }else{
                                             String number = null;
                                             //获取比较符
@@ -5198,7 +5234,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 number = s4.substring(1);
                                             }
                                             operator = strReplace(operator);
-                                            formulaData = split1[0] + operator + extractPureNumbers(number);
+                                            //新值
+                                            number = extractPureNumbers(number);
+                                            formulaData = split1[0] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                         }
                                     } else{
                                         f = f.replace(el, "数据错误,无法比较");
@@ -5319,17 +5357,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;
     }