导出单片材料

dongdingding
杜函宇 1 week ago
parent 86bf903b29
commit 0261d44802

@ -24,7 +24,7 @@
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.23</version>
<version>5.8.37</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>

@ -1,9 +1,12 @@
package com.ruoyi.gysl.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@ -15,8 +18,10 @@ import com.ruoyi.gysl.entity.request.BasicInformationPageReq;
import com.ruoyi.gysl.entity.response.BasicInformationResponse;
import com.ruoyi.gysl.entity.response.ProjectExcelInfo;
import com.ruoyi.gysl.service.*;
import com.ruoyi.system.mapper.SysDictDataMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@ -24,9 +29,15 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.*;
/**
* (BasicInformation)
@ -38,7 +49,8 @@ import java.util.List;
@RestController
@RequestMapping("/gysl/basicInformation")
public class BasicInformationController extends BaseController {
@Value("${ruoyi.profile}")
private String fileAddress;
// 1.审核通过之后再审核不要通知
// 2.项目评价配置和详情那边同步显示
// 3.换掉项目动态导出模板
@ -51,7 +63,8 @@ public class BasicInformationController extends BaseController {
// 5.月度报告修改
// 8.企业和政务登录
@Resource
private SysDictDataMapper sysDictDataMapper;
/**
*
*/
@ -140,7 +153,7 @@ public class BasicInformationController extends BaseController {
if (byId.getStatus() != 1) {
throw new ServiceException("暂不能提交!");
}
return success(basicInformationService.audit(req, 2,byId.getStatus()));
return success(basicInformationService.audit(req, 2, byId.getStatus()));
}
/**
@ -154,7 +167,7 @@ public class BasicInformationController extends BaseController {
if (byId.getStatus() == 1) {
throw new ServiceException("请等待企业填报!");
}
return success(basicInformationService.audit(req, 3,byId.getStatus()));
return success(basicInformationService.audit(req, 3, byId.getStatus()));
}
/**
@ -261,7 +274,7 @@ public class BasicInformationController extends BaseController {
// @PreAuthorize("@ss.hasAnyRoles('admin,common')")
@ApiOperation("导出项目数据")
@PostMapping("/exportInfo")
public void exportInfo(HttpServletResponse response){
public void exportInfo(HttpServletResponse response) {
List<ProjectExcelInfo> pE = basicInformationService.selectList();
ExcelUtil<ProjectExcelInfo> util = new ExcelUtil<>(ProjectExcelInfo.class);
util.exportExcel(response, pE, "项目数据");
@ -329,5 +342,88 @@ public class BasicInformationController extends BaseController {
// });
// return AjaxResult.success();
// }
@ApiOperation(value = "导出单片材料")
@PostMapping("/wordExport")
public void wordExport(HttpServletResponse response, @RequestBody List<Long> ids) throws Exception {
List<SysDictData> sysDictData = sysDictDataMapper.selectDictDataList(new SysDictData());
String fatherFile = fileAddress + "/项目压缩文件";
FileUtil.mkdir(fatherFile);
for (long id : ids) {
BasicInformationResponse a1 = basicInformationService.selectOne(id);
Map<String, Object> map = new HashMap<>();
map.put("issuingTime", a1.getBasicInformation().getIssuingTime() != null ? a1.getBasicInformation().getIssuingTime() : "/");
map.put("jsjd", a1.getBasicInformation().getJsjd() != null ? a1.getBasicInformation().getJsjd() : "/");
map.put("xzfl", a1.getBasicInformation().getXzfl() != null ?
basicInformationService.getDictLabel("xzfl", String.valueOf(a1.getBasicInformation().getXzfl()),sysDictData) : "/");
map.put("nature", a1.getBasicInformation().getNature() != null ?
basicInformationService.getDictLabel("xmfrdwxz", String.valueOf(a1.getBasicInformation().getNature()),sysDictData) : "/");
map.put("name", a1.getBasicInformation().getName() != null ? a1.getBasicInformation().getName() : "/");
map.put("ssgnq", a1.getBasicInformation().getSsgnq() != null ?
basicInformationService.getDictLabel("ssgnq", String.valueOf(a1.getBasicInformation().getSsgnq()),sysDictData) : "/");
map.put("jsdd", a1.getBasicInformation().getJsdd() != null ? a1.getBasicInformation().getJsdd() : "/");
map.put("xmfrdwxz", a1.getBasicInformation().getXmfrdwxz() != null ? a1.getBasicInformation().getXmfrdwxz() : "/");
map.put("tyshxydm", a1.getBasicInformation().getTyshxydm() != null ? a1.getBasicInformation().getTyshxydm() : "/");
map.put("sgdw", a1.getBasicInformation().getSgdw() != null ? a1.getBasicInformation().getSgdw() : "/");
map.put("sjdw", a1.getBasicInformation().getSjdw() != null ? a1.getBasicInformation().getSjdw() : "/");
map.put("begainTime", a1.getBasicInformation().getBegainTime() != null ? a1.getBasicInformation().getBegainTime() : "/");
map.put("endTime", a1.getBasicInformation().getEndTime() != null ? a1.getBasicInformation().getEndTime() : "/");
map.put("prioritize", a1.getBasicInformation().getPrioritize() != null ? a1.getBasicInformation().getPrioritize() : "/");
map.put("label", a1.getBasicInformation().getLabel() != null ? a1.getBasicInformation().getLabel() : "/");
map.put("projectLeader", a1.getBasicInformation().getProjectLeader() != null ? a1.getBasicInformation().getProjectLeader() : "/");
map.put("phone", a1.getBasicInformation().getPhone() != null ? a1.getBasicInformation().getPhone() : "/");
map.put("zydmj", a1.getPlanInformation().getZydmj() != null ? a1.getPlanInformation().getZydmj() : "/");
map.put("rjl", a1.getPlanInformation().getRjl() != null ? a1.getPlanInformation().getRjl() : "/");
map.put("zjzmj", a1.getPlanInformation().getZjzmj() != null ? a1.getPlanInformation().getZjzmj() : "/");
map.put("jzds", a1.getPlanInformation().getJzds() != null ? a1.getPlanInformation().getJzds() : "/");
map.put("bzcjzmj", a1.getPlanInformation().getBzcjzmj() != null ? a1.getPlanInformation().getBzcjzmj() : "/");
map.put("jzmd", a1.getPlanInformation().getJzmd() != null ? a1.getPlanInformation().getJzmd() : "/");
map.put("zgjzcs", a1.getPlanInformation().getZgjzcs() != null ? a1.getPlanInformation().getZgjzcs() : "/");
map.put("zgjzgd", a1.getPlanInformation().getZgjzgd() != null ? a1.getPlanInformation().getZgjzgd() : "/");
map.put("fhdj", a1.getPlanInformation().getFhdj() != null ? a1.getPlanInformation().getFhdj() : "/");
map.put("jdctcw", a1.getPlanInformation().getJdctcw() != null ? a1.getPlanInformation().getJdctcw() : "/");
map.put("fjdctcw", a1.getPlanInformation().getFjdctcw() != null ? a1.getPlanInformation().getFjdctcw() : "/");
map.put("jhtze", a1.getBasicInformation().getJhtze() != null ? a1.getBasicInformation().getJhtze() : "/");
map.put("ztze", a1.getBasicInformation().getZtze() != null ? a1.getBasicInformation().getZtze() : "/");
map.put("rzqys", a1.getQyrzInformation().getRzqys() != null ? a1.getQyrzInformation().getRzqys() : "/");
map.put("rzqyhylx", a1.getQyrzInformation().getRzqyhylx() != null ? a1.getQyrzInformation().getRzqyhylx() : "/");
map.put("rysl", a1.getQyrzInformation().getRysl() != null ? a1.getQyrzInformation().getRysl() : "/");
map.put("rzl", a1.getQyrzInformation().getRzl() != null ? a1.getQyrzInformation().getRzl() : "/");
map.put("yczmj", a1.getQyrzInformation().getYczmj() != null ? a1.getQyrzInformation().getYczmj() : "/");
map.put("kzczmj", a1.getQyrzInformation().getKzczmj() != null ? a1.getQyrzInformation().getKzczmj() : "/");
map.put("gycfpjzj", a1.getQyrzInformation().getGycfpjzj() != null ? a1.getQyrzInformation().getGycfpjzj() : "/");
try {
String itemsFileName = fatherFile + "/" + a1.getBasicInformation().getName()+".docx";
Path targetPath = Paths.get(itemsFileName);
Files.createDirectories(targetPath.getParent());
// 2. 打开输出流(自动覆盖已有文件)
try (OutputStream out = new BufferedOutputStream(
Files.newOutputStream(targetPath,
StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING))) {
basicInformationService.generateDocument(map,"xmdtcl.docx",out);
}
} catch (Exception e) {
throw new RuntimeException("文件下载失败");
}
}
// 压缩后的文件路径
String zipFilePath = fatherFile + ".zip";
ZipUtil.zip(fatherFile, zipFilePath);
File file = new File(zipFilePath);// 创建File对象
response.setContentType("application/zip");// 设置内容类型为ZIP文件
response.setHeader("Content-Disposition", "attachment; filename=\"file.zip\"");//设置文件名
try (FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream()) {
byte[] buffer = new byte[4096];
int by;
while ((by = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, by);
}
}
FileUtil.del(zipFilePath);
FileUtil.del(fatherFile);
}
}

@ -1,8 +1,6 @@
package com.ruoyi.gysl.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ClassPathResource;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@ -14,11 +12,6 @@ import com.ruoyi.gysl.service.BasicInformationService;
import com.ruoyi.gysl.service.ZwStatsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -27,8 +20,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.*;
import java.net.URLEncoder;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -48,8 +42,6 @@ public class ZwStatsController extends BaseController {
@Resource
private ZwStatsService zwStatsService;
@Value("${ruoyi.profile}")
private String fileAddress;
@Resource
private BasicInformationService basicInformationService;
@ -143,7 +135,8 @@ public class ZwStatsController extends BaseController {
*/
@ApiOperation(value = "导出项目总体报告")
@PostMapping(value = "/exportBg")
public void exportBg(HttpServletResponse response,@Valid String years) throws Exception {
public void exportBg(HttpServletResponse response, @Valid @NotBlank String years)
throws Exception {
// 设置响应内容类型和头部
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
@ -154,82 +147,57 @@ public class ZwStatsController extends BaseController {
List<RibbonResponse> ribbon = zwStatsService.ribbon(years);
//获取投资主体
List<RibbonResponse> investors = zwStatsService.investors(years);
Map<String,Object> dt = new HashMap<>();
dt.put("{{years}}",years);
dt.put("{{allProject}}",allProjectResponse.getAllProject());
dt.put("{{allGrossArea}}",allProjectResponse.getAllGrossArea());
dt.put("{{allBuilding1}}",allProjectResponse.getAllBuilding1());
dt.put("{{allBuilding2}}",allProjectResponse.getAllBuilding2());
dt.put("{{allBuilding3}}",allProjectResponse.getAllBuilding3());
dt.put("{{currentYearProject}}",allProjectResponse.getCurrentYearProject());
dt.put("{{currentYearGrossArea}}",allProjectResponse.getCurrentYearGrossArea());
dt.put("{{currentBuilding1}}",allProjectResponse.getCurrentBuilding1());
dt.put("{{currentBuilding2}}",allProjectResponse.getCurrentBuilding2());
dt.put("{{currentBuilding3}}",allProjectResponse.getCurrentBuilding3());
ribbon.forEach(x->{
Map<String, Object> dt = new HashMap<>();
dt.put("{{years}}", years);
dt.put("{{allProject}}", allProjectResponse.getAllProject());
dt.put("{{allGrossArea}}", allProjectResponse.getAllGrossArea());
dt.put("{{allBuilding1}}", allProjectResponse.getAllBuilding1());
dt.put("{{allBuilding2}}", allProjectResponse.getAllBuilding2());
dt.put("{{allBuilding3}}", allProjectResponse.getAllBuilding3());
dt.put("{{currentYearProject}}", allProjectResponse.getCurrentYearProject());
dt.put("{{currentYearGrossArea}}", allProjectResponse.getCurrentYearGrossArea());
dt.put("{{currentBuilding1}}", allProjectResponse.getCurrentBuilding1());
dt.put("{{currentBuilding2}}", allProjectResponse.getCurrentBuilding2());
dt.put("{{currentBuilding3}}", allProjectResponse.getCurrentBuilding3());
ribbon.forEach(x -> {
switch (x.getSsgnq()) {
case "高端制造与国际贸易区":
dt.put("{{gn1}}",x.getCount());
dt.put("{{gn1}}", x.getCount());
break;
case "阳澄湖半岛旅游度假区":
dt.put("{{gn2}}",x.getCount());
dt.put("{{gn2}}", x.getCount());
break;
case "金鸡湖商务区":
dt.put("{{gn3}}",x.getCount());
dt.put("{{gn3}}", x.getCount());
break;
case "苏相合作区":
dt.put("{{gn4}}",x.getCount());
dt.put("{{gn4}}", x.getCount());
break;
case "独墅湖科教创新区":
dt.put("{{gn5}}",x.getCount());
dt.put("{{gn5}}", x.getCount());
break;
default:
break;
}
});
investors.forEach(x->{
investors.forEach(x -> {
switch (x.getSsgnq()) {
case "国企":
dt.put("{{tz1}}",x.getCount());
dt.put("{{tz1}}", x.getCount());
break;
case "民营企业":
dt.put("{{tz2}}",x.getCount());
dt.put("{{tz2}}", x.getCount());
break;
case "外资企业":
dt.put("{{tz3}}",x.getCount());
dt.put("{{tz3}}", x.getCount());
break;
default:
break;
}
});
ClassPathResource classPathResource = new ClassPathResource("ztbgmb.docx");
try (
InputStream inputStream = classPathResource.getStream();
// 使用 Apache POI 处理 Word 文件(需提前引入依赖)
XWPFDocument doc = new XWPFDocument(inputStream);
) {
// 增强的占位符替换逻辑(改进部分)
for (XWPFParagraph paragraph : doc.getParagraphs()) {
List<XWPFRun> runs = paragraph.getRuns();
if (runs == null) continue;
for (XWPFRun run : runs) {
String text = run.getText(0);
if (text == null) continue;
// 动态替换所有模板变量
for (Map.Entry<String, Object> entry : dt.entrySet()) {
if (text.contains(entry.getKey())) {
text = text.replace(entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : "");
run.setText(text, 0);
}
}
}
}
// 将文档写入到响应输出流
try (OutputStream out = response.getOutputStream()) {
doc.write(out);
}
} catch (IOException e) {
e.printStackTrace();
// 4. 生成并写入文档
try (OutputStream out = response.getOutputStream()) {
basicInformationService.generateDocument(dt, "ztbgmb.docx", out);
}
}
}

@ -2,15 +2,15 @@ package com.ruoyi.gysl.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysDictType;
import com.ruoyi.gysl.entity.BasicInformation;
import com.ruoyi.gysl.entity.request.AuditRequest;
import com.ruoyi.gysl.entity.request.BasicInformationPageReq;
import com.ruoyi.gysl.entity.response.BasicInformationResponse;
import com.ruoyi.gysl.entity.response.ProjectBuildingExcel;
import com.ruoyi.gysl.entity.response.ProjectExcelInfo;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@ -93,5 +93,16 @@ public interface BasicInformationService extends IService<BasicInformation> {
* @return
*/
BasicInformationResponse stagingInfo(Long id);
/**
* chu
*/
void generateDocument(Map<String, Object> map, String docx, OutputStream sr) throws Exception;
/**
* dict_typedict_value
*/
String getDictLabel(String dictType, String dictValue, List<SysDictData> sysDictData);
}

@ -1,8 +1,9 @@
package com.ruoyi.gysl.service.impl;
import cn.hutool.core.io.resource.ClassPathResource;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.docking.entity.SmartDeclaration;
@ -14,21 +15,22 @@ import com.ruoyi.gysl.entity.request.BasicInformationPageReq;
import com.ruoyi.gysl.entity.request.RemarkPageReq;
import com.ruoyi.gysl.entity.request.ZwIdPageReq;
import com.ruoyi.gysl.entity.response.BasicInformationResponse;
import com.ruoyi.gysl.entity.response.ProjectBuildingExcel;
import com.ruoyi.gysl.entity.response.ProjectExcelInfo;
import com.ruoyi.gysl.mapper.BasicInformationMapper;
import com.ruoyi.gysl.service.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@ -122,7 +124,6 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
}
/**
*
*/
@ -132,125 +133,6 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
}
// /**
// * 填充数据
// */
// @Override
// public void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List<ProjectExcelInfo> info, List<String> sc, List<String> ec, int num) {
// Class<?> classBuilding = ProjectBuildingExcel.class;
// for (ProjectExcelInfo projectExcelInfo : info) {
// XSSFRow tempRow = sheet.createRow(rowNum++);
// tempRow.setHeight((short) 1400);
// int i1;
// for (i1 = 0; i1 < sc.size(); i1++) {
// XSSFCell tempCell = tempRow.createCell(i1);
// tempCell.setCellStyle(contentStyle);
// if (!ec.get(i1).endsWith("厂房")) {
// if (Objects.equals(sc.get(i1), "")) {
// tempCell.setCellValue(projectExcelInfo.getId());
// } else {
// tempCell.setCellValue(getExcelData(projectExcelInfo, sc.get(i1)));
// }
// }
// }
//// XSSFCell tempCell = tempRow.createCell(8);
//// tempCell.setCellStyle(contentStyle);
//// tempCell.setCellValue("12312321");
//
// for (int i2 = 0; i2 < projectExcelInfo.getXmjzxx().size(); i2++) {
// switch (projectExcelInfo.getXmjzxx().get(i2).getFloor()) {
// case 1:
// i1 = ec.indexOf("一层厂房");
// break;
// case 2:
// i1 = ec.indexOf("双层厂房");
// break;
// case 3:
// i1 = ec.indexOf("三层厂房");
// break;
// case 4:
// i1 = ec.indexOf("四层厂房");
// break;
// case 5:
// i1 = ec.indexOf("五层厂房");
// break;
// default:
// i1 = ec.indexOf("六层及以上厂房");
// }
// for (Field field : classBuilding.getDeclaredFields()) {
// XSSFCell tempCell = tempRow.createCell(i1);
// tempCell.setCellStyle(contentStyle);
// Excel excelColumn = field.getAnnotation(Excel.class);
// if (excelColumn != null) {
// tempCell.setCellValue(getBuildingData(projectExcelInfo.getXmjzxx().get(i2), sc.get(i1)));
// i1++;
// }
// }
// }
// }
// }
//
// /**
// * 填充数据-项目基础信息获取
// */
// @Override
// public String getExcelData(ProjectExcelInfo item, String str) {
// String a = null;
// switch (str) {
// case "":
// a = item.getId() == null ? "-" : item.getId();
// break;
// case "项目名称":
// a = item.getName() == null ? "-" : item.getName();
// break;
// case "项目法人单位":
// a = item.getXmfrdwxz() == null ? "-" : item.getXmfrdwxz();
// break;
// case "项目法人单位性质":
// a = String.valueOf(item.getNature() == null ? "-" : item.getNature());
// break;
// case "总用地面积":
// a = String.valueOf(item.getZydmj() == null ? "-" : item.getZydmj());
// break;
// case "容积率":
// a = String.valueOf(item.getRjl() == null ? "-" : item.getRjl());
// break;
// case "总建筑面积":
// a = String.valueOf(item.getZjzmj() == null ? "-" : item.getZjzmj());
// break;
// case "标准层建筑面积":
// a = String.valueOf(item.getBzcjzmj() == null ? "-" : item.getBzcjzmj());
// break;
// }
// return a;
// }
//
// /**
// * 填充数据-项目建筑信息获取
// */
// @Override
// public String getBuildingData(ProjectBuildingExcel item, String str) {
// String a = null;
// switch (str) {
// case "层数":
// a = item.getFloor() == null ? "-" : String.valueOf(item.getFloor());
// break;
// case "总建筑高度":
// a = item.getTotalBuildingHeight() == null ? "-" : String.valueOf(item.getTotalBuildingHeight());
// break;
// case "首层高度":
// a = String.valueOf(item.getScgd() == null ? "-" : item.getScgd());
// break;
// case "2至4层高":
// a = String.valueOf(item.getTwoAndFourCg() == null ? "-" : item.getTwoAndFourCg());
// break;
// case "4层以上层高":
// a = String.valueOf(item.getFourYscg() == null ? "-" : item.getFourYscg());
// break;
// }
// return a;
// }
/**
*
*/
@ -282,25 +164,14 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
*/
@Transactional(rollbackFor = Exception.class)
@Override
public Long audit(AuditRequest req, int status,int oldStatus) {
public Long audit(AuditRequest req, int status, int oldStatus) {
//企业端提交审核直接修改,不需要挂起等待审批
//修改项目基本信息,和是否是负面清单
List<WysmxInformation> collect1 = req.getWysmxInformations().stream().filter(x ->
"危化品等级".equals(x.getZdname())
)
.collect(Collectors.toList());
List<WysmxInformation> collect2 = req.getWysmxInformations().stream().filter(x ->
"生产火灾危险等级".equals(x.getZdname())
)
.collect(Collectors.toList());
List<WysmxInformation> collect3 = req.getWysmxInformations().stream().filter(x ->
"环境保护".equals(x.getZdname()))
.collect(Collectors.toList());
List<WysmxInformation> collect1 = req.getWysmxInformations().stream().filter(x -> "危化品等级".equals(x.getZdname())).collect(Collectors.toList());
List<WysmxInformation> collect2 = req.getWysmxInformations().stream().filter(x -> "生产火灾危险等级".equals(x.getZdname())).collect(Collectors.toList());
List<WysmxInformation> collect3 = req.getWysmxInformations().stream().filter(x -> "环境保护".equals(x.getZdname())).collect(Collectors.toList());
if (!collect1.isEmpty() && !collect2.isEmpty() && !collect3.isEmpty()) {
req.getBasicInformation().setIsFmqd(wysmxInformationService.canGoUpstairs(
collect1.get(0).getZdinfor(),
collect2.get(0).getZdinfor(),
collect3.get(0).getZdinfor()) ? 1 : 0);
req.getBasicInformation().setIsFmqd(wysmxInformationService.canGoUpstairs(collect1.get(0).getZdinfor(), collect2.get(0).getZdinfor(), collect3.get(0).getZdinfor()) ? 1 : 0);
}
//修改项目规划信息
@ -315,12 +186,12 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
otherInfoService.saveBatch(req.getProjectOtherInfos());
if (status == 2) {
if(oldStatus==1){
if (oldStatus == 1) {
userService.getAllZwUser("关于" + req.getBasicInformation().getName() + "项目,待审核的通知", req.getBasicInformation().getId(), null, null);
}
}
if (status == 3) {
if(oldStatus==2) {
if (oldStatus == 2) {
SmartDeclaration sd = new SmartDeclaration();
sd.setTyshxydm((req.getBasicInformation().getTyshxydm()));
sd.setProjectId(req.getBasicInformation().getId());
@ -344,9 +215,11 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
BasicInformationResponse basicInformationResponse = new BasicInformationResponse();
//项目基本信息
basicInformationResponse.setBasicInformation(getById(id));
BasicInformation byId = getById(id);
basicInformationResponse.setBasicInformation(byId == null ? new BasicInformation() : byId);
//项目规划信息
basicInformationResponse.setPlanInformation(planInformationService.lambdaQuery().eq(PlanInformation::getXmId, id).one());
PlanInformation one = planInformationService.lambdaQuery().eq(PlanInformation::getXmId, id).one();
basicInformationResponse.setPlanInformation(one == null ? new PlanInformation() : one);
//项目建筑信息
basicInformationResponse.setBuildingInformation(buildingInformationService.lambdaQuery().eq(BuildingInformation::getXmId, id).list());
//五要素模型信息
@ -354,7 +227,8 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
zwIdPageReq.setXmId(id);
basicInformationResponse.setWysmxResponses(wysmxInformationService.list(zwIdPageReq));
//企业入驻信息
basicInformationResponse.setQyrzInformation(qyrzInformationService.selectAll(zwIdPageReq));
QyrzInformation qyrzInformation = qyrzInformationService.selectAll(zwIdPageReq);
basicInformationResponse.setQyrzInformation(qyrzInformation == null ? new QyrzInformation() : qyrzInformation);
//项目图例
basicInformationResponse.setProjectLegendResponses(projectLegendService.page(zwIdPageReq));
//项目巡礼
@ -434,14 +308,16 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
if (bs != null) {
basicInformationResponse.setBasicInformation(bs);
} else {
basicInformationResponse.setBasicInformation(getById(id));
BasicInformation byId = getById(id);
basicInformationResponse.setBasicInformation(byId == null ? new BasicInformation() : byId);
}
//项目规划信息
PlanInformation pl = baseMapper.select2(id);
if (pl != null) {
basicInformationResponse.setPlanInformation(pl);
} else {
basicInformationResponse.setPlanInformation(planInformationService.lambdaQuery().eq(PlanInformation::getXmId, id).one());
PlanInformation one = planInformationService.lambdaQuery().eq(PlanInformation::getXmId, id).one();
basicInformationResponse.setPlanInformation(one == null ? new PlanInformation() : one);
}
//项目建筑信息
basicInformationResponse.setBuildingInformation(buildingInformationService.lambdaQuery().eq(BuildingInformation::getXmId, id).list());
@ -459,7 +335,8 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
if (qi != null) {
basicInformationResponse.setQyrzInformation(qi);
} else {
basicInformationResponse.setQyrzInformation(qyrzInformationService.selectAll(zwIdPageReq));
QyrzInformation qyrzInformation = qyrzInformationService.selectAll(zwIdPageReq);
basicInformationResponse.setQyrzInformation(qyrzInformation == null ? new QyrzInformation() : qyrzInformation);
}
//项目图例
basicInformationResponse.setProjectLegendResponses(projectLegendService.page(zwIdPageReq));
@ -478,4 +355,51 @@ public class BasicInformationServiceImpl extends ServiceImpl<BasicInformationMap
}
return basicInformationResponse;
}
/**
* chu
*/
@Override
public void generateDocument(Map<String, Object> map, String docx, OutputStream sr) throws IOException {
ClassPathResource resource = new ClassPathResource(docx);
try (InputStream is = resource.getStream();
XWPFDocument doc = new XWPFDocument(is);
) {
// 处理段落
for (XWPFParagraph paragraph : doc.getParagraphs()) {
List<XWPFRun> runs = paragraph.getRuns();
if (runs == null) continue;
for (XWPFRun run : runs) {
String text = run.getText(0);
if (text == null) continue;
// 动态替换所有模板变量
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (text.contains(entry.getKey())) {
text = text.replace(entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : "");
run.setText(text, 0);
}
}
}
}
doc.write(sr);
} catch (Exception e) {
throw new IOException("文档生成失败", e);
}
}
/**
* dict_typedict_value
*/
@Override
public String getDictLabel(String dictType, String dictValue,List<SysDictData> sysDictData) {
List<SysDictData> collect = sysDictData.stream().filter(x ->
x.getDictType().equals(dictType) && x.getDictValue().equals(dictValue))
.collect(Collectors.toList());
if (collect.isEmpty()){
return "/";
}else {
return collect.get(0).getDictLabel();
}
}
}

@ -67,9 +67,11 @@ public class XmpjqdServiceImpl extends ServiceImpl<XmpjqdMapper, Xmpjqd> impleme
List<XmpjqdOneResponse> xmpjqdOneResponses = xmpjqdMapper.selectOnePj(id);
//获取项目评价配置
pjpzService.list().forEach(x -> {
XmpjqdOneResponse xr = new XmpjqdOneResponse();
xr.setYsmc(x.getPjys());
xmpjqdOneResponses.add(xr);
if(!Objects.equals(x.getPjys(), "总投资额")){
XmpjqdOneResponse xr = new XmpjqdOneResponse();
xr.setYsmc(x.getPjys());
xmpjqdOneResponses.add(xr);
}
});
return xmpjqdOneResponses;
}

@ -0,0 +1,15 @@
name项目单片材料
投资主体简介
该项目位于ssgnq建设地点位于jsdd由xmfrdwxz统一信用代码为tyshxydm投资由sgdw施工设计单位是sjdw建设起止时间于begainTime-endTime其重点发展产业为prioritize该项目的项目标签是label整体的项目由projectLeader负责联系方式是phone。
规划信息
该项目总用地面积约zydmj平方米容积率占rjl总建筑面积为zjzmj万平方米共有jzds栋标准建筑面积为bzcjzmj平方米建筑密度为jzmd最高建筑层数zgjzcs层最高建筑高度zgjzgd米其防火等级为fhdj机动车停车位jdctcw辆和非机动车停车位fjdctcw辆。
计划总投资及建设计划
该项目投资主体性质是nature计划投资额度jhtze亿元实际总投资额ztze万人民币。
当前进展情况
目前该项目属于xzfl于 issuingTime日正式施工截至目前jsjd。
企业运营情况
目前该项目入驻企业数量共rzqys入驻企业行业类型为rzqyhylx人员数量共计rysl人入住率为rzl其中已出租面积yczmj平方米空置房屋kzczmj万平方米工业厂房平均租金gycfpjzj元/平方米*月。
存在困难问题
暂无。
Loading…
Cancel
Save