From dd6687b118561100e1677e88a9c2f5842a54c531 Mon Sep 17 00:00:00 2001
From: jialh <1972868360@qq.com>
Date: 星期四, 16 四月 2026 18:14:14 +0800
Subject: [PATCH] 水电话费
---
service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeePropertyCmd.java | 208 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 181 insertions(+), 27 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 2087144..6297a05 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
@@ -27,7 +27,6 @@
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;
@@ -91,7 +90,7 @@
reportQueryRecord.setOperator("鐧藉崟娴佹按鐗╀笟琛�");
List<ReportQueryRecord> reportQueryRecords = reportFeeInnerServiceSMOImpl.queryReport(BeanConvertUtil.beanCovertMap(reportQueryRecord));
- if (reqJson.containsKey("roomNum") && reqJson.get("roomNum") != "") {
+ if (reqJson.containsKey("roomNum") && !(reqJson.get("roomNum").equals(""))) {
RoomDto roomDto = new RoomDto();
String[] roomTitle = reqJson.getString("roomNum").split("-");
roomDto.setFloorNum(roomTitle[0]);
@@ -108,6 +107,7 @@
ReportExcelDto reportExcelDto = new ReportExcelDto();
reportExcelDto.setOwner(ownerDtos.get(0));
+ reportExcelDto.setRoomDto(roomDtos.get(0));
FeeDetailDto feeDetailDto = new FeeDetailDto();
List<Map> rooms = roomInnerServiceSMOImpl.queryRoomsAsReport(roomDto);
@@ -142,16 +142,15 @@
RoomDto roomDto = new RoomDto();
roomDto.setCommunityId(reqJson.getString("communityId"));
roomDto.setRow(row);
- roomDto.setPage(page);
- roomDto.setFloorNum(reqJson.containsKey("floorId")&&reqJson.getString("floorId").equals("")?null:reqJson.getString("floorId"));
+ roomDto.setPage(page * row - row);
+ roomDto.setFloorNum(reqJson.containsKey("floorId")&&!(reqJson.getString("floorId").equals(""))?reqJson.getString("floorId"):null);
roomDto.setOwnerName(reqJson.containsKey("ownerName")&&reqJson.getString("ownerName").equals("")?null:reqJson.getString("ownerName"));
List<Map> rooms = roomInnerServiceSMOImpl.queryRoomsAsReport(roomDto);
if (rooms.size() == 0) {
ResultVo resultVo = new ResultVo("鏈煡璇㈠埌鏁版嵁");
resultVo.setTotal(0);
resultVo.setRecords(0);
- ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
-
+ ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.NOT_FOUND);
context.setResponseEntity(responseEntity);
return;
}
@@ -207,39 +206,39 @@
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 + j] = doublequ2(Double.parseDouble(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")))))+"";
- strings[8 + (2 * feeConfigDtos.size()) + 2] = Double.parseDouble(strings[8 + (2 * feeConfigDtos.size()) + 2]) * 12+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 2] = doublequ2(Double.parseDouble(strings[8 + (2 * feeConfigDtos.size()) + 2]) * 12)+"";
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 noPayMoney = 0;
+ double year1 = 0;
+ double 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();
+ allMoney = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue()+allMoney);
+ allPayMoney = doublequ2(((BigDecimal) map1.get("瀹炴敹閲戦")).doubleValue()+allPayMoney);
+ monthCount = ((BigDecimal)map1.get("鏈敹鏈堟暟")).intValue()+monthCount;
+ noPayMoney = doublequ2(((BigDecimal)map1.get("鏈敹閲戦")).intValue()+noPayMoney);
noPayDate = noPayDate + map1.get("鏈敹鍖洪棿");
- discountMoney += ((BigDecimal)map1.get("鎶樻墸閲戦")).doubleValue();
+ discountMoney = doublequ2(((BigDecimal)map1.get("鎶樻墸閲戦")).doubleValue()+discountMoney);
if(map1.get("缁熻缁村害").equals("2026")){
- year1 += ((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue();
+ year1 = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue() + year1);
}
if(map1.get("缁熻缁村害").equals("2027")){
- year2 += ((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue();
+ year2 = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue() + year2);
}
}
@@ -293,21 +292,176 @@
}
}
+ public Object[][] doCmd2(JSONObject reqJson) throws CmdException, ParseException {
+ int startYear = 2020;
+ CommunityDto communityDto = new CommunityDto();
+ communityDto.setCommunityId(reqJson.getString("communityId"));
+ List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
+ FeeQueryParams feeQueryParams = new FeeQueryParams();
+ feeQueryParams.setCommunityId(reqJson.getString("communityId"));
+ feeQueryParams.setStartYear(startYear);
+ int currentYear = java.time.Year.now().getValue();
+ feeQueryParams.setEndYear(currentYear + 2);
+ if(reqJson.containsKey("endYear") && !reqJson.get("endYear").equals("") && reqJson.get("endYear") != null) {
+ currentYear=Integer.parseInt(reqJson.get("endYear")+"");
+ feeQueryParams.setEndYear(Integer.parseInt(reqJson.get("endYear")+"")+2);
+ }
+ int endYear = feeQueryParams.getEndYear();
+ int doYear = endYear - startYear;
+
+ ReportQueryRecord reportQueryRecord = new ReportQueryRecord();
+ reportQueryRecord.setCommunityId(reqJson.getString("communityId"));
+ reportQueryRecord.setQueryStatus("0");
+ reportQueryRecord.setEndYear(currentYear+"");
+ reportQueryRecord.setOperator("鐧藉崟娴佹按鐗╀笟琛�");
+ List<ReportQueryRecord> reportQueryRecords = reportFeeInnerServiceSMOImpl.queryReport(BeanConvertUtil.beanCovertMap(reportQueryRecord));
+ int row = Integer.parseInt(reqJson.containsKey("row")?reqJson.getString("row"):"10");
+ int page = Integer.parseInt(reqJson.containsKey("page")?reqJson.getString("page"):"1");
+ startYear = 2016;
+ endYear = DateUtil.getYear();
+ Object[][] test = new Object[row][];
+ RoomDto roomDto = new RoomDto();
+ roomDto.setCommunityId(reqJson.getString("communityId"));
+ roomDto.setRow(row);
+ roomDto.setPage(page * row - row);
+ roomDto.setFloorNum(reqJson.containsKey("floorId")&&!(reqJson.getString("floorId").equals(""))?reqJson.getString("floorId"):null);
+ roomDto.setOwnerName(reqJson.containsKey("ownerName")&&reqJson.getString("ownerName").equals("")?null:reqJson.getString("ownerName"));
+ List<Map> rooms = roomInnerServiceSMOImpl.queryRoomsAsReport(roomDto);
+ int count = roomInnerServiceSMOImpl.queryRoomsCount(roomDto);
+ FeeConfigDto feeConfigDto = new FeeConfigDto();
+ feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+ if(reqJson.containsKey("feeTypeCd") && !(reqJson.get("feeTypeCd").equals(""))){
+ feeConfigDto.setFeeTypeCd(reqJson.getString("feeTypeCd"));
+ }else{
+ feeConfigDto.setFeeTypeCds(new String[]{"630000001"});
+ }
+ if(reqJson.containsKey("importFee") && !(reqJson.get("importFee").equals(""))){
+ feeConfigDto.setFeeNameEq(reqJson.getString("importFee"));
+ }else{
+ feeConfigDto.setFeeTypeCds(new String[]{"630000001"});
+ }
+ List<FeeConfigDto> originalDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+
+// 2. 娴佸紡澶勭悊锛氭帓搴� 鈫� 鍘婚噸锛堟寜鍗曚环锛� 鈫� 鍙栧墠2鏉�
+ List<FeeConfigDto> top2DistinctPriceDtos = originalDtos.stream()
+ // 绗竴姝ワ細鎸変笟鍔¤鍒欐帓搴忥紙绀轰緥锛氬厛鎸夊崟浠峰崌搴忥紝鐩稿悓鍗曚环鎸塻tartTime闄嶅簭锛堜繚鐣欐渶鏂拌褰曪級锛�
+ .sorted(
+ // 鍗曚环鎺掑簭锛歯ull鍊兼斁鏈�鍚庯紝闈瀗ull鎸夎嚜鐒堕『搴忥紙濡侭igDecimal鍗囧簭锛�
+ Comparator.comparing(FeeConfigDto::getSquarePrice, Comparator.nullsLast(Comparator.naturalOrder()))
+ // 鐩稿悓鍗曚环鏃讹紝鎸塻tartTime闄嶅簭锛堢‘淇濅繚鐣欌�滄渶鏂扳�濈殑閭f潯锛�
+ .thenComparing(FeeConfigDto::getStartTime, Comparator.nullsLast(Comparator.reverseOrder()))
+ )
+ // 绗簩姝ワ細鎸夊崟浠峰垎缁勶紙鑷姩鍘婚噸锛屾瘡缁勫搴斾竴涓敮涓�鍗曚环锛�
+ .collect(Collectors.groupingBy(
+ dto -> (dto.getSquarePrice() == null) ? new Object() : dto.getSquarePrice(), // 澶勭悊null鐨勫垎缁勯敭
+ Collectors.toList() // 姣忕粍鍐呮槸鎺掑簭鍚庣殑璁板綍锛堝凡纭繚鏈�浼橈級
+ ))
+ // 绗笁姝ワ細鎻愬彇姣忕粍鐨勭涓�鏉★紙鍗宠鍗曚环鐨勨�滄渶浼樿褰曗�濓級锛屽啀鍙栧墠2鏉�
+ .values().stream()
+ .map(group -> group.get(0))
+ .collect(Collectors.toList());
+ List<FeeConfigDto> feeConfigDtos = top2DistinctPriceDtos;
+
+ 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] = doublequ2(Double.parseDouble(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")))))+"";
+ strings[8 + (2 * feeConfigDtos.size()) + 2] = doublequ2(Double.parseDouble(strings[8 + (2 * feeConfigDtos.size()) + 2]) * 12)+"";
+ 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;
+ double noPayMoney = 0;
+ double year1 = 0;
+ double year2 = 0;
+ double discountMoney = 0;
+ String noPayDate = "";
+ currentYear = DateUtil.getYear();
+ for (Map map1 : fee){
+ if(map1.containsKey("缁熻缁村害") && !(map1.get("缁熻缁村害").toString().contains("鎬昏"))){
+ allMoney = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue()+allMoney);
+ allPayMoney = doublequ2(((BigDecimal) map1.get("瀹炴敹閲戦")).doubleValue()+allPayMoney);
+ monthCount = ((BigDecimal)map1.get("鏈敹鏈堟暟")).intValue()+monthCount;
+ noPayMoney = doublequ2(((BigDecimal)map1.get("鏈敹閲戦")).intValue()+noPayMoney);
+ noPayDate = noPayDate + map1.get("鏈敹鍖洪棿");
+ discountMoney = doublequ2(((BigDecimal)map1.get("鎶樻墸閲戦")).doubleValue()+discountMoney);
+ if(map1.get("缁熻缁村害").equals("2026")){
+ year1 = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue() + year1);
+ }
+ if(map1.get("缁熻缁村害").equals("2027")){
+ year2 = doublequ2(((BigDecimal) map1.get("搴旀敹閲戦")).doubleValue() + year2);
+ }
+ }
+
+ }
+ 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;
+ }
+
+
+ return test;
+ }
+
private String[][] backFeeList(String number, Object roomId) {
HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("payObjId", roomId);
objectObjectHashMap.put("feeTypeCd",number);
List<Map> fee = reportFeeInnerServiceSMOImpl.onceRoomFee(objectObjectHashMap);
- String[][] strings = new String[fee.size() + 1][17];
- setHeader(strings[0]);
-
+ String[][] strings = new String[fee.size()][17];
for (int i = 0 ; i < fee.size(); i++) {
Map map = fee.get(i);
strings[i][0] = (String) map.get("缁熻缁村害");
strings[i][1] = ((BigDecimal) map.get("搴旀敹鏈堟暟")).toString();
- strings[i][2] = ((BigDecimal) map.get("搴旀敹閲戦")).toString();
+ strings[i][2] = doublequ2(((BigDecimal) map.get("搴旀敹閲戦")).doubleValue())+"";
// strings[i][3] = (String) map.get("鎶樻墸閲戦");
- strings[i][4] = ((BigDecimal) map.get("鎶樻墸閲戦")).toString();
+ strings[i][4] = doublequ2(((BigDecimal) map.get("鎶樻墸閲戦")).doubleValue())+"";
// strings[i][5] = (String) map.get("鎶樻墸閲戦");
// strings[i][6] = (String) map.get("鎶樻墸閲戦");
// strings[i][7] = (String) map.get("鎶樻墸閲戦");//鐢宠浜�
@@ -315,10 +469,10 @@
// strings[i][9] = (String) map.get("鎶樻墸閲戦");//鍙戣捣鏃ユ湡
strings[i][10] = Double.parseDouble(strings[i][2]) - Double.parseDouble(strings[i][4])+"";
strings[i][11] = ((BigDecimal) map.get("宸叉敹鏈堟暟")).toString();
- strings[i][12] = ((BigDecimal) map.get("瀹炴敹閲戦")).toString();
+ strings[i][12] = doublequ2(((BigDecimal) map.get("瀹炴敹閲戦")).doubleValue())+"";
strings[i][13] = (String) map.get("宸叉敹鍖洪棿");
strings[i][14] = ((BigDecimal) map.get("鏈敹鏈堟暟")).toString();
- strings[i][15] = ((BigDecimal) map.get("鏈敹閲戦")).toString();
+ strings[i][15] = doublequ2(((BigDecimal) map.get("鏈敹閲戦")).doubleValue())+"";
strings[i][16] = (String) map.get("鏈敹鍖洪棿");
}
return strings;
@@ -363,7 +517,7 @@
// 2. 绗竴涓猣eeRow寰幆锛氬師鏈樉寮忔敼col锛屾部鐢ㄥ墠涓�涓�1锛堟寜鍘熼�昏緫淇濇寔col=1锛�
for (int i = 0; i < feeRow; i++) {
- header.add(createHeaderRow(feeConfigDtos.get(0).getFeeName(), 1, 3));
+ header.add(createHeaderRow(feeConfigDtos.get(i).getFeeName(), 1, 3));
}
// 3. 璁惧杩愪綔璐癸細鍘熸湭鏀筩ol锛屾部鐢ㄥ墠涓�涓�1
@@ -371,7 +525,7 @@
// 4. 绗簩涓猣eeRow寰幆锛氬師鏈樉寮忔敼col锛屾部鐢ㄥ墠涓�涓�1锛堟寜鍘熼�昏緫淇濇寔col=1锛�
for (int i = 0; i < feeRow; i++) {
- header.add(createHeaderRow(feeConfigDtos.get(0).getFeeName(), 1, 3));
+ header.add(createHeaderRow(feeConfigDtos.get(i).getFeeName(), 1, 3));
}
// 5. 骞村簲鏀舵锛氬師鏄惧紡setCol(1)锛屼繚鎸乧ol=1
--
Gitblit v1.8.0