From f769d817f8ba2522147c73fa93ccacdc3aab0cb6 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 24 十月 2025 18:15:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrDisplacementController.java | 253 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 251 insertions(+), 2 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrDisplacementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrDisplacementController.java
index a916c9a..e39fd55 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrDisplacementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrDisplacementController.java
@@ -1,8 +1,49 @@
package com.ruoyi.web.controller.api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.TDept;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.system.dto.AddDrDisplacementDTO;
+import com.ruoyi.system.model.DrDisplacement;
+import com.ruoyi.system.model.DrDisplacementHouse;
+import com.ruoyi.system.model.DrDisplacementReturnHouse;
+import com.ruoyi.system.model.LandReported;
+import com.ruoyi.system.query.DrDisplacementListQuery;
+import com.ruoyi.system.query.LandReportedListQuery;
+import com.ruoyi.system.service.DrDisplacementHouseService;
+import com.ruoyi.system.service.DrDisplacementReturnHouseService;
+import com.ruoyi.system.service.DrDisplacementService;
+import com.ruoyi.system.service.LandReportedService;
+import com.ruoyi.system.vo.DrDisplacementListVO;
+import com.ruoyi.system.vo.DrDisplacementStatisticsVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.ehcache.impl.persistence.DefaultDiskResourceService;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -13,7 +54,215 @@
* @since 2025-10-17
*/
@RestController
+@Api(tags = "拆迁情况管理")
@RequestMapping("/dr-displacement")
public class DrDisplacementController {
+ @Resource
+ private DrDisplacementService drDisplacementService;
+ @Resource
+ private DrDisplacementHouseService drDisplacementHouseService;
+ @Resource
+ private DrDisplacementReturnHouseService drDisplacementReturnHouseService;
+
+ @ApiOperation(value = "拆迁统计")
+ @PostMapping(value = "/statistics")
+ public R<Map<Double,Map<String,Integer>>> statistics() {
+ List<DrDisplacementReturnHouse> houses = drDisplacementReturnHouseService.list();
+
+ // 定义需要统计的面积段
+ List<Double> areaList = Arrays.asList(30.0, 60.0, 80.0, 90.0, 100.0, 110.0, 120.0);
+
+ // 初始化结果集
+ Map<Double, Map<String,Integer>> result = areaList.stream()
+ .collect(Collectors.toMap(
+ area -> area,
+ area -> {
+ Map<String, Integer> typeMap = new HashMap<>();
+ typeMap.put("营业房", 0);
+ typeMap.put("库房", 0);
+ typeMap.put("住房", 0);
+ return typeMap;
+ }
+ ));
+
+ // 按面积分组统计
+ Map<Double, List<DrDisplacementReturnHouse>> groupedByArea = houses.stream()
+ .collect(Collectors.groupingBy(DrDisplacementReturnHouse::getArea));
+
+ // 处理统计数据
+ groupedByArea.forEach((area, houseList) -> {
+ if (result.containsKey(area)) {
+ houseList.forEach(house -> {
+ String returnType = getReturnTypeString(house.getReturnType());
+ result.get(area).merge(returnType, house.getQuantity(), Integer::sum);
+ });
+ }
+ });
+ return R.ok(result);
+ }
+
+
+
+ private String getReturnTypeString(Integer returnType) {
+ switch (returnType) {
+ case 0: return "营业房";
+ case 1: return "住房";
+ case 2: return "库房";
+ default: return "未知";
+ }
+ }
+ @ApiOperation(value = "拆迁情况分页列表")
+ @PostMapping(value = "/pageList")
+ public R<DrDisplacementListVO> pageList(@RequestBody DrDisplacementListQuery query) {
+ DrDisplacementListVO drDisplacementListVO = new DrDisplacementListVO();
+ PageInfo<DrDisplacement> drDisplacementPageInfo = drDisplacementService.pageList(query);
+ if (drDisplacementPageInfo.getRecords().isEmpty()){
+ drDisplacementListVO.setTotalCount(0);
+ drDisplacementListVO.setTotalArea(0.0);
+ drDisplacementListVO.setPageList(new PageInfo<>());
+ return R.ok(drDisplacementListVO);
+ }
+ Map<Integer, List<DrDisplacementHouse>> houseMap = drDisplacementHouseService.lambdaQuery()
+ .in(DrDisplacementHouse::getDisplacementId, drDisplacementPageInfo.getRecords()
+ .stream().map(DrDisplacement::getId).collect(Collectors.toList()))
+ .list().stream().collect(Collectors.groupingBy(DrDisplacementHouse::getDisplacementId));
+
+ for (DrDisplacement record : drDisplacementPageInfo.getRecords()) {
+ StringBuilder temp = new StringBuilder();
+ List<DrDisplacementHouse> drDisplacementHouses = houseMap.get(record.getId());
+ if (drDisplacementHouses!=null){
+ for (DrDisplacementHouse house : drDisplacementHouses) {
+ temp.append(house.getConstructionType()).append(",");
+ }
+ record.setConstructionTypes(temp.substring(0, temp.length() - 1));
+ }
+ }
+ List<DrDisplacement> list = drDisplacementService.lambdaQuery()
+ .like(StringUtils.hasLength(query.getName()), DrDisplacement::getName, query.getName())
+ .eq(query.getCommunityId() != null, DrDisplacement::getCommunityId, query.getCommunityId())
+ .like(StringUtils.hasLength(query.getPhone()), DrDisplacement::getPhone, query.getPhone())
+ .like(StringUtils.hasLength(query.getIdCard()), DrDisplacement::getIdCard, query.getIdCard()).list();
+ double totalArea = 0.0;
+ for (DrDisplacement drDisplacement : list) {
+ totalArea += drDisplacement.getTotalArea();
+ }
+ drDisplacementListVO.setTotalCount(list.size());
+ drDisplacementListVO.setTotalArea(totalArea);
+ drDisplacementListVO.setPageList(drDisplacementPageInfo);
+ return R.ok(drDisplacementListVO);
+ }
+ @ApiOperation(value = "拆迁情况导出")
+ @Log(title = "拆迁情况导出", businessType = BusinessType.OTHER)
+ @PostMapping(value = "/export")
+ public void export(@RequestBody DrDisplacementListQuery query) {
+ List<DrDisplacement> list = drDisplacementService.lambdaQuery()
+ .like(StringUtils.hasLength(query.getName()), DrDisplacement::getName, query.getName())
+ .eq(query.getCommunityId() != null, DrDisplacement::getCommunityId, query.getCommunityId())
+ .like(StringUtils.hasLength(query.getPhone()), DrDisplacement::getPhone, query.getPhone())
+ .like(StringUtils.hasLength(query.getIdCard()), DrDisplacement::getIdCard, query.getIdCard()).list();
+ if (!list.isEmpty()){
+ Map<Integer, List<DrDisplacementHouse>> houseMap = drDisplacementHouseService.lambdaQuery()
+ .in(DrDisplacementHouse::getDisplacementId, list
+ .stream().map(DrDisplacement::getId).collect(Collectors.toList()))
+ .list().stream().collect(Collectors.groupingBy(DrDisplacementHouse::getDisplacementId));
+ for (DrDisplacement record : list) {
+ StringBuilder temp = new StringBuilder();
+ List<DrDisplacementHouse> drDisplacementHouses = houseMap.get(record.getId());
+ if (drDisplacementHouses!=null){
+ for (DrDisplacementHouse house : drDisplacementHouses) {
+ temp.append(house.getConstructionType()).append(",");
+ }
+ record.setConstructionTypes(temp.substring(0, temp.length() - 1));
+ }
+ }
+ }
+ //1.获取excel模板
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), DrDisplacement.class, list);
+ HttpServletResponse response = WebUtils.response();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("拆迁情况.xls", "utf-8");
+ response.setHeader("Content-dispodition", "attachment;filename=" + fileName);
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @ApiOperation(value = "添加")
+ @Transactional
+ @Log(title = "拆迁情况-添加", businessType = BusinessType.INSERT)
+ @PostMapping(value = "/add")
+ public R<Boolean> save(@RequestBody AddDrDisplacementDTO entity) {
+ drDisplacementService.save(entity);
+ List<DrDisplacementHouse> drDisplacementHouses = entity.getDrDisplacementHouses();
+ for (DrDisplacementHouse drDisplacementHouse : drDisplacementHouses) {
+ drDisplacementHouse.setDisplacementId(entity.getId());
+ }
+ drDisplacementHouseService.saveBatch(drDisplacementHouses);
+ List<DrDisplacementReturnHouse> drDisplacementReturnHouses = entity.getDrDisplacementReturnHouses();
+ for (DrDisplacementReturnHouse drDisplacementReturnHouse : drDisplacementReturnHouses) {
+ drDisplacementReturnHouse.setDisplacementId(entity.getId());
+ }
+ drDisplacementReturnHouseService.saveBatch(entity.getDrDisplacementReturnHouses());
+ return R.ok();
+ }
+
+ @ApiOperation(value = "修改")
+ @Transactional
+ @Log(title = "拆迁情况-修改", businessType = BusinessType.UPDATE)
+ @PostMapping(value = "/edit")
+ public R<Boolean> edit(@RequestBody AddDrDisplacementDTO entity) {
+ drDisplacementService.updateById(entity);
+ drDisplacementHouseService.remove(new LambdaQueryWrapper<DrDisplacementHouse>()
+ .eq(DrDisplacementHouse::getDisplacementId, entity.getId()));
+ List<DrDisplacementHouse> drDisplacementHouses = entity.getDrDisplacementHouses();
+ for (DrDisplacementHouse drDisplacementHouse : drDisplacementHouses) {
+ drDisplacementHouse.setDisplacementId(entity.getId());
+ }
+ drDisplacementHouseService.saveBatch(drDisplacementHouses);
+ drDisplacementReturnHouseService.remove(new LambdaQueryWrapper<DrDisplacementReturnHouse>()
+ .eq(DrDisplacementReturnHouse::getDisplacementId, entity.getId()));
+ List<DrDisplacementReturnHouse> drDisplacementReturnHouses = entity.getDrDisplacementReturnHouses();
+ for (DrDisplacementReturnHouse drDisplacementReturnHouse : drDisplacementReturnHouses) {
+ drDisplacementReturnHouse.setDisplacementId(entity.getId());
+ }
+ drDisplacementReturnHouseService.saveBatch(entity.getDrDisplacementReturnHouses());
+ return R.ok();
+ }
+
+ @ApiOperation(value = "详情")
+ @GetMapping(value = "/detail")
+ public R<AddDrDisplacementDTO> detail(String id) {
+ AddDrDisplacementDTO addDrDisplacementDTO = new AddDrDisplacementDTO();
+ DrDisplacement drDisplacement = drDisplacementService.getById(id);
+ BeanUtils.copyProperties(drDisplacement, addDrDisplacementDTO);
+ List<DrDisplacementHouse> drDisplacementHouses = drDisplacementHouseService.lambdaQuery().eq(DrDisplacementHouse::getDisplacementId, id).list();
+ List<DrDisplacementReturnHouse> drDisplacementReturnHouses = drDisplacementReturnHouseService.lambdaQuery().eq(DrDisplacementReturnHouse::getDisplacementId, id).list();
+ addDrDisplacementDTO.setDrDisplacementHouses(drDisplacementHouses);
+ addDrDisplacementDTO.setDrDisplacementReturnHouses(drDisplacementReturnHouses);
+ return R.ok(addDrDisplacementDTO);
+ }
+
+ @Log(title = "拆迁情况-删除", businessType = BusinessType.DELETE)
+ @Transactional
+ @ApiOperation(value = "拆迁情况-删除")
+ @DeleteMapping(value = "/delete")
+ public R delete(@RequestParam String ids) {
+ drDisplacementService.removeBatchByIds(Arrays.asList(ids.split(",")));
+ drDisplacementHouseService.remove(new LambdaQueryWrapper<DrDisplacementHouse>()
+ .in(DrDisplacementHouse::getDisplacementId, Arrays.asList(ids.split(","))));
+ drDisplacementReturnHouseService.remove(new LambdaQueryWrapper<DrDisplacementReturnHouse>()
+ .in(DrDisplacementReturnHouse::getDisplacementId, Arrays.asList(ids.split(","))));
+ return R.ok();
+ }
}
--
Gitblit v1.7.1