From 074caee550216dfd4bb676677ae33cbd837c5710 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期三, 27 八月 2025 18:17:21 +0800
Subject: [PATCH] 暂存0827
---
service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java | 227 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 190 insertions(+), 37 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java
index 25d35fe..a5fc15e 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java
@@ -9,6 +9,7 @@
import com.java110.dto.dict.DictDto;
import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
+import com.java110.dto.report.ReportExcelDto;
import com.java110.dto.report.ReportQueryRecord;
import com.java110.dto.room.RoomDto;
import com.java110.intf.community.ICommunityInnerServiceSMO;
@@ -19,14 +20,17 @@
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
import com.java110.vo.FeeQueryParams;
import com.java110.vo.ResultVo;
+import com.sun.org.apache.regexp.internal.RE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.math.BigDecimal;
import java.text.ParseException;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -79,7 +83,12 @@
reportQueryRecord.setOperator("鐧藉崟娴佹按鐗╀笟琛�");
List<ReportQueryRecord> reportQueryRecords = reportFeeInnerServiceSMOImpl.queryReport(BeanConvertUtil.beanCovertMap(reportQueryRecord));
- if(reportQueryRecords.size()>0 && !reqJson.containsKey("reload")){
+ if (reqJson.containsKey("roomId")){
+ ReportExcelDto reportExcelDto = new ReportExcelDto();
+// reportExcelDto.setRoomDto(roomInnerServiceSMOImpl.queryRooms());
+ }
+
+ else if(reportQueryRecords.size()>0 && !reqJson.containsKey("reload")){
ResultVo resultVo = new ResultVo(JSONObject.parse(reportQueryRecords.get(reportQueryRecords.size()-1).getReportContent()));
ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
@@ -97,64 +106,208 @@
roomDto.setCommunityId(reqJson.getString("communityId"));
roomDto.setRow(row);
roomDto.setPage(page);
+ int count = roomInnerServiceSMOImpl.queryRoomsCount(roomDto);
List<Map> rooms = roomInnerServiceSMOImpl.queryRoomsAsReport(roomDto);
FeeConfigDto feeConfigDto = new FeeConfigDto();
feeConfigDto.setCommunityId(reqJson.getString("communityId"));
- feeConfigDto.setConfigIds(new String[]{"630000001","630000002"});
+ feeConfigDto.setFeeTypeCds(new String[]{"630000001","630000002"});
+ feeConfigDto.setRow(2);
+ feeConfigDto.setPage(1);
List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
- int arrLength = 11 + (2 * feeConfigDtos.size()) + 8 + ((endYear - startYear + 1) * 3);
- String[] header = new String[arrLength];
- headerDoing(header,feeConfigDtos,startYear,endYear);
- for(Map room : rooms){
+ int arrLength = 11 + (2 * feeConfigDtos.size()) + 8 + ((endYear - startYear + 1) * 3 + 10) - 9;
+ ReportExcelDto[] header = new ReportExcelDto[arrLength];
+ List<List<ReportExcelDto>> lists = headerDoing(feeConfigDtos, startYear, endYear, arrLength);
+ test[0] = header;
+ for (int i = 1; i <= rooms.size(); i++) {
+ Map map = rooms.get(i - 1);
+ String[] strings = new String[arrLength];
+ strings[0] = String.valueOf(row * (page - 1) + i);
+ strings[1] = String.valueOf(rooms.get(i - 1).get("property_type"));
+ strings[2] = rooms.get(i - 1).get("floor_num").toString();
+ strings[3] = rooms.get(i - 1).get("unit_num").toString();
+ strings[4] = rooms.get(i - 1).get("room_num").toString();
+ strings[5] = strings[3] + "-" + strings[4];
+ strings[6] = rooms.get(i - 1).get("property_address").toString();
+ strings[7] = rooms.get(i - 1).get("room_area").toString();
+ strings[8] = rooms.get(i - 1).get("name").toString();
+ for (int j = 1; j <= feeConfigDtos.size(); j++) {
+ strings[8 + j] = feeConfigDtos.get(j - 1).getSquarePrice();
+ }
+ strings[8 + feeConfigDtos.size() + 1] = "";
+ for (int j = 1; j <= feeConfigDtos.size(); j++) {
+ strings[8 + feeConfigDtos.size() + 1 + j] = (doublequ2(Double.parseDouble(feeConfigDtos.get(j - 1).getSquarePrice()) * Double.parseDouble(String.valueOf((BigDecimal) rooms.get(i - 1).get("room_area")))))+"";
+ }
+ strings[8 + (2 * feeConfigDtos.size()) + 2] = (doublequ2(Double.parseDouble(feeConfigDtos.get(feeConfigDtos.size() - 1).getSquarePrice()) * Double.parseDouble(String.valueOf((BigDecimal) rooms.get(i - 1).get("room_area")))))+"";
+ HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
+ objectObjectHashMap.put("payObjId", map.get("room_id"));
+ List<Map> fee = reportFeeInnerServiceSMOImpl.onceRoomFee(objectObjectHashMap);
+ double allMoney = 0;
+ double allPayMoney = 0;
+ int monthCount = 0;
+ int noPayMoney = 0;
+ int year1 = 0;
+ int year2 = 0;
+ double discountMoney = 0;
+ String noPayDate = "";
+ currentYear = DateUtil.getYear();
+ for (Map map1 : fee){
+ if(map1.containsKey("缁熻缁村害") && !(map1.get("缁熻缁村害").toString().contains("鎬昏"))){
+ allMoney += ((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue();
+ allPayMoney += ((BigDecimal) map1.get("瀹炴敹閲戦")).doubleValue();
+ monthCount += ((BigDecimal)map1.get("鏈敹鏈堟暟")).intValue();
+ noPayMoney += ((BigDecimal)map1.get("鏈敹閲戦")).intValue();
+ noPayDate = noPayDate + map1.get("鏈敹鍖洪棿");
+ discountMoney += ((BigDecimal)map1.get("鎶樻墸閲戦")).doubleValue();
+ if(map1.get("缁熻缁村害").equals("2026")){
+ year1 += ((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue();
+ }
+ if(map1.get("缁熻缁村害").equals("2027")){
+ year2 += ((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue();
+ }
+ }
+
+ }
+ for (int x = endYear ; x >= startYear ; x --){
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 1] = "0";
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 2] = "";
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 3] = "";
+ for (Map map1 : fee){
+ if(map1.get("缁熻缁村害").equals((endYear - x + startYear)+"骞�")) {
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 1] = Integer.parseInt(strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 1]) + ((BigDecimal) map1.get("宸叉敹鏈堟暟")).intValue() + "";
+ if(map1.containsKey("宸叉敹鍖洪棿")){
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 2] = strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 2] + " " + map1.get("宸叉敹鍖洪棿");
+ }
+ if(map1.containsKey("鏈敹鍖洪棿")){
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 3] = strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - x)) + 3] + " " + map1.get("鏈敹鍖洪棿");
+ }
+ }
+ }
+ }
+ strings[8 + (2 * feeConfigDtos.size()) + 3] = allMoney+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 4] = allPayMoney+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 5] = "";
+ strings[8 + (2 * feeConfigDtos.size()) + 6] = year1+"";//2026
+ strings[8 + (2 * feeConfigDtos.size()) + 7] = year2+"";//2027
+ strings[8 + (2 * feeConfigDtos.size()) + 8] = monthCount+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 9] = noPayMoney+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 10] = "";//22
+ strings[8 + (2 * feeConfigDtos.size()) + 11] = "";//23鍘嗗勾寰呮敹
+ strings[8 + (2 * feeConfigDtos.size()) + 10 + (3 * (endYear - startYear)) + 3 + 1] = discountMoney+"";
+ test[i - 1] = strings;
}
reportQueryRecord.setCommunityId(reqJson.getString("communityId"));
reportQueryRecord.setQueryStatus("0");
reportQueryRecord.setEndYear(currentYear+"");
-// reportQueryRecord.setReportContent(JSONObject.toJSONString());
+ ReportExcelDto reportExcelDto = new ReportExcelDto();
+ reportExcelDto.setHeader(lists);
+ reportExcelDto.setData(test);
+ reportQueryRecord.setReportContent(JSONObject.toJSONString(reportExcelDto));
reportQueryRecord.setOperator("鐧藉崟娴佹按鐗╀笟琛�");
-
// int i = reportFeeInnerServiceSMOImpl.saveReport(BeanConvertUtil.beanCovertMap(reportQueryRecord));
- String[][] strings = new String[10][57];
- ResultVo resultVo = new ResultVo(strings);
-
+ ResultVo resultVo = new ResultVo(reportExcelDto);
+ resultVo.setTotal(count);
+ resultVo.setRecords(count / row);
ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
context.setResponseEntity(responseEntity);
}
}
- private void headerDoing(String[] header,List<FeeConfigDto> feeConfigDtos,int startYear, int endYear) {
+ private List<List<ReportExcelDto>> headerDoing(List<FeeConfigDto> feeConfigDtos, int startYear, int endYear, int arrLength) {
+ LinkedList<List<ReportExcelDto>> reportExcelDtos = new LinkedList<>();
int feeRow = feeConfigDtos.size();
- header[0] = "搴忓彿";
- header[1] = "鐗╀笟绫诲瀷";
- header[2] = "妤兼爧鍙�/寮�";
- header[3] = "闂ㄥ彿";
- header[4] = "瀹ゅ彿";
- header[5] = "闂ㄥ鍙�";
- header[6] = "浜ц瘉鍦板潃";
- header[7] = "鏀惰垂闈㈢Н锛坢虏锛�";
- header[8] = "璐埧浜哄鍚�";
- header[9] = "闂ㄥ鍙�";
- for (int i=0;i<feeRow;i++){
- header[9 + i + 1] = feeConfigDtos.get(0).getFeeName();
+ LinkedList<ReportExcelDto> header = new LinkedList<>();
+
+// 1. 鍥哄畾琛ㄥご椤癸細涓ユ牸鎸夊師浠g爜col鍊艰缃�
+ header.add(createHeaderRow("搴忓彿", 1, 3)); // 鍘焤ow.setCol(1)
+ header.add(createHeaderRow("鐗╀笟绫诲瀷", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢ㄥ墠涓�涓�1
+ header.add(createHeaderRow("妤兼爧鍙�/寮�", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("闂ㄥ彿", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("瀹ゅ彿", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("闂ㄥ鍙�", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("浜ц瘉鍦板潃", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("鏀惰垂闈㈢Н锛坢虏锛�", 1, 3));// 鍘熸湭鏀筩ol锛屾部鐢�1
+ header.add(createHeaderRow("璐埧浜哄鍚�", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+
+// 2. 绗竴涓猣eeRow寰幆锛氬師鏈樉寮忔敼col锛屾部鐢ㄥ墠涓�涓�1锛堟寜鍘熼�昏緫淇濇寔col=1锛�
+ for (int i = 0; i < feeRow; i++) {
+ header.add(createHeaderRow(feeConfigDtos.get(0).getFeeName(), 1, 3));
}
- header[9 + feeRow + 1] = "骞村簲鏀舵";
- header[9 + feeRow + 2] = "鍚堣(2020骞�1鏈�-鑷充粖)-搴旀敹";
- header[9 + feeRow + 3] = "鍚堣(2020骞�1鏈�-鑷充粖)-瀹炴敹";
- header[9 + feeRow + 4] = "鍚堣(2020骞�1鏈�-鑷充粖)-浠f敹";
- header[9 + feeRow + 5] = "鍚堣(2020骞�1鏈�-鑷充粖)-2026骞�";
- header[9 + feeRow + 6] = "鍚堣(2020骞�1鏈�-鑷充粖)-2027骞�";
- header[9 + feeRow + 7] = "鍚堣(2020骞�1鏈�-鑷充粖)-寰呮敹鏈堟暟";
- header[9 + feeRow + 8] = "鍚堣(2020骞�1鏈�-鑷充粖)-寰呮敹閲戦";
- header[9 + feeRow + 9] = "浠f敹鍖洪棿";
+
+// 3. 璁惧杩愪綔璐癸細鍘熸湭鏀筩ol锛屾部鐢ㄥ墠涓�涓�1
+ header.add(createHeaderRow("璁惧杩愪綔璐�", 1, 3));
+
+// 4. 绗簩涓猣eeRow寰幆锛氬師鏈樉寮忔敼col锛屾部鐢ㄥ墠涓�涓�1锛堟寜鍘熼�昏緫淇濇寔col=1锛�
+ for (int i = 0; i < feeRow; i++) {
+ header.add(createHeaderRow(feeConfigDtos.get(0).getFeeName(), 1, 3));
+ }
+
+// 5. 骞村簲鏀舵锛氬師鏄惧紡setCol(1)锛屼繚鎸乧ol=1
+ header.add(createHeaderRow("骞村簲鏀舵", 1, 3));
+
+// 6. 鍚堣(2020骞�1鏈�-鑷充粖)锛氬師鏄惧紡setCol(8)锛屼繚鎸乧ol=8锛涘師setRow(1)锛屼繚鎸乺ow=1
+ header.add(createHeaderRow("鍚堣(2020骞�1鏈�-鑷充粖)", 8, 1));
+
+// 7. 鍘嗗勾瀹炴敹锛氬師鏄惧紡setCol((endYear - startYear + 1) * 3)锛屼繚鎸佽璁$畻閫昏緫
+ int yearCol = (endYear - startYear + 1) * 3;
+ header.add(createHeaderRow("鍘嗗勾瀹炴敹", yearCol+1, 1));
+ header.add(createHeaderRow("鎿嶄綔", 1, 3)); // 鍘熸湭鏀筩ol锛屾部鐢�1
+
+// 鏈�缁堟坊鍔犺〃澶村埌鎶ヨ〃鍒楄〃
+ reportExcelDtos.add(header);
+
+
+ // 鍒濆鍖� LinkedList锛堣�岄潪鏁扮粍锛屾敮鎸侀『搴忔坊鍔狅級
+ LinkedList<ReportExcelDto> header2 = new LinkedList<>();
+
+// 1. 搴旀敹銆佸疄鏀躲�佷唬鏀剁瓑鍥哄畾椤癸細鎸夐『搴廰dd锛屽搴斿師鏁扮粍0-7涓嬫爣
+ header2.add(createHeaderRow("搴旀敹", 1, 2)); // 瀵瑰簲鍘焗eader[0]
+ header2.add(createHeaderRow("瀹炴敹", 1, 2)); // 瀵瑰簲鍘焗eader[1]
+ header2.add(createHeaderRow("浠f敹", 1, 2)); // 瀵瑰簲鍘焗eader[2]
+ header2.add(createHeaderRow("2026骞�", 1, 2)); // 瀵瑰簲鍘焗eader[3]
+ header2.add(createHeaderRow("2027骞�", 1, 2)); // 瀵瑰簲鍘焗eader[4]
+ header2.add(createHeaderRow("寰呮敹鏈堟暟", 1, 2)); // 瀵瑰簲鍘焗eader[5]
+ header2.add(createHeaderRow("寰呮敹閲戦", 1, 2)); // 瀵瑰簲鍘焗eader[6]
+ header2.add(createHeaderRow("浠f敹鍖洪棿", 1, 2)); // 瀵瑰簲鍘焗eader[7]
+
+// 2. 骞翠唤寰幆锛氭寜鍘熶笅鏍囬�昏緫璁$畻椤哄簭锛岀户缁璦dd锛堝師header[8]鍙婁互鍚庯級
+ for (int i = startYear; i <= endYear; i++) {
+ // 鍘熼�昏緫锛歩ndex = 7 + (i - startYear + 1) 鈫� 棣栨寰幆i=startYear鏃讹紝index=8
+ // LinkedList鏃犻渶鍏冲績涓嬫爣锛岀洿鎺dd鍗冲彲淇濇寔椤哄簭锛堜笌鍘熸暟缁勪笅鏍囬『搴忎竴鑷达級
+ header2.add(createHeaderRow(String.valueOf(i), 3, 1));
+ }
+
+// 3. 鎵撴姌閲戦姹囨�伙細鍘熼�昏緫涓�"骞翠唤寰幆鍚�"鐨勪笅涓�涓綅缃紝缁х画add
+ header2.add(createHeaderRow("鎵撴姌閲戦姹囨��", 1, 2));
+
+// 4. 鏈�缁堟坊鍔犲埌鎶ヨ〃鍒楄〃
+ reportExcelDtos.add(header2);
+
+ LinkedList<ReportExcelDto> header3 = new LinkedList<>();
+
for (int i = startYear ; i <= endYear ; i++){
- header[9 + feeRow + 9 + ((i - startYear) * 3) + 1] = "鍘嗗勾瀹炴敹"+i+"-宸叉敹鏈堟暟";
- header[9 + feeRow + 9 + ((i - startYear) * 3) + 2] = "鍘嗗勾瀹炴敹"+i+"-宸叉敹鍖洪棿";
- header[9 + feeRow + 9 + ((i - startYear) * 3) + 3] = "鍘嗗勾瀹炴敹"+i+"-鏈敹鍖洪棿";
+ header3.add(createHeaderRow("宸叉敹鏈堟暟", 1, 1));
+ header3.add(createHeaderRow("宸叉敹鍖洪棿", 1, 1));
+ header3.add(createHeaderRow("鏈敹鍖洪棿", 1, 1));
}
- header[9 + feeRow + 9 + ((endYear - startYear) * 3) + 4] = "鎵撴姌閲戦姹囨��";
+ reportExcelDtos.add(header3);
+
+ return reportExcelDtos;
+ }
+
+ private ReportExcelDto createHeaderRow(String text, int col, int row) {
+ ReportExcelDto reportExcelDto = new ReportExcelDto();
+ reportExcelDto.setTest(text); // 娉ㄦ剰锛氬彲鑳芥槸setText()鐨勭瑪璇�
+ reportExcelDto.setCol(col);
+ reportExcelDto.setRow(row);
+ return reportExcelDto;
+ }
+
+ public double doublequ2(double num){
+ return (int)(num * 100) / 100.0;
}
}
+
--
Gitblit v1.8.0