Browse Source

电缆分段表导出代码上传

user5 3 years ago
parent
commit
a2970cbe7e

+ 18 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/entity/CableSectionInfo.java

@@ -13,6 +13,8 @@ public class CableSectionInfo{
     private String incomingEquipment;   //进设备(m)
     private String coefficient;     //系数
     private String electricalChief;     //电气长(m)
+    private String key;
+    private String number;
 
     public String getDestination() {
         return destination;
@@ -69,4 +71,20 @@ public class CableSectionInfo{
     public void setElectricalChief(String electricalChief) {
         this.electricalChief = electricalChief;
     }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
 }

+ 37 - 2
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/service/RaiseCapitalDesignService.java

@@ -192,6 +192,39 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 			}
 		}
 
+		//获取总长信息
+		bytes = binaryJedisCommands.get((uuid + "cableDisposeData").getBytes());
+		if(null != bytes){
+			String item = new String(bytes);
+			if(StringUtils.isNotBlank(item)) {
+				List<CableSectionInfo> cableDisposeDataList = JSON.parseArray(new String(bytes),CableSectionInfo.class);
+				if(null != cableDisposeDataList){
+					for (CableSectionInfo info : cableDisposeDataList) {
+						if(StringUtils.isNotBlank(info.getNumber()) && "0.0000".equals(info.getNumber())){
+							info.setNumber("0");
+						}
+						switch (info.getKey()){
+							case "cableFourHundred":
+								cableSectionData.setCableFourHundredListTotal(info.getNumber());
+								break;
+							case "cableThreeHundred":
+								cableSectionData.setCableThreeHundredListTotal(info.getNumber());
+								break;
+							case "cableTwoHundredForty":
+								cableSectionData.setCableTwoHundredFortyListTotal(info.getNumber());
+								break;
+							case "cableHundredAndTwenty":
+								cableSectionData.setCableHundredAndTwentyListTotal(info.getNumber());
+								break;
+							case "cableSeventy":
+								cableSectionData.setCableSeventyListTotal(info.getNumber());
+								break;
+						}
+					}
+				}
+			}
+		}
+
 
 
 		RaiseCapital newRaise = (RaiseCapital) newMap.get("raiseCapital");
@@ -207,6 +240,8 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 		XSSFSheet sheetPickingList = null;
 
 		XSSFSheet sheetVoltageList = null;
+
+		XSSFSheet sheetCableList = null;
 		try {
 			inputStream = new FileInputStream(newFile);// 将excel文件转为输入流
 			workbook = new XSSFWorkbook(inputStream);// 创建个workbook,
@@ -217,7 +252,7 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 
 			sheetVoltageList = workbook.getSheetAt(2);//架空导线计算表
 
-			sheetVoltageList = workbook.getSheetAt(3);//电缆分段表
+			sheetCableList = workbook.getSheetAt(3);//电缆分段表
 		} catch (Exception e1) {
 			e1.printStackTrace();
 		}
@@ -230,7 +265,7 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 
 			RaiseCapitalDesignExportUtil.getSheetVoltageList(sheetVoltageList,voltageData,newRaise,workbook);//架空导线计算表
 
-			RaiseCapitalDesignExportUtil.getSheetCableList(sheetVoltageList,cableSectionData,newRaise,workbook);//电缆分段表
+			RaiseCapitalDesignExportUtil.getSheetCableList(sheetCableList,cableSectionData,newRaise,workbook);//电缆分段表
             showListMapper.trunCate(projectName);
 			workbook.write(fos);
 			fos.flush();

+ 189 - 2
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/utils/RaiseCapitalDesignExportUtil.java

@@ -13,11 +13,13 @@ import com.jeeplus.modules.sg.raiseCapitalDesign.entity.CableSectionData;
 import com.jeeplus.modules.sg.raiseCapitalDesign.entity.CableSectionInfo;
 import com.jeeplus.modules.sg.raiseCapitalDesign.entity.VoltageData;
 import com.jeeplus.modules.sg.raiseCapitalDesign.entity.VoltageInfo;
+import com.jeeplus.modules.sys.utils.DictUtils;
 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 import org.apache.poi.hssf.usermodel.HSSFFont;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFFont;
 import org.apache.poi.xssf.usermodel.XSSFRow;
@@ -497,6 +499,9 @@ public class RaiseCapitalDesignExportUtil {
             //获取最大的一个list长度,作为最终的行号
             int num=a[a.length-1];
 
+            //获取电缆分段的系数
+            String cableFactor = DictUtils.getDictLabel("cableFactor", "designCalculateCoefficient", "");
+
             for (int i = 1; i <= num; i++) {
                 row = (XSSFRow) sheet.createRow((int) i + 1);
                 CableSectionInfo cableFourHundred = null;   //3×400mm²
@@ -504,34 +509,131 @@ public class RaiseCapitalDesignExportUtil {
                     cableFourHundred = cableFourHundredList.get(i-1);
                     //对数据进行处理
                     disposeCableRowData(row,0,cableFourHundred,cellStyle);
+                }else{
+                    disposeCableRowNoData(row,0,cableFactor,cellStyle);
                 }
                 CableSectionInfo cableThreeHundred = null;  //3×300mm²
                 if(cableThreeHundredList.size()>=i){
                     cableThreeHundred = cableThreeHundredList.get(i-1);
                     disposeCableRowData(row,8,cableThreeHundred,cellStyle);
+                }else{
+                    disposeCableRowNoData(row,8,cableFactor,cellStyle);
                 }
                 CableSectionInfo cableTwoHundredForty = null;   //3×240mm²
                 if(cableTwoHundredFortyList.size()>=i){
                     cableTwoHundredForty = cableTwoHundredFortyList.get(i-1);
                     disposeCableRowData(row,16,cableTwoHundredForty,cellStyle);
+                }else{
+                    disposeCableRowNoData(row,16,cableFactor,cellStyle);
                 }
                 CableSectionInfo cableHundredAndTwenty = null;  //3×120mm²
                 if(cableHundredAndTwentyList.size()>=i){
                     cableHundredAndTwenty = cableHundredAndTwentyList.get(i-1);
                     disposeCableRowData(row,24,cableHundredAndTwenty,cellStyle);
+                }else{
+                    disposeCableRowNoData(row,24,cableFactor,cellStyle);
                 }
                 CableSectionInfo cableSeventy = null;       //3×70mm²
                 if(cableSeventyList.size()>=i){
                     cableSeventy = cableSeventyList.get(i-1);
                     disposeCableRowData(row,32,cableSeventy,cellStyle);
+                }else{
+                    disposeCableRowNoData(row,32,cableFactor,cellStyle);
                 }
-
             }
+
+            //处理总数行
+            row = (XSSFRow) sheet.createRow(num + 2);
+            disposeCableRowOverallLength(row,num + 2,0,cellStyle,sheet,cableSectionData.getCableFourHundredListTotal());
+            disposeCableRowOverallLength(row,num + 2,8,cellStyle,sheet,cableSectionData.getCableThreeHundredListTotal());
+            disposeCableRowOverallLength(row,num + 2,16,cellStyle,sheet,cableSectionData.getCableTwoHundredFortyListTotal());
+            disposeCableRowOverallLength(row,num + 2,24,cellStyle,sheet,cableSectionData.getCableHundredAndTwentyListTotal());
+            disposeCableRowOverallLength(row,num + 2,32,cellStyle,sheet,cableSectionData.getCableSeventyListTotal());
         }
     }
 
     /**
-     * 架空导线表数据处理
+     *
+     * @param row   行信息
+     * @param lineNum   行数
+     * @param columnNum 起始列
+     * @param cellStyle 截至列
+     * @param sheet
+     */
+    private static void disposeCableRowOverallLength(XSSFRow row, Integer lineNum, Integer columnNum, CellStyle cellStyle, Sheet sheet,String cableTotal){
+        XSSFCell cell = row.getCell(1);
+
+        if (row.getCell(columnNum) == null) {
+            cell = row.createCell(columnNum);
+        } else {
+            cell = row.getCell(columnNum);
+        }
+        cell.setCellValue("总长(km):");
+        cell.setCellStyle(cellStyle);
+
+        //第二列
+        if (row.getCell(columnNum+1) == null) {
+            cell = row.createCell(columnNum+1);
+        } else {
+            cell = row.getCell(columnNum+1);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第三列
+        if (row.getCell(columnNum+2) == null) {
+            cell = row.createCell(columnNum+2);
+        } else {
+            cell = row.getCell(columnNum+2);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第四列
+        if (row.getCell(columnNum+3) == null) {
+            cell = row.createCell(columnNum+3);
+        } else {
+            cell = row.getCell(columnNum+3);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第五列
+        if (row.getCell(columnNum+4) == null) {
+            cell = row.createCell(columnNum+4);
+        } else {
+            cell = row.getCell(columnNum+4);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第六列
+        if (row.getCell(columnNum+5) == null) {
+            cell = row.createCell(columnNum+5);
+        } else {
+            cell = row.getCell(columnNum+5);
+        }
+        cell.setCellValue("");//系数
+        cell.setCellStyle(cellStyle);
+
+
+        if (row.getCell(columnNum+6) == null) {
+            cell = row.createCell(columnNum+6);
+        } else {
+            cell = row.getCell(columnNum+6);
+        }
+        cell.setCellValue(cableTotal);//总长度
+        cell.setCellStyle(cellStyle);
+
+        // 合并日期占两行(4个参数,分别为起始行,结束行,起始列,结束列)
+        // 行和列都是从0开始计数,且起始结束都会合并
+        // 这里是合并excel中日期的两行为一行
+        CellRangeAddress region = new CellRangeAddress(lineNum, lineNum, columnNum, columnNum + 5);
+        sheet.addMergedRegion(region);
+    }
+
+    /**
+     * 电缆分段表数据处理
      * @param row
      * @param columnNum
      * @param cableData
@@ -629,6 +731,91 @@ public class RaiseCapitalDesignExportUtil {
         }
     }
 
+    /**
+     * 电缆分段表数据处理(无数据行)
+     * @param row
+     * @param columnNum
+     * @param coefficient   系数
+     * @param cellStyle
+     */
+    private static void disposeCableRowNoData(XSSFRow row, Integer columnNum, String coefficient, CellStyle cellStyle){
+
+        XSSFCell cell = row.getCell(1);
+        //第一列
+        if (row.getCell(columnNum) == null) {
+            cell = row.createCell(columnNum);
+        } else {
+            cell = row.getCell(columnNum);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第二列
+        if (row.getCell(columnNum+1) == null) {
+            cell = row.createCell(columnNum+1);
+        } else {
+            cell = row.getCell(columnNum+1);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第三列
+        if (row.getCell(columnNum+2) == null) {
+            cell = row.createCell(columnNum+2);
+        } else {
+            cell = row.getCell(columnNum+2);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第四列
+        if (row.getCell(columnNum+3) == null) {
+            cell = row.createCell(columnNum+3);
+        } else {
+            cell = row.getCell(columnNum+3);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第五列
+        if (row.getCell(columnNum+4) == null) {
+            cell = row.createCell(columnNum+4);
+        } else {
+            cell = row.getCell(columnNum+4);
+        }
+        cell.setCellValue("");//空行
+        cell.setCellStyle(cellStyle);
+
+        //第六列
+        if (row.getCell(columnNum+5) == null) {
+            cell = row.createCell(columnNum+5);
+        } else {
+            cell = row.getCell(columnNum+5);
+        }
+        cell.setCellValue(coefficient);//系数
+        cell.setCellStyle(cellStyle);
+
+        //第七列
+        if (row.getCell(columnNum+6) == null) {
+            cell = row.createCell(columnNum+6);
+        } else {
+            cell = row.getCell(columnNum+6);
+        }
+        cell.setCellValue("0");//电气长(m)
+        cell.setCellStyle(cellStyle);
+
+        if(null != columnNum && 32 != columnNum){
+            //第8列
+            if (row.getCell(columnNum+7) == null) {
+                cell = row.createCell(columnNum+7);
+            } else {
+                cell = row.getCell(columnNum+7);
+            }
+            cell.setCellValue("");//空行
+            cell.setCellStyle(cellStyle);
+        }
+    }
+
 
     //设置 字体边框
     public static CellStyle getCellStyleFont(Workbook workbook) {

BIN
src/main/resources/freemarker/excelmodel/raiseCapitalDesign.xlsx