From cddcf22a61489ee9c2dfee169d817ccd66f95430 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期五, 03 九月 2021 02:23:43 +0800
Subject: [PATCH] 优化代码

---
 service-front/src/main/java/com/java110/front/smo/assetExport/impl/ExportFeeManualCollectionSMOImpl.java |  130 ++++++++++++++++++++++++++++++++----------
 1 files changed, 98 insertions(+), 32 deletions(-)

diff --git a/service-front/src/main/java/com/java110/front/smo/assetExport/impl/ExportFeeManualCollectionSMOImpl.java b/service-front/src/main/java/com/java110/front/smo/assetExport/impl/ExportFeeManualCollectionSMOImpl.java
old mode 100644
new mode 100755
index f746a21..5735f16
--- a/service-front/src/main/java/com/java110/front/smo/assetExport/impl/ExportFeeManualCollectionSMOImpl.java
+++ b/service-front/src/main/java/com/java110/front/smo/assetExport/impl/ExportFeeManualCollectionSMOImpl.java
@@ -10,10 +10,12 @@
 import com.java110.front.smo.assetExport.IExportFeeManualCollectionSMO;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.Base64Convert;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.Money2ChineseUtil;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -139,10 +141,12 @@
      * @param workbook
      */
     private void getRoomOweFees(IPageData pd, ComponentValidateResult result, Workbook workbook) {
-
+        Sheet sheet = workbook.createSheet("鍌即鍗�");
+        Drawing patriarch = sheet.createDrawingPatriarch();
         String apiUrl = "";
         ResponseEntity<String> responseEntity = null;
-        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeApi/listAllRoomOweFees?communityId=" + result.getCommunityId();
+        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
+        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeApi/listAllRoomOweFees" + mapToUrlParam(reqJson);
         responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
 
         if (responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
@@ -163,24 +167,49 @@
             return;
         }
 
-        Sheet sheet = workbook.createSheet("鍌即鍗�");
+        //鏌ヨ鍌即鍗曚簩缁寸爜
+        JSONObject feePrint = null;
+        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feePrintSpec/queryFeePrintSpec?page=1&row=1&specCd=1010&communityId=" + result.getCommunityId();
+        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
+        if (responseEntity.getStatusCode() == HttpStatus.OK) {
+            JSONObject feePrintResults = JSONObject.parseObject(responseEntity.getBody(), Feature.OrderedField);
+            if (feePrintResults.containsKey("data")) {
+                JSONArray feePrints = feePrintResults.getJSONArray("data");
+                if (feePrints != null && feePrints.size() > 0) {
+                    feePrint = feePrints.getJSONObject(0);
+                }
+            }
+
+        }
+
+
         int line = 0;
         double totalPageHeight = 0;
         for (int roomIndex = 0; roomIndex < rooms.size(); roomIndex++) {
-            Map info = generatorRoomOweFee(sheet, workbook, rooms.getJSONObject(roomIndex), line, totalPageHeight);
+            Map<String, Object> info = generatorRoomOweFee(sheet, workbook, rooms.getJSONObject(roomIndex), line, totalPageHeight, patriarch, feePrint);
             line = Integer.parseInt(info.get("line").toString()) + 1;
             totalPageHeight = Double.parseDouble(info.get("totalPageHeight").toString());
         }
     }
 
-    private Map<String, Object> generatorRoomOweFee(Sheet sheet, Workbook workbook, JSONObject room, int line, double totalPageHeight) {
+    private Map<String, Object> generatorRoomOweFee(Sheet sheet, Workbook workbook, JSONObject room, int line, double totalPageHeight, Drawing patriarch, JSONObject feePrint) {
         JSONArray fees = room.getJSONArray("fees");
+        String[] feePrintRemarks = null;
+        if (feePrint != null) {
+            feePrintRemarks = feePrint.getString("content").toLowerCase().replace("</br>", "").split("\n");
+        } else {
+            feePrintRemarks = new String[]{""};
+        }
         int defaultRowHeight = 280;
         //璁$畻褰撳墠鍗曞瓙鐨勯珮搴�
         int titleHeight = defaultRowHeight * 3;
-        int subTitleHeight = defaultRowHeight * 3;
-        int totalHeight = titleHeight + subTitleHeight + defaultRowHeight * 5 + fees.size() * defaultRowHeight;
-        double A4_lengthways_pageSize = defaultRowHeight * 57;//15120
+        int subTitleHeight = defaultRowHeight * 5;
+        int totalHeight = titleHeight + subTitleHeight + defaultRowHeight * 3 + fees.size() * defaultRowHeight;
+        //澶囨敞锛屽姞涓婃墦鍗伴厤缃唴瀹�
+        if (feePrintRemarks != null && feePrintRemarks.length > 0) {
+            totalHeight += (feePrintRemarks.length * defaultRowHeight);
+        }
+        double A4_lengthways_pageSize = defaultRowHeight * 57;//15960
 
         //褰撳墠椤� 宸茬粡鍗犵敤鐨勯珮搴�
         double curPageHeight = totalPageHeight % A4_lengthways_pageSize;
@@ -188,7 +217,7 @@
         double freePageHeight = A4_lengthways_pageSize - curPageHeight;
         if (freePageHeight < totalHeight && curPageHeight != 0) {
             line += Math.ceil(freePageHeight / defaultRowHeight);
-            totalPageHeight += Math.ceil(freePageHeight / defaultRowHeight);
+            totalPageHeight += freePageHeight;
         }
 
         totalPageHeight += totalHeight;
@@ -214,11 +243,16 @@
         // 鏍囬
         Row row = sheet.createRow(0 + line);
         Cell cell0 = row.createCell(0);
-        cell0.setCellValue("缂磋垂閫氱煡鍗晅otalHeight:"+totalHeight+"-totalPageHeight:"+totalPageHeight+"-curPageHeight:"+curPageHeight+"-freePageHeight:"+freePageHeight+"-line:"+line);
+        //cell0.setCellValue("缂磋垂閫氱煡鍗晅otalHeight:" + totalHeight + "-totalPageHeight:" + totalPageHeight + "-curPageHeight:" + curPageHeight + "-freePageHeight:" + freePageHeight + "-line:" + line);
+        if (feePrint != null) {
+            cell0.setCellValue(feePrint.getString("printName") + "缂磋垂閫氱煡鍗�");
+        } else {
+            cell0.setCellValue("缂磋垂閫氱煡鍗�");
+        }
         //鏍囬璁剧疆瀛椾綋
         Font font = workbook.createFont();
         font.setFontName("榛戜綋");
-        font.setFontHeightInPoints((short) 12);
+        font.setFontHeightInPoints((short) 26);
         CellStyle titleCellStyle = workbook.createCellStyle();
         titleCellStyle.setFont(font);
         titleCellStyle.setAlignment(HorizontalAlignment.CENTER);
@@ -230,37 +264,63 @@
         sheet.addMergedRegion(region);
 
 
-        //绗竴琛�
+        //瀛愭爣棰�
+        if (feePrint != null) {
+            XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) 0, 1 + line, (short) 1, 1 + line + 1);
+            anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);//璁剧疆鍥剧墖闅忓崟鍏冪Щ鍔ㄨ皟鏁村ぇ灏�
+            try {
+                String qrImg = feePrint.getString("qrImg").replace("data:image/webp;base64,", "")
+                        .replace("data:image/png;base64,", "")
+                        .replace("data:image/jpeg;base64,", "");
+                patriarch.createPicture(anchor, workbook.addPicture(Base64Convert.base64ToByte(qrImg), XSSFWorkbook.PICTURE_TYPE_JPEG));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        CellStyle subTitleCellStyle = workbook.createCellStyle();
+        subTitleCellStyle.setAlignment(HorizontalAlignment.CENTER);
+        subTitleCellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);
         row = sheet.createRow(1 + line);
-        row.createCell(0).setCellValue("鏀惰垂浜岀淮鐮�");
-        row.createCell(1).setCellValue("鎴垮彿锛�" + room.getString("floorNum")
+        Cell cell1 = row.createCell(1);
+        if (fees != null && fees.size() > 0) {
+            cell1.setCellValue("涓氫富锛�" + fees.getJSONObject(0).getString("ownerName"));
+        } else {
+            cell1.setCellValue("涓氫富锛氭棤");
+        }
+        cell1.setCellStyle(subTitleCellStyle);
+
+        Cell cell2 = row.createCell(2);
+        cell2.setCellValue("鎴垮彿锛�" + room.getString("floorNum")
                 + "-" + room.getString("unitNum")
                 + "-" + room.getString("roomNum"));
+        cell2.setCellStyle(subTitleCellStyle);
 
-        row.createCell(2).setCellValue("");
         row.createCell(3).setCellValue("");
         row.createCell(4).setCellValue("");
-        row.createCell(5).setCellValue(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B));
-        row.setHeight((short) (subTitleHeight));
+        Cell cell5 = row.createCell(5);
+        cell5.setCellValue(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B));
+        cell5.setCellStyle(subTitleCellStyle);
         CellStyle rowCellStyle = workbook.createCellStyle();
         rowCellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);
         row.setRowStyle(rowCellStyle);
 
         //璁剧疆琛ㄥご涔嬩笂
-        region = new CellRangeAddress(1 + line, 1 + line, 1, 2);
+        region = new CellRangeAddress(1 + line, 1 + line, 2, 3);
         sheet.addMergedRegion(region);
-        row.setHeight((short) (titleHeight));
-
+        region = new CellRangeAddress(1 + line, 1 + line, 5, 6);
+        sheet.addMergedRegion(region);
+        //瀛愭爣棰橀珮搴�
+        row.setHeight((short) (subTitleHeight));
 
 
         row = sheet.createRow(2 + line);
         cell0 = row.createCell(0);
         cell0.setCellValue("鏀惰垂鍚嶇О");
         cell0.setCellStyle(cellStyle);
-        Cell cell1 = row.createCell(1);
+        cell1 = row.createCell(1);
         cell1.setCellValue("鏀惰垂鏍囧噯");
         cell1.setCellStyle(cellStyle);
-        Cell cell2 = row.createCell(2);
+        cell2 = row.createCell(2);
         cell2.setCellValue("鏁伴噺/闈㈢Н");
         cell2.setCellStyle(cellStyle);
         Cell cell3 = row.createCell(3);
@@ -269,7 +329,7 @@
         Cell cell4 = row.createCell(4);
         cell4.setCellValue("搴旂即閲戦锛堝厓锛�");
         cell4.setCellStyle(cellStyle);
-        Cell cell5 = row.createCell(5);
+        cell5 = row.createCell(5);
         cell5.setCellValue("杩濈害閲戯紙鍏冿級");
         cell5.setCellStyle(cellStyle);
         Cell cell6 = row.createCell(6);
@@ -297,7 +357,11 @@
             cell2.setCellValue(room.getString("builtUpArea"));
             cell2.setCellStyle(cellStyle);
             cell3 = row.createCell(3);
-            cell3.setCellValue(startTime + "鑷�" + endTime);
+            if (feeObj.containsKey("curDegrees")) {
+                cell3.setCellValue(startTime + "鑷�" + endTime + " " + feeObj.getString("preDegrees") + "鑷�" + feeObj.getString("curDegrees"));
+            } else {
+                cell3.setCellValue(startTime + "鑷�" + endTime);
+            }
             cell3.setCellStyle(cellStyle);
             cell4 = row.createCell(4);
             cell4.setCellValue(feeObj.getString("feePrice"));
@@ -342,16 +406,18 @@
         region = new CellRangeAddress(line + fees.size() + 3, line + fees.size() + 3, 1, 3);
         sheet.addMergedRegion(region);
 
-
-        row = sheet.createRow(line + fees.size() + 4);
-        row.createCell(0).setCellValue("1銆佽鏀跺埌閫氱煡鍗�5鏃ュ唴鍒扮墿涓氬鎴栧井淇℃敮浠�");
+        if (feePrintRemarks != null && feePrintRemarks.length > 0) {
+            for (int remarkIndex = 0; remarkIndex < feePrintRemarks.length; remarkIndex++) {
+                row = sheet.createRow(line + fees.size() + 4 + remarkIndex);
+                row.createCell(0).setCellValue(feePrintRemarks[remarkIndex]);
+                row.setHeight((short) (defaultRowHeight));
+            }
+        }
+        row = sheet.createRow(line + fees.size() + 4 + feePrintRemarks.length);
+        row.createCell(0).setCellValue("");
         row.setHeight((short) (defaultRowHeight));
-        row = sheet.createRow(line + fees.size() + 5);
-        row.createCell(0).setCellValue("2銆侀�炬湡鏈即锛屽皢鎸夎瀹氭敹鍙栬繚绾﹂噾锛屼細缁欐偍鐓ф垚涓嶅繀瑕佺殑鎹熷け");
-        row.setHeight((short) (defaultRowHeight));
-
         Map info = new HashMap();
-        info.put("line", line + fees.size() + 6);
+        info.put("line", line + fees.size() + 4 + feePrintRemarks.length);
         info.put("totalPageHeight", totalPageHeight);
         return info;
     }

--
Gitblit v1.8.0