Commit 83402699 authored by 陈晓晋's avatar 陈晓晋

最新运维提交20241014

parent 3f6c11d0
......@@ -25,21 +25,17 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- hutool 常用工具类包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
......
......@@ -2,8 +2,10 @@ package com.censoft.censoftrongtong.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.censoft.censoftrongtong.domain.LedgerBuilding;
import com.censoft.censoftrongtong.domain.RiskPlan;
import com.censoft.censoftrongtong.domain.RiskPlanInherentList;
import com.censoft.censoftrongtong.domain.dto.LedgerFloorDto;
import com.censoft.censoftrongtong.domain.dto.RiskInherentListExportDto;
import com.censoft.censoftrongtong.domain.dto.RiskNotificationExportWordDto;
......@@ -12,12 +14,12 @@ import com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO;
import com.censoft.censoftrongtong.domain.vo.RiskTypeExportVO;
import com.censoft.censoftrongtong.enums.RiskPlanStatusType;
import com.censoft.censoftrongtong.service.*;
import com.censoft.censoftrongtong.utils.MyLoopRowTableRenderPolicy;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.ChartMultiSeriesRenderData;
import com.deepoove.poi.data.Charts;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
......@@ -278,10 +280,10 @@ public class RiskPlanController extends BaseController
ConfigureBuilder builder = Configure.builder();
builder.useSpringEL(true);
//执行循环策略
LoopRowTableRenderPolicy strategy = new LoopRowTableRenderPolicy();
MyLoopRowTableRenderPolicy strategy = new MyLoopRowTableRenderPolicy();
//绑定集合对象
//builder.bind("riskTypeList", strategy);
builder.bind("table", strategy);
builder.bind("listRiskPoints", strategy);
//获取模板文件流
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
assert inputStream != null;
......@@ -335,11 +337,24 @@ public class RiskPlanController extends BaseController
map.put("maxRiskRate",maxRiskRate);
map.put("totalRiskPointNum",totalRiskPointNum);
map.put("maxRiskPointName",maxRiskPointName);
// riskPointName="火灾,触电,其他伤害,高处坠落,物体打击,中毒和窒息,车辆伤害,机械伤害".split(",");
// riskPointNum=Convert.toIntArray("35,34,30,5,2,2,1,1");
if (riskPointName.length==0) {
riskPointName="无".split(",");
riskPointNum=Convert.toIntArray("0");
}
ChartMultiSeriesRenderData chart2 = Charts
.ofMultiSeries("不同事故类型对应的风险点数量统计图",riskPointName)
.addSeries("riskPoint", riskPointNum)
.create();
map.put("riskPoint",chart2);
/**
* 获取风险点列表
*/
QueryWrapper<RiskPlanInherentList> query = new QueryWrapper<>();
query.eq("plan_id",id);
List<RiskPlanInherentList> listRiskPoints = riskPlanInherentListService.list(query);
map.put("listRiskPoints",listRiskPoints);
XWPFTemplate render = XWPFTemplate.compile(inputStream, builder.build()).render(map);
// 设置强制下载不打开org.apache.poi.xwpf.usermodel.XWPFDocument
response.setContentType("application/force-download");
......
......@@ -60,6 +60,8 @@ public class RiskPlanInherentListController extends BaseController
util.exportExcel(response, list, "固有风险信息数据");
}
/**
* 获取固有风险信息详细信息
*/
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
......@@ -33,6 +34,7 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 房间id
*/
@TableField("room_id")
private Long roomId;
......@@ -45,12 +47,14 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 风险源名称
*/
@Excel(name = "风险源名称", sort = 1)
@TableField("name")
private String name;
/**
* 风险点类型
*/
@Excel(name = "风险点类型")
@TableField("point_type")
private String pointType;
......@@ -75,18 +79,21 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 风险因素
*/
@Excel(name = "风险因素",sort = 6)
@TableField("factor")
private String factor;
/**
* 准事故类型
*/
@Excel(name = "准事故类型", sort = 7)
@TableField("type")
private String type;
/**
* 风险等级
*/
@Excel(name = "风险等级",sort = 5)
@TableField("level")
private String level;
......@@ -105,6 +112,7 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 存在部位
*/
@Excel(name = "存在部位", sort = 8)
@TableField("presence_location")
private String presenceLocation;
......@@ -206,6 +214,8 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 楼栋名称
*/
@Excel(name = "楼栋名称",sort = 2)
@TableField(exist = false)
private String buildingName;
/**
......@@ -216,6 +226,7 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 楼层名称
*/
@Excel(name = "楼层名称",sort = 3)
@TableField(exist = false)
private String floorName;
......@@ -227,6 +238,7 @@ public class RiskPlanInherentList extends BaseEntity {
/**
* 房间名称
*/
@Excel(name = "房间名称",sort = 4)
@TableField(exist = false)
private String roomName;
......
......@@ -2,74 +2,75 @@ package com.censoft.censoftrongtong.domain.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class RiskPlanExportVO {
private String projectName;
private String projectName="";
private String createDeptName;
private String createDeptName="";
private String createTime;
private String createTime="";
private String createUserName;
private String createUserName="";
private String address;
private String address="";
private String buildCount;
private String buildCount="";
private String buildArea;
private String buildArea="";
private String buildName;
private String buildName="";
private String floorCount;
private String floorCount="";
private String inherentCount;
private String inherentCount="";
private String inherentType;
private String inherentType="";
private String business;
private String business="";
private String status;
private String status="";
private String inherentTypeCount;
private String inherentTypeCount="";
private String zdCount;
private String zdCount="";
private String jdCount;
private String jdCount="";
private String ybCount;
private String ybCount="";
private String dCount;
private String dCount="";
private String zjdInherentType;
private String zjdInherentType="";
private String zdRisk;
private String zdRisk="";
private String jdRisk;
private String jdRisk="";
private String riskColor;
private String riskColor="";
private String riskLevel;
private String riskLevel="";
private String zd;
private String zd="";
private String zdNum;
private String zdNum="";
private String jd;
private String jd="";
private String jdNum;
private String jdNum="";
private String yb;
private String yb="";
private String ybNum;
private String ybNum="";
private String d;
private String d="";
private String dNum;
private String dNum="";
private String advise;
private String advise="";
private List<RiskTypeExportVO> riskTypeList;
private List<RiskTypeExportVO> riskTypeList=new ArrayList<>();
}
......@@ -551,7 +551,7 @@ public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, Risk
RiskPlan riskPlan = selectRiskPlanById(id);
//初始化响应对象
RiskPlanExportVO vo = riskPlanMapper.riskPlanExport(riskPlan);
vo.setAdvise(riskPlan.getRemark());
vo.setAdvise(riskPlan.getRemark()==null?"":riskPlan.getRemark());
//风险类型
if(!StringUtils.isEmpty(vo.getZjdInherentType())){
//重大 较大风险类型
......
package com.censoft.censoftrongtong.utils;
import cn.hutool.core.collection.CollUtil;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.Rows;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.deepoove.poi.policy.TableRenderPolicy;
import com.deepoove.poi.template.ElementTemplate;
import com.deepoove.poi.template.run.RunTemplate;
import com.deepoove.poi.util.TableTools;
import org.apache.poi.xwpf.usermodel.*;
import java.util.Collection;
import java.util.List;
import java.util.stream.Stream;
public class MyLoopRowTableRenderPolicy extends LoopRowTableRenderPolicy {
/**
* 创建单元格的数量,因为每个票都不同,创建不同的单元格合并才会合并成一整行
*/
private Integer cellSize;
public MyLoopRowTableRenderPolicy() {
super();
//默认13
this.cellSize = 13;
}
public MyLoopRowTableRenderPolicy(int cellSize) {
super();
if(cellSize <= 1){
throw new RuntimeException("参数错误,只能是大于1的整数");
}
this.cellSize = cellSize;
}
@Override
public void render(ElementTemplate eleTemplate, Object data, XWPFTemplate template) {
//数据必须是集合类,否则不应该使用这个渲染器
if (data instanceof Collection && CollUtil.isEmpty((Collection) data)) {
//为空时默认补充一行无
renderEmpty(eleTemplate);
} else {
super.render(eleTemplate, data, template);
}
}
/**
* 渲染空数据,在表格钟默认增加一行无
*
* @param eleTemplate
*/
private void renderEmpty(ElementTemplate eleTemplate) {
RunTemplate runTemplate = (RunTemplate) eleTemplate;
XWPFRun run = runTemplate.getRun();
//消除标签值
run.setText("", 0);
XWPFTableCell tagCell = (XWPFTableCell) ((XWPFParagraph) run.getParent()).getBody();
//获取当前表格
XWPFTable table = tagCell.getTableRow().getTable();
//获取模板所在行,即表格标签下一行
int rowIndex = getTemplateRowIndex(tagCell) + 1;
//删除表格标签下一行
table.removeRow(rowIndex);
//插入一行
XWPFTableRow row = table.insertNewTableRow(rowIndex);
Stream.iterate(0, i -> i + 1)
.limit(cellSize).forEach(i -> row.createCell());
TableTools.mergeCellsHorizonal(table, rowIndex, 0, cellSize - 1);
try {
TableRenderPolicy.Helper.renderRow(table.getRow(rowIndex),
Rows.of("无").center().textFontFamily("宋体").textFontSize(11).create());
} catch (Exception e) {
e.printStackTrace();
}
}
private int getTemplateRowIndex(XWPFTableCell tagCell) {
XWPFTableRow tagRow = tagCell.getTableRow();
return this.getRowIndex(tagRow);
}
private int getRowIndex(XWPFTableRow row) {
List<XWPFTableRow> rows = row.getTable().getRows();
return rows.indexOf(row);
}
}
package com.censoft.censoftrongtong.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Student {
//姓名
private String name;
//学号
private String sid;
//出生日期
private String birth;
}
package com.censoft.censoftrongtong.utils;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.ChartSingleSeriesRenderData;
import com.deepoove.poi.data.Charts;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.Pictures;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
private static final String IMAGE_PATH = "C:\\Users\\xjc\\Desktop\\上传照片\\风景图\\";
public static void main(String[] args) throws IOException {
// System.out.println(Convert.toStr(1));
// System.out.println(DateUtil.now());
// System.out.println(DateUtil.ageOfNow("1987-04-23"));
//
// BufferedInputStream in = FileUtil.getInputStream("d:/source.txt");
// BufferedOutputStream out = FileUtil.getOutputStream("d:/copyTo.txt");
// long copySize = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE);
// FileReader fileReader = new FileReader("d:/copyTo.txt");
// String result = fileReader.readString();
// System.out.println(result);
//
// FileWriter writer = new FileWriter("d:/copyTo.txt");
// writer.write("test");
//
// FileReader fileReader1 = new FileReader("d:/copyTo.txt");
// String result1 = fileReader1.readString();
// System.out.println(result1);
//
// System.out.println(CollUtil.join(CollUtil.newArrayList("a,b,c,d".split(",")),"#"));
//
// List list = new ArrayList();
// list.add("");
// System.out.println(list.size());
//
// //map
// Map<String,String> map=new HashMap<String, String>();
// map.put("aa","nn");
// String ss="aa";
// if (ss.contains("a")) {
// System.out.println("闹喊");
// }
// List<String> list= ListUtil.toList("a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t".split(","));
//
//
// for (int i = 0; i < list.size(); i++) {
//
// String aa=list.get(i);
//
// if(aa.equals("a")||aa.equals("d")){
// aa=list.get(i+1);
// i++;
// }
// String bb=list.get(i+1);
// if(bb.equals("a")||bb.equals("d")){
// bb=list.get(i+1);
// i++;
// }
// i++;
// System.out.println(aa+"--"+bb);
// }
/**
* word渲染
*/
//创建行循环策略
MyLoopRowTableRenderPolicy rowTableRenderPolicy = new MyLoopRowTableRenderPolicy();
//告诉模板引擎,要在students做行循环,绑定行循环策略
Configure configure = Configure.builder().bind("students", rowTableRenderPolicy).build();
//创建目标文件
File sourceFile = new File("G:\\VideoTest\\renderwordtemplate.docx");
//构建数据
Map<String, Object> data = new HashMap();
//1.学生数据
List<Student> students = new ArrayList<>();
Student s1 = new Student("小明", "001", "2022-09-01");
Student s2 = new Student("小红", "002", "2022-09-02");
students.add(s1);
students.add(s2);
//2.设置到students字段中
data.put("students", students);
/**
* 加入echarts图
*/
ChartSingleSeriesRenderData demo1 = Charts.ofPie3D("", new String[]{"第一季度", "第二季度", "第三季度", "第四季度"})
.series("", new Number[]{0.3, 0.3, 0.2, 0.2})
.create();
data.put("demo1", demo1);
/**
* 插入图片
*/
List<Map<String, PictureRenderData>> pictureList = createPictureList(240, 240);
data.put("pictures", pictureList);
//创建输出流
OutputStream os = new FileOutputStream("G:\\VideoTest\\renderwordresult.docx");
//最终编译渲染并输出
XWPFTemplate.compile(sourceFile,configure).render(data).writeAndClose(os);
}
private static List<Map<String, PictureRenderData>> createPictureList(int width, int height) {
List<Map<String, PictureRenderData>> list = new ArrayList<>();
list.add(createPictureMap("pexels-asad-photo-maldives-1450340.jpg", width, height));
list.add(createPictureMap("pexels-bob-clark-21492.jpg", width, height));
return list;
}
private static Map<String, PictureRenderData> createPictureMap(String imageName, int width, int height) {
Map<String, PictureRenderData> map = new HashMap<>();
map.put("picture", Pictures.ofLocal(IMAGE_PATH + imageName).size(width, height).create());
return map;
}
private void setResponseHeader(HttpServletResponse response) {
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition",
"attachment;filename=user_word_" + System.currentTimeMillis() + ".docx");
}
}
......@@ -212,6 +212,13 @@
<artifactId>poi-tl</artifactId>
<version>${poi-tl.version}</version>
</dependency>
<!-- hutool 常用工具类包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
</dependencies>
</dependencyManagement>
......
package com.ruoyi.web.controller.tool;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
/**
* swagger 用户测试方法
......
......@@ -7,6 +7,7 @@ spring:
# 主库数据源
master:
url: jdbc:mysql://192.168.4.232:3306/rongtong?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# url: jdbc:mysql://localhost:3306/rongtong?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: mysql
# 从库数据源
......
......@@ -74,12 +74,13 @@ spring:
redis:
# 地址
host: 192.168.4.232
# host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
password:
# password: +16a4UYD#yD@
# 连接超时时间
timeout: 10s
lettuce:
......
......@@ -160,6 +160,11 @@
<artifactId>poi-tl</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment