wangming hace 8 meses
padre
commit
ab9d833ee2

+ 7 - 3
luckysheet-db/src/main/java/com/xc/luckysheet/JfGridConfigModel.java

@@ -1,6 +1,7 @@
 package com.xc.luckysheet;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -143,11 +144,13 @@ public class JfGridConfigModel {
      * @param colSize 列数量
      * @param sheet 一个sheet
      */
-    private static List<JSONObject> toDataSplit(Integer rowSize,Integer colSize,JSONObject sheet){
+    public static List<JSONObject> toDataSplit(Integer rowSize,Integer colSize,JSONObject sheet){
         List<JSONObject> list=new ArrayList<JSONObject>();
         if(sheet!=null && sheet.containsKey("celldata")){
             //单元格数据
-            List<JSONObject> celldata=(List<JSONObject>)sheet.get("celldata");
+//            List<JSONObject> celldata = (List<JSONObject>)sheet.get("celldata");
+            JSONArray celldata = sheet.getJSONArray("celldata");
+
             //相同的索引
             Object index=sheet.get("index");
             //序号
@@ -163,7 +166,8 @@ public class JfGridConfigModel {
             List<List<JSONObject>> datas=new ArrayList<List<JSONObject>>();
 
             if(celldata!=null && celldata.size()>0){
-                for(JSONObject bson:celldata){
+                for(int m = 0, n = celldata.size(); m < n; m++){
+                    JSONObject bson = celldata.getJSONObject(m);
                     //获取到位置
                     String _pos=getRange(bson,rowSize,colSize);
                     if(_pos!=null){

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

@@ -6,6 +6,7 @@ import com.xc.common.utils.JsonUtil;
 import com.xc.luckysheet.db.server.JfGridFileGetService;
 import com.xc.luckysheet.db.server.JfGridUpdateService;
 import com.xc.luckysheet.dto.CoverageUpdateJsonDataRequest;
+import com.xc.luckysheet.dto.SaveSheetRequest;
 import com.xc.luckysheet.entity.LuckySheetGridModel;
 import com.xc.luckysheet.entity.enummodel.OperationTypeEnum;
 import com.xc.luckysheet.entity.project.ProjectSummaryParamExcelDto;
@@ -202,6 +203,20 @@ public class JfGridFileController {
         return jfGridFileGetService.getAllSheetByGridKey(listId);
     }
 
+    /**
+     * 保存sheet
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "保存sheet",notes = "保存sheet")
+    @PostMapping("/saveSheet")
+    public ResponseVO saveSheet(@RequestBody SaveSheetRequest req) {
+        jfGridUpdateService.saveSheet(req);
+        ResponseVO responseVO = ResponseVO.successInstance();
+        responseVO.setCode("200");
+        return responseVO;
+    }
+
     /**
      * 文档权限的检查
      * @param request

+ 45 - 0
luckysheet/src/main/java/com/xc/luckysheet/db/server/JfGridUpdateService.java

@@ -12,6 +12,7 @@ import com.xc.luckysheet.db.IRecordDataUpdataHandle;
 import com.xc.luckysheet.db.IRecordDelHandle;
 import com.xc.luckysheet.db.IRecordSelectHandle;
 import com.xc.luckysheet.dto.CoverageUpdateJsonDataRequest;
+import com.xc.luckysheet.dto.SaveSheetRequest;
 import com.xc.luckysheet.entity.ConfigMergeModel;
 import com.xc.luckysheet.entity.GridRecordDataModel;
 import com.xc.luckysheet.entity.LuckySheetGridModel;
@@ -32,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 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 javax.annotation.Resource;
 import java.util.*;
@@ -110,6 +112,49 @@ public class JfGridUpdateService {
                 , req.getValue().toString(SerializerFeature.WriteMapNullValue));
     }
 
+    /**
+     * 保存sheet
+     *
+     * @param req
+     */
+    @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);
+    }
+
     /**
      * 生成luckysheet excel
      *

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

@@ -0,0 +1,39 @@
+package com.xc.luckysheet.dto;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.*;
+
+import java.io.Serializable;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class SaveSheetRequest implements Serializable {
+
+    /**
+     * excel数据
+     */
+    private JSONObject sheet;
+
+    /**
+     * sheet下标
+     */
+    private String index;
+
+    /**
+     * 行数量
+     */
+    private Integer rowSize;
+
+    /**
+     * 列表数量
+     */
+    private Integer colSize;
+
+    /**
+     * 文档唯一标识
+     */
+    private String listId;
+}

+ 8 - 8
luckysheet/src/main/java/com/xc/luckysheet/websocket/MyWebSocketHandler.java

@@ -119,23 +119,23 @@ public class MyWebSocketHandler extends TextWebSocketHandler {
                     map.put("type", 3);
                     map.put("username", wsUserModel.getUserName());
                     map.put("id", "" + wsUserModel.getWs().getId());
-                    jfGridUpdateService.Operation_mv(gridKey, bson);
+//                    jfGridUpdateService.Operation_mv(gridKey, bson);
                 } else if (bson.get("t").equals("rv_end")) {
                     //当前sheet的index值
-                    String i = bson.get("i").toString();
-                    String key = gridKey + wsUserModel.getWs().getId();
-                    key = key + i;
-                    jfGridUpdateService.updateRvDbContent(gridKey, bson, key);
+//                    String i = bson.get("i").toString();
+//                    String key = gridKey + wsUserModel.getWs().getId();
+//                    key = key + i;
+//                    jfGridUpdateService.updateRvDbContent(gridKey, bson, key);
                 } else if (bson.get("t").equals("rv")) {
-                    String key = gridKey + wsUserModel.getWs().getId();
-                    jfGridUpdateService.getIndexRvForThread(key, bson);
+//                    String key = gridKey + wsUserModel.getWs().getId();
+//                    jfGridUpdateService.getIndexRvForThread(key, bson);
                 } else {
                     //其它操作
                     RedisLock redisLock = new RedisLock(redisTemplate, gridKey);
                     try {
                         if (redisLock.lock()) {
                             String _str = "";
-                            _str = jfGridUpdateService.handleUpdate(gridKey, bson);
+//                            _str = jfGridUpdateService.handleUpdate(gridKey, bson);
 
                             if (_str.length() == 0) {