浏览代码

luckysheet更改

wangming 1 年之前
父节点
当前提交
e9c435180d

+ 9 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxProjectManageService.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.rongwei.bsentity.domain.ZhcxProjectManageDo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.dto.project.ExportProjectSummaryDto;
@@ -9,6 +10,7 @@ import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -61,4 +63,11 @@ public interface ZhcxProjectManageService extends IService<ZhcxProjectManageDo>
      * @param dto
      */
     void exportRectifyReportDataInSummary(ExportProjectSummaryDto dto, HttpServletResponse response);
+
+    /**
+     * 获取车间列表
+     *
+     * @return
+     */
+    List<JSONObject> getWorkshop();
 }

+ 45 - 58
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/LuckysheetServiceImpl.java

@@ -16,11 +16,13 @@ import com.rongwei.bsentity.dto.luckysheet.CoverageUpdateJsonDataRequest;
 import com.rongwei.bsentity.dto.project.ProjectSummaryParamExcelDto;
 import com.rongwei.bsentity.dto.project.UpdateDataVerificationRequest;
 import com.rongwei.rwcommon.base.exception.CustomException;
-import org.apache.commons.lang3.StringUtils;
+import com.rongwei.rwcommon.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -96,93 +98,78 @@ public class LuckysheetServiceImpl extends ServiceImpl<LuckysheetDao, Luckysheet
      * @return
      */
     private JSONObject assembleDataVerification(ZhcxProjectManageDo project) {
-        ProjectSummaryParamExcelDto paramExcelDto = projectManageService.assembleProjectSummaryParam(project);
-
         //获取第一页数据最大行数
         List<JSONObject> sheetList = luckySheetService.getExcelJson(project.getSummaryfiles());
         if(ObjectUtil.isEmpty(sheetList)) {
             throw new CustomException("整改数据不存在");
         }
+
         JSONArray celldatas = sheetList.get(0).getJSONArray("celldata");
         int maxRowIdx = 3;
+        Map<Integer, Integer> dataVerifyMap = new HashMap<>();
         for(int m = 0,  n = celldatas.size(); m < n; m++) {
             JSONObject cellData = celldatas.getJSONObject(m);
 
             if(cellData.getIntValue("r") > maxRowIdx) {
                 maxRowIdx = cellData.getIntValue("r");
             }
+
+            //找出所有第三行中标题所在列下标
+            //状态、施工部门、责任部门、总状态
+            if(cellData.getIntValue("r") != 2) {
+                continue;
+            }
+
+            String v = LuckySheet4SummaryHelp.getCellValue4V(cellData.getJSONObject("v"), String.class);
+            if("状态".equals(v) || "总状态".equals(v)) {
+                dataVerifyMap.put(cellData.getInteger("c"), 1);
+            } else if("施工部门".equals(v) || "责任部门".equals(v)) {
+                dataVerifyMap.put(cellData.getInteger("c"), 0);
+            }
         }
 
-        return getDataVerification(paramExcelDto, maxRowIdx);
+        return getDataVerification(dataVerifyMap, maxRowIdx);
     }
 
     /**
      * 数据校验
      *
-     * @param paramExcelDto
+     * @param dataVerifyMap
      * @param maxRowIdx
      * @return
      */
-    private JSONObject getDataVerification(ProjectSummaryParamExcelDto paramExcelDto, int maxRowIdx) {
+    private JSONObject getDataVerification(Map<Integer, Integer> dataVerifyMap, int maxRowIdx) {
         JSONObject result = new JSONObject();
 
+        //数据校验值
         //部门
-        List<String> departList = paramExcelDto.getWorkshopList().stream()
+        List<JSONObject> workshopList = projectManageService.getWorkshop();
+        List<String> departList = workshopList.stream()
                 .map(item -> item.getString("SHORTNAME"))
                 .collect(Collectors.toList());
-        String departChose = StringUtils.join(departList, ",");
-
-        for(int m = 0,  n = paramExcelDto.getDeviceNumberList().size() - 1; m <= n; m++) {
-            int colPos = LuckySheet4SummaryHelp.MAIN_TITLE_FIRST.length + m * LuckySheet4SummaryHelp.MACHINE_TITLE_COLS.length;
-//            int departColPos = 4 + 4 * m;
-            for(int startRows = 3; startRows < maxRowIdx; startRows++) {
-
-                //状态
-                /**
-                 * "3_4": {
-                 * 			"type": "dropdown",
-                 * 			"remote": false,
-                 * 			"value1": "OK,X,√",
-                 * 			"value2": "",
-                 * 			"checked": false,
-                 * 			"hintShow": false,
-                 * 			"hintText": "",
-                 * 			"prohibitInput": false
-                 * }
-                 */
-                JSONObject statusObj = LuckySheet4SummaryHelp.getNewDataVerification("OK,X,√");
-                result.put(String.valueOf(startRows).concat("_").concat(String.valueOf(colPos)), statusObj);
-
-                //部门
-                /**
-                 * "3_4": {
-                 * 			"type": "dropdown",
-                 * 			"remote": false,
-                 * 			"value1": "OK,X,√",
-                 * 			"value2": "",
-                 * 			"checked": false,
-                 * 			"hintShow": false,
-                 * 			"hintText": "",
-                 * 			"prohibitInput": false
-                 * }
-                 */
-                //施工部门
-                JSONObject departObj = LuckySheet4SummaryHelp.getNewDataVerification(departChose);
-                result.put(String.valueOf(startRows).concat("_").concat(String.valueOf(colPos + 1)), departObj);
-
-                //责任部门
-                JSONObject depart2Obj = LuckySheet4SummaryHelp.getNewDataVerification(departChose);
-                result.put(String.valueOf(startRows).concat("_").concat(String.valueOf(colPos + 3)), depart2Obj);
+        //状态
+        List<String> verifyStatus = LuckySheet4SummaryHelp.DATA_VERIFY_STATUS;
+        String[] vals = new String[] {StringUtils.join(departList, ","), StringUtils.join(verifyStatus, ",")};
+
+        /* 给每行指定列加上数据校验
+         * "3_4": {
+         * 			"type": "dropdown",
+         * 			"remote": false,
+         * 			"value1": "OK,X,√",
+         * 			"value2": "",
+         * 			"checked": false,
+         * 			"hintShow": false,
+         * 			"hintText": "",
+         * 			"prohibitInput": false
+         * }
+         */
+        //行
+        for(int startRows = 3; startRows <= maxRowIdx; startRows++) {
+            for(Integer colIdx : dataVerifyMap.keySet()) {
+                JSONObject statusObj = LuckySheet4SummaryHelp.getNewDataVerification(vals[dataVerifyMap.get(colIdx)]);
+                result.put(String.valueOf(startRows).concat("_").concat(String.valueOf(colIdx)), statusObj);
             }
         }
-
-        //总状态
-        int statusColIndex = LuckySheet4SummaryHelp.MAIN_TITLE_FIRST.length + paramExcelDto.getDeviceNumberList().size() * LuckySheet4SummaryHelp.MACHINE_TITLE_COLS.length;
-        for(int startRows = 3; startRows < maxRowIdx; startRows++) {
-            JSONObject statusObj = LuckySheet4SummaryHelp.getNewDataVerification("OK,X,√");
-            result.put(String.valueOf(startRows).concat("_").concat(String.valueOf(statusColIndex)), statusObj);
-        }
-
         return result;
     }
 }

+ 18 - 21
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectManageServiceImpl.java

@@ -435,13 +435,30 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
         }
     }
 
+    /**
+     * 获取车间列表
+     *
+     * @return
+     */
+    @Override
+    public List<JSONObject> getWorkshop() {
+        //正常组织结构
+        List<JSONObject> workshopList = luckysheetDao.getWorkshop();
+
+        //额外数据字典中配置
+        List<JSONObject> workshopDictList = luckysheetDao.getWorkshopDict();
+
+        workshopList.addAll(workshopDictList);
+
+        return workshopList;
+    }
+
     /**
      * 导出整改报表
      *
      * @param workbook
      * @param worksheet
      * @param map
-     * @param response
      * @return
      */
     private int exportRectifyReportDataBySheet(Workbook workbook, Worksheet worksheet, Map<String, Object> map) {
@@ -589,8 +606,6 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
      * 设置动态列
      * @param cells
      * @param noList
-     * @param colIndex
-     * @param colorIndex
      */
     private void setTrendsHeader(Cells cells, List<String> noList) {
         int colIndex = 2;
@@ -1208,24 +1223,6 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
         return prjTitle;
     }
 
-    /**
-     * 获取车间列表
-     *
-     * @return
-     */
-    private List<JSONObject> getWorkshop() {
-
-        //正常组织结构
-        List<JSONObject> workshopList = luckysheetDao.getWorkshop();
-
-        //额外数据字典中配置
-        List<JSONObject> workshopDictList = luckysheetDao.getWorkshopDict();
-
-        workshopList.addAll(workshopDictList);
-
-        return workshopList;
-    }
-
     /**
      * 组装文件
      *

+ 54 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/utils/LuckySheet4SummaryHelp.java

@@ -3,9 +3,13 @@ package com.rongwei.bscommon.sys.utils;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
+
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 
 public class LuckySheet4SummaryHelp {
 
@@ -21,6 +25,56 @@ public class LuckySheet4SummaryHelp {
      */
     public static final String[] MAIN_TITLE_SECOND = {"总状态","提出日期","整改期限","提出者","备注1","备注2"};
 
+    /**
+     * 状态
+     */
+    public static final List<String> DATA_VERIFY_STATUS = Arrays.asList(new String[] {"OK", "X", "/"});
+
+    /**
+     * 获取单元格值
+     *
+     * @param vObject
+     * @return
+     */
+    public static <T> T getCellValue4V(JSONObject vObject, Class<T> clazz) {
+        /* 处理以下数据结构
+             {
+                "celldata": [{
+                    "c": 0,
+                    "r": 8,
+                    "v": {
+                        "ct": {
+                            "s": [{
+                                "v": "sdsdgdf\r\ndfgdfg\r\ndsfgdfgdf\r\ndsfgdfg"
+                            }],
+                            "t": "inlineStr",
+                            "fa": "General"
+                        }
+                    }
+                }]
+            }
+             */
+
+        if(!vObject.containsKey("v") && vObject.containsKey("ct")){
+            JSONObject ct=vObject.getJSONObject("ct");
+            if(ct.containsKey("s")){
+
+                JSONArray s = ct.getJSONArray("s");
+
+                if(ObjectUtil.isNotNull(s)) {
+                    JSONObject s0 = s.getJSONObject(0);
+                    s0.getString("v");
+                    if(s0 != null) {
+                        vObject.put("v", s0.get("v"));
+                    }
+                }
+
+            }
+        }
+
+        return vObject.getObject("v", clazz);
+    }
+
     /**
      * 字符串转日期格式  无法转换日期给null
      *

+ 20 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/luckysheet/DataVerificationParamBo.java

@@ -0,0 +1,20 @@
+package com.rongwei.bsentity.dto.luckysheet;
+
+import lombok.*;
+
+import java.util.List;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class DataVerificationParamBo {
+
+
+    /**
+     * 部门
+     */
+    private List<String> departList;
+
+}

+ 1 - 1
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxProjectManageController.java

@@ -88,7 +88,7 @@ public class ZhcxProjectManageController {
      * @return
      */
     @PostMapping("/updateDataVerification")
-    @ApiOperation("保存汇总文件数据")
+    @ApiOperation("更新excel下拉框")
     public R updateDataVerification(@RequestBody UpdateDataVerificationRequest req) {
         luckysheetService.updateDataVerification(req);
         return R.ok();