yangyj 2 gadi atpakaļ
vecāks
revīzija
0812b26f03

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

@@ -19,7 +19,7 @@ public class FormulaOptionVo {
     private String value;
     private Long pkeyId;
     private Integer scope;
-    private String name;
+    private String code;
     public boolean saveChecked(){
         if( Func.isNotBlank(value)&&contractId!=null&&parentId!=null&&pkeyId!=null&&key!=null&&scope!=null){
             if(scope==0){

+ 23 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -2797,5 +2797,28 @@ public class CustomFunction {
 	}
 
 
+	public static void main(String[] args) {
+		String sql="\n" +
+				"StatementCallback; SQL [INSERT INTO m_20220826103001_1562990720141230080 ( id,key_18,key_15,key_11,key_3,key_9,key_12,key_14,key_7,key_13,key_16,key_10,p_key_id,key_2,key_1,key_6,key_19,key_21,key_20) VALUES (1636246638970273792,'C8.3桥梁总体检验记录表\n" +
+				"D8.1表-桥梁总体质量检验单" +
+				"G10平面位置检测记录表." +
+				"G11三角高程测量记录表" +
+				"G8 水准测量记录表_^_13_0','第一合同段_^_3_3','200_^_4_3','桥梁总体_^_7_1','桥面宽,桥长_^_8_1','符合设计及规范要求_^_18_0','个体经营_^_3_1','符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求符合设计及规范要求_^_15_0','桥梁工程_^_5_1','1231231234231_^_21_0','监理单位名称_^_4_1','1624967221149171750','','','','','','')]; Data truncation: Data too long for column 'key_7' at row 1; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'key_7' at row 1";
+	   Matcher m = RegexUtils.matcher("(m_\\d{14}_\\d{19})\\((.+)\\)VALUES\\(([^)]+)\\).+column'(key_\\d{0,2})'",sql.replaceAll("[\\n\\s]*",""));
+	   if(m.find()){
+		   System.out.println(m.group(1));
+		   System.out.println(m.group(2));
+		   System.out.println(m.group(3));
+		   System.out.println(m.group(4));
+		   String[] keys=m.group(2).split(",");
+		   String[] values=m.group(3).split("'?,'?");
+		   LinkedHashMap<String,String> map = new LinkedHashMap<>();
+		   for(int i=0;i<keys.length;i++){
+			   map.put(keys[i],values[i]);
+		   }
+		   System.out.println(map.get("key_7"));
+	   }
+	}
+
 
 }

+ 1 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1582,14 +1582,11 @@ public class ExcelTabController extends BladeController {
             e.printStackTrace();
         }
 
-        try{
             R info = this.excelTabService.saveOrUpdateInfo(tableInfoList);
             if (!info.isSuccess()) {
                 return info;
             }
-        }catch (Exception e){
-            throw new ServiceException(e.getMessage());
-        }
+
         //单个 pdf加载
         for (TableInfo tableInfo : tableInfoList) {
             excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -362,12 +362,11 @@ public class FormulaController {
                   /*临时处理,等确定数据结构在优化*/
                    if(formula.getFormula().contains(".option")){
                        return R.data(createRadioPanel(0,"是否引用公式数据",data));
-                   }else if (StringUtils.isEquals("MILE",formula.getNumber())){
+                   }else if (StringUtils.isEquals("MILE",formula.getNumber())||StringUtils.isEquals("TURN_POINT",formula.getNumber())){
                       if(StringUtils.isEquals(key,formula.getRelyList().get(0).split(StringPool.COLON)[1])){
                           return R.data(createRadioPanel(1,"竖直方向",data));
                       }
                   }
-              }else{
                   R.success("暂无公式控件");
               }
              return R.data(result);
@@ -378,6 +377,7 @@ public class FormulaController {
         jo.put("scope",1);
         JSONObject info =jo.getJSONObject("info");
         info.put("label","竖直方向");
+        info.put("code","TF");
         if(Func.isNotEmpty(data)){
             info.put("data",data);
         }
@@ -394,7 +394,7 @@ public class FormulaController {
     @GetMapping("/log")
     public R<Object> log(Long pkeyId){
         Map<String,Object> result = new HashMap<>();
-        result.put("版本信息","202303101210");
+        result.put("版本信息","202303161800");
         if(Func.isNotEmpty(pkeyId)){
             result.put("执行情况",this.jdbcTemplate.queryForList("select * from m_formula_log where id="+pkeyId));
         }

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

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.ListUtils;
+import com.mixsmart.utils.RegexUtils;
 import com.spire.xls.*;
 import com.spire.xls.CellRange;
 import com.spire.xls.Workbook;
@@ -93,6 +94,7 @@ import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.*;
 import java.util.function.Function;
+import java.util.regex.Matcher;
 import java.util.stream.Collectors;
 
 /**
@@ -718,6 +720,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (ListUtils.isNotEmpty(tableInfoList)) {
             //施工资料填报
             String pkids = "";
+            StringBuilder log =new StringBuilder("异常:");
             try {
                 for (TableInfo tableInfo : tableInfoList) {
                     WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
@@ -768,6 +771,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         transactionManager1.commit(transactionStatus);
                     } catch (Exception e) {
                         transactionManager1.rollback(transactionStatus);
+                        log.append(e.getMessage()).append("@@");
                         e.printStackTrace();
                     }
                 }
@@ -794,10 +798,29 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 e.printStackTrace();
                 return R.fail("操作失败");
             }
+            if(log.length()>5){
+                return R.fail(reason(log.toString()));
+            }
         }
         return R.success("操作成功");
     }
 
+    public String reason(String log){
+        /*字段过短提示*/
+        StringBuilder sb = new StringBuilder();
+        String[] part= log.split("@@");
+        for(String p:part){
+            Matcher m = RegexUtils.matcher("(m_\\d{14}_\\d{19})\\((.+)\\)VALUES\\(([^)]+)\\).+column'(key_\\d{0,2})'",p.replaceAll("[\\n\\s]*",""));
+            if(m.find()){
+                List<Map<String,Object>> result=this.jdbcTemplate.queryForList("select CONCAT(a.tab_ch_name,'&',b.e_name) tf from m_table_info a join m_wbs_form_element b on b.f_id=a.id where a.tab_en_name='"+m.group(1)+"' and  b.e_key='"+m.group(4)+"'");
+                if(result.size()>0){
+                   sb.append("【").append(result.get(0).values().stream().map(String::valueOf).collect(Collectors.joining(","))).append("】");
+                }
+            }
+        }
+        return sb.append("数据库字段太短,请联系管理员").toString();
+    }
+
     // 获取用户
     @Override
     public Map<String, String> getTablbCols(String pkeyid, String colkey) throws FileNotFoundException {

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

@@ -63,7 +63,7 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
             }
             JSONObject table = (JSONObject) root.computeIfAbsent(wbc.getInitTableName(),(k)->new JSONObject());
             JSONObject data = (JSONObject) table.computeIfAbsent(fo.createKey(),(k)->new JSONObject());
-            data.put(fo.getName(),fo.getValue());
+            data.put(fo.getCode(),fo.getValue());
             formulaOption.setVal(root.toJSONString());
             this.saveOrUpdate(formulaOption);
             return data;