wangming 8 miesięcy temu
rodzic
commit
a9a5553a47

+ 2 - 1
common/src/main/java/com/xc/common/exception/InterfaceRequestErrorAndPerformanceLog.java

@@ -78,7 +78,7 @@ public class InterfaceRequestErrorAndPerformanceLog {
             }
         } catch (Exception ex) {
             //TODO:出现空指针可能是get入参有问题
-            log.error(ex.getMessage());
+            log.error("操作异常", ex);
         }
         ResponseVO apiResponse;
         if (e.getClass().isAssignableFrom(ServiceException.class)) {
@@ -95,6 +95,7 @@ public class InterfaceRequestErrorAndPerformanceLog {
             log.error("异常{方法:" + pjp.getSignature() + ", 参数:" + pjp.getArgs() + ",异常:" + e.getMessage() + "}", e);
             apiResponse = ResponseVO.errorInstance(e.getMessage());
         }
+        log.error("异常信息:", e);
         return apiResponse;
     }
 

+ 53 - 46
luckysheet-db/src/main/java/com/xc/luckysheet/JfGridConfigModel.java

@@ -158,36 +158,36 @@ public class JfGridConfigModel {
             if(sheet.containsKey("list_id")){
                 list_id=sheet.get("list_id");
             }
-            //Object order=sheet.get("order");//相同的位置
-
-            //k 行号+列号 v 位置_datas下标
-            Map<String,Integer> pos=new HashMap<String, Integer>();
-            //分组的数据
-            List<List<JSONObject>> datas=new ArrayList<List<JSONObject>>();
-
-            if(celldata!=null && celldata.size()>0){
-                for(int m = 0, n = celldata.size(); m < n; m++){
-                    JSONObject bson = celldata.getJSONObject(m);
-                    //获取到位置
-                    String _pos=getRange(bson,rowSize,colSize);
-                    if(_pos!=null){
-                        //获取到数据集合
-                        List<JSONObject> _data=null;
-                        if(pos.containsKey(_pos)){
-                            //获取对应集合
-                            _data=datas.get(pos.get(_pos));
-                        }else{
-                            _data=new ArrayList<JSONObject>();
-                            //保存位置信息
-                            pos.put(_pos,datas.size());
-                            //添加集合
-                            datas.add(_data);
-                        }
-                        //添加新数据
-                        _data.add(bson);
-                    }
-                }
-            }
+//            //Object order=sheet.get("order");//相同的位置
+//
+//            //k 行号+列号 v 位置_datas下标
+//            Map<String,Integer> pos=new HashMap<String, Integer>();
+//            //分组的数据
+//            List<List<JSONObject>> datas=new ArrayList<List<JSONObject>>();
+//
+//            if(celldata!=null && celldata.size()>0){
+//                for(int m = 0, n = celldata.size(); m < n; m++){
+//                    JSONObject bson = celldata.getJSONObject(m);
+//                    //获取到位置
+//                    String _pos=getRange(bson,rowSize,colSize);
+//                    if(_pos!=null){
+//                        //获取到数据集合
+//                        List<JSONObject> _data=null;
+//                        if(pos.containsKey(_pos)){
+//                            //获取对应集合
+//                            _data=datas.get(pos.get(_pos));
+//                        }else{
+//                            _data=new ArrayList<JSONObject>();
+//                            //保存位置信息
+//                            pos.put(_pos,datas.size());
+//                            //添加集合
+//                            datas.add(_data);
+//                        }
+//                        //添加新数据
+//                        _data.add(bson);
+//                    }
+//                }
+//            }
 
             //替换原始的数据
             //if(pos.containsKey(FirstBlockID)){
@@ -199,22 +199,29 @@ public class JfGridConfigModel {
             sheet.put("celldata",new ArrayList());
             list.add(sheet);
 
-            for(String _pos:pos.keySet()){
-                //if(_pos.equals(FirstBlockID)){
-                //    continue;
-                //}
-                //获取对应集合
-                List<JSONObject> _data=datas.get(pos.get(_pos));
-                JSONObject _sheet=new JSONObject();
-                _sheet.put("block_id",_pos);
-                _sheet.put("celldata",_data);
-                _sheet.put("index",index);
-                if(list_id!=null){
-                    _sheet.put("list_id",list_id);
-                }
-                list.add(_sheet);
-                //_sheet.put("order",order);
-            }
+//            for(String _pos:pos.keySet()){
+//                //if(_pos.equals(FirstBlockID)){
+//                //    continue;
+//                //}
+//                //获取对应集合
+//                List<JSONObject> _data=datas.get(pos.get(_pos));
+//                JSONObject _sheet=new JSONObject();
+//                _sheet.put("block_id",_pos);
+//                _sheet.put("celldata",_data);
+//                _sheet.put("index",index);
+//                if(list_id!=null){
+//                    _sheet.put("list_id",list_id);
+//                }
+//                list.add(_sheet);
+//                //_sheet.put("order",order);
+//            }
+
+            JSONObject _sheet=new JSONObject();
+            _sheet.put("block_id", "0_0");
+            _sheet.put("celldata", celldata);
+            _sheet.put("index",index);
+            _sheet.put("list_id",list_id);
+            list.add(_sheet);
 
         }else{
             list.add(sheet);

+ 9 - 0
luckysheet-db/src/main/java/com/xc/luckysheet/db/IRecordSelectHandle.java

@@ -110,6 +110,15 @@ public interface IRecordSelectHandle {
      */
      JSONObject getChartByGridKey(String listId, String index);
 
+    /**
+     * 获取所有id列表
+     *
+     * @param listId
+     * @param index
+     * @return
+     */
+     List<String> getIdList(String listId, String index);
+
 
 
 }

+ 5 - 0
luckysheet-mongo/src/main/java/com/xc/luckysheet/mongo/impl/RecordSelectHandle.java

@@ -373,4 +373,9 @@ public class RecordSelectHandle extends BaseHandle implements IRecordSelectHandl
             return null;
         }
     }
+
+    @Override
+    public List<String> getIdList(String listId, String index) {
+        return null;
+    }
 }

+ 5 - 0
luckysheet-mysql/src/main/java/com/xc/luckysheet/mysql/impl/RecordSelectHandle.java

@@ -371,6 +371,11 @@ public class RecordSelectHandle extends BaseHandle implements IRecordSelectHandl
         }
     }
 
+    @Override
+    public List<String> getIdList(String listId, String index) {
+        return null;
+    }
+
     private JSONObject getDBObjectFromMap(Map<String, Object> map){
         JSONObject db=new JSONObject();
 

+ 1 - 2
luckysheet-postgre/src/main/java/com/xc/luckysheet/postgres/impl/RecordDataInsertHandle.java

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.postgresql.util.PGobject;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.sql.SQLException;
@@ -82,9 +83,7 @@ public class RecordDataInsertHandle extends BaseHandle implements IRecordDataIns
             batch.add(params);
         }
         try{
-            log.info("InsertIntoBatch sql{}",sql);
             int[] i=jdbcTemplate_postgresql.batchUpdate(sql,batch);
-            log.info("InsertIntoBatch count {}",i);
             return "";
         }catch (Exception ex){
             log.error("添加异常", ex);

+ 28 - 1
luckysheet-postgre/src/main/java/com/xc/luckysheet/postgres/impl/RecordSelectHandle.java

@@ -50,7 +50,7 @@ public class RecordSelectHandle extends BaseHandle implements IRecordSelectHandl
     @Override
     public String getFirstBlockIndexByGridKey(String listId) {
         //默认获取第一块
-        String sql="select p.index from "+JfGridConfigModel.TABLENAME+" p where p.list_id=? and p.block_id=? and p.status=1 and p.is_delete=0 ";
+        String sql="select p.index from "+JfGridConfigModel.TABLENAME+" p where p.list_id=? and p.block_id=? and p.status=1 and p.is_delete=0 limit 1";
         try{
             return  jdbcTemplate_postgresql.queryForObject(sql, new Object[]{listId,JfGridConfigModel.FirstBlockID},String.class);
         }catch (Exception e){
@@ -388,6 +388,33 @@ public class RecordSelectHandle extends BaseHandle implements IRecordSelectHandl
     }
 
 
+    /**
+     * 获取所有id
+     *
+     * @param listId
+     * @param index
+     * @return
+     */
+    @Override
+    public List<String> getIdList(String listId, String index) {
+
+        try{
+            String sql="select id from "+JfGridConfigModel.TABLENAME+" p where  p.list_id=? and p.index =? and p.is_delete=0";
+            List<Map<String, Object>> list=jdbcTemplate_postgresql.queryForList(sql, new Object[]{listId,index});
+            List<String> result=new ArrayList<>(4);
+            for (Map<String, Object> map : list) {
+                if(map.get("id") == null) {
+                    continue;
+                }
+                result.add(String.valueOf(map.get("id")));
+            }
+            return result;
+        }catch (Exception e){
+            log.error("查询异常", e);
+            return null;
+        }
+    }
+
 
     private JSONObject getDBObjectFromMap(Map<String, Object> map){
         JSONObject db=new JSONObject();

+ 5 - 0
luckysheet/pom.xml

@@ -156,6 +156,11 @@
             <version>2.1.1</version>
         </dependency>
 
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.16</version>
+        </dependency>
 
     </dependencies>
 

+ 1 - 1
luckysheet/src/main/java/com/xc/luckysheet/controller/JfGridFileController.java

@@ -72,7 +72,7 @@ public class JfGridFileController {
                     return null;
                 }
                 List<JSONObject> dbObject=null;
-                dbObject=jfGridFileGetService.getDefaultByGridKey(gridKey);
+                dbObject=jfGridFileGetService.getSheetByGridKey(gridKey);
                 if(dbObject!=null){
                     delErrorKey(dbObject);
                     resultStr=JsonUtil.toJson(dbObject);

+ 29 - 0
luckysheet/src/main/java/com/xc/luckysheet/db/server/JfGridFileGetService.java

@@ -1,5 +1,8 @@
 package com.xc.luckysheet.db.server;
 
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.xc.luckysheet.JfGridConfigModel;
@@ -12,9 +15,12 @@ import com.xc.luckysheet.util.JfGridFileUtil;
 import com.xc.luckysheet.utils.GzipHandle;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -53,6 +59,29 @@ public class JfGridFileGetService {
     @Autowired
     private GridFileRedisCacheService redisService;
 
+    @Value("${file.writeRootPath}")
+    private String writeRootPath;
+
+
+    /**
+     * 获取表格数据 按gridKey获取,默认载入status为1
+     * @param listId
+     * @return
+     */
+    public List<JSONObject> getSheetByGridKey(String listId){
+        String fileName = listId.concat(".json");
+
+        String filePath = writeRootPath.concat(File.separator).concat(fileName);
+
+        if(FileUtil.exist(filePath)) {
+            String jsonString = FileUtil.readUtf8String(filePath);
+            List<JSONObject> sheetList = new ArrayList<>();
+            sheetList.add(JSON.parseObject(jsonString));
+            return sheetList;
+        }
+
+        return getDefaultByGridKey(listId);
+    }
 
     /**
      * 1.3.3	获取表格数据 按gridKey获取,默认载入status为1

+ 53 - 33
luckysheet/src/main/java/com/xc/luckysheet/db/server/JfGridUpdateService.java

@@ -1,6 +1,7 @@
 package com.xc.luckysheet.db.server;
 
 
+import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -34,8 +35,10 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.FileCopyUtils;
 
 import javax.annotation.Resource;
+import java.io.File;
 import java.util.*;
 
 /**
@@ -57,6 +60,9 @@ public class JfGridUpdateService {
     @Resource(name = "postgresRecordSelectHandle")
     private IRecordSelectHandle recordSelectHandle;
 
+    @Value("${file.writeRootPath}")
+    private String writeRootPath;
+
 //    @Resource(name = "mysqlRecordDataInsertHandle")
 //    private IRecordDataInsertHandle recordDataInsertHandle;
 //
@@ -119,40 +125,54 @@ public class JfGridUpdateService {
      */
     @Transactional(value = "postgresTxManager",rollbackFor = Exception.class)
     public void saveSheet(SaveSheetRequest req) {
-
         //删除历史
-        List<String> mongodbKeys = new ArrayList<String>();//mongodb的key,用于删除
-        recordSelectHandle.getBlockMergeByGridKey(req.getListId(), req.getIndex(), mongodbKeys);
-        recordDelHandle.delDocuments(mongodbKeys);
-
-        List<JSONObject> blocks = JfGridConfigModel.toDataSplit(req.getRowSize(), req.getColSize(), req.getSheet());
-        List<GridRecordDataModel> list = new ArrayList<>(blocks.size());
-        for(JSONObject block : blocks) {
-            GridRecordDataModel model = new GridRecordDataModel();
-
-            model.setBlock_id(block.getString("block_id").trim());
-            model.setRow_col(null);
-            model.setIndex(block.getString("index").trim());
-            model.setList_id(req.getListId());
-            model.setIs_delete(0);
-
-            if(block.containsKey("status") && block.get("status")!=null){
-                model.setStatus(block.getInteger("status"));
-            }else{
-                model.setStatus(0);
-            }
-
-            if(block.containsKey("order") && block.get("order")!=null){
-                model.setOrder(block.getInteger("order"));
-            }else{
-                model.setOrder(null);
-            }
-            model.setJson_data(block);
-
-            list.add(model);
-        }
-
-        recordDataInsertHandle.InsertIntoBatch(list);
+//        List<String> mongodbKeys = new ArrayList<String>();//mongodb的key,用于删除
+//        recordSelectHandle.getBlockMergeByGridKey(req.getListId(), req.getIndex(), mongodbKeys);
+//        if(mongodbKeys.size() > 0) {
+//            recordDelHandle.delDocuments(mongodbKeys);
+//        }
+//        List<String> listIdList = new ArrayList<>();
+//        listIdList.add(req.getListId());
+//        recordDelHandle.delete(listIdList);
+
+        //保存至文件
+        String fileName = req.getListId().concat(".json");
+        FileUtil.writeUtf8String(req.getSheet().toString(SerializerFeature.WriteMapNullValue),
+                writeRootPath.concat(File.separator).concat(fileName));
+
+
+//        final List<String> idList = recordSelectHandle.getIdList(req.getListId(), req.getIndex());
+//
+//        List<JSONObject> blocks = JfGridConfigModel.toDataSplit(req.getRowSize(), req.getColSize(), req.getSheet());
+//        List<GridRecordDataModel> list = new ArrayList<>(blocks.size());
+//        for(JSONObject block : blocks) {
+//            GridRecordDataModel model = new GridRecordDataModel();
+//
+//            model.setBlock_id(block.getString("block_id").trim());
+//            model.setRow_col(null);
+//            model.setIndex(block.getString("index").trim());
+//            model.setList_id(req.getListId());
+//            model.setIs_delete(0);
+//
+//            if(block.containsKey("status") && block.get("status")!=null){
+//                model.setStatus(block.getInteger("status"));
+//            }else{
+//                model.setStatus(0);
+//            }
+//
+//            if(block.containsKey("order") && block.get("order")!=null){
+//                model.setOrder(block.getInteger("order"));
+//            }else{
+//                model.setOrder(null);
+//            }
+//            model.setJson_data(block);
+//
+//            list.add(model);
+//        }
+//        recordDataInsertHandle.InsertIntoBatch(list);
+//
+//        //删除历史
+//        recordDelHandle.delDocuments(idList);
     }
 
     /**

+ 5 - 0
luckysheet/src/main/java/com/xc/luckysheet/dto/SaveSheetRequest.java

@@ -36,4 +36,9 @@ public class SaveSheetRequest implements Serializable {
      * 文档唯一标识
      */
     private String listId;
+
+    /**
+     * 整改批次id
+     */
+    private String batchId;
 }

+ 1 - 1
luckysheet/src/main/resources/application-uat.yml

@@ -28,7 +28,7 @@ db:
       # 初始化大小,最小,最大
       initial-size: 8
       min-idle: 1
-      max-active: 20
+      max-active: 50
       # 配置获取连接等待超时的时间
       max-wait: 60000
       # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

+ 2 - 0
luckysheet/src/main/resources/application.yml

@@ -21,5 +21,7 @@ col_size: 100
 #使用服务器类型
 servertype: tomcat
 
+#写文件根路径
+file.writeRootPath: D:/rectifyFile