单片材料管理

hhw^2
何浩玮 2 months ago
parent 4524174d80
commit 5f74fe26d4

@ -63,11 +63,26 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-generator</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<!-- PDF包-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
<!-- PDF中文包-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
<build>

@ -0,0 +1,129 @@
package com.ruoyi.gysl.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itextpdf.text.DocumentException;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.gysl.entity.Mmm;
import com.ruoyi.gysl.entity.request.MmmRequest;
import com.ruoyi.gysl.service.MmmService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalDateTime;
/**
* (MmmController)
*
* @author User
*/
@Api(tags = "单片材料管理")
@RestController
@RequestMapping("gysl/mmm")
public class MmmController extends BaseController {
@Resource
private MmmService mmmService;
/**
*
*
* @param req
* @return
*/
@ApiOperation(value = "分页查询")
@GetMapping("/page")
public AjaxResult queryByPage(MmmRequest req) {
Page<Mmm> page = new Page<>();
page.setCurrent(req.getCurrent());
page.setSize(req.getSize());
return success(mmmService.page(page, req));
}
/**
*
*
* @param id
* @return
*/
@GetMapping("{id}")
@ApiOperation(value = "通过主键查询单条数据", response = Mmm.class)
public AjaxResult selectOne(@PathVariable Integer id) {
return success(this.mmmService.getById(id));
}
/**
*
*
* @param mmm
* @return
*/
@PostMapping("/edit")
@ApiOperation("修改数据")
public AjaxResult update(@RequestBody Mmm mmm) {
//上传id 上传者 上传时间
mmm.setUpdateTime(LocalDateTime.now());
mmm.setUpdateBy(getUsername());
mmm.setUpdateId(getUserId());
return success(this.mmmService.updateById(mmm));
}
/**
*
*/
@PostMapping("/add")
@ApiOperation("新增数据")
public AjaxResult insert(@RequestBody Mmm mmm) {
//创建id 创建者 创建时间
mmm.setCreateBy(getUsername());
mmm.setCreateId(getUserId());
mmm.setCreateTime(LocalDateTime.now());
return success(this.mmmService.save(mmm));
}
/**
*
*
* @param id
* @return
*/
@ApiOperation("删除数据")
@DeleteMapping("/delete/{id}")
public AjaxResult deleteById(@PathVariable Integer id) {
return success(this.mmmService.removeById(id));
}
/**
*
* @param id
* @return PDF
* @throws IOException
*/
@ApiOperation("PDF导出")
@GetMapping("/PDF/{id}")
public ResponseEntity<byte[]> exportPdf(@PathVariable Integer id) throws IOException, DocumentException {
Mmm item = mmmService.getById(id);
//路径
String path = "C:\\Users\\User\\Desktop\\pdf模板.pdf";
//PDF填充
byte[] pdfBytes = mmmService.fillPdfTemplate(path,item);
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDispositionFormData("attachment", item.getDocumentTitle() + ".pdf");
headers.setContentLength(pdfBytes.length);
return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK);
}
}

@ -0,0 +1,84 @@
package com.ruoyi.gysl.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
@TableName("monolithic_material_management")
@Data
public class Mmm {
// 主键id 自增
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@NotBlank(message = "文件标题不能为空")
@Size(max= 50,message="文件标题长度不能超过50")
@ApiModelProperty("文件标题")
private String documentTitle;
@NotBlank(message = "发布单位不能为空")
@Size(max= 50,message="发布单位长度不能超过50")
@ApiModelProperty("发布单位")
private String publishUnit;
@NotBlank(message = "发布人不能为空")
@Size(max= 50,message = "发布人长度不得超过50个字")
@ApiModelProperty("发布人")
private String publisher;
@NotBlank(message = "发布时间不能为空")
@ApiModelProperty("发布时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTime;
@Size(max = 10000 ,message = "发布内容最大支持10000字")
@ApiModelProperty("发布内容")
private String publishingContent;
//创建者id
@Excel(name = "create_id")
@ApiModelProperty("创建者id")
private Long createId;
//创建时间
@Excel(name = "create_time",dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
//创建者
@Excel(name = "create_by")
@ApiModelProperty("创建者")
private String createBy;
//更新者id
@Excel(name = "update_id")
@ApiModelProperty("更新者id")
private Long updateId;
//更新者
@Excel(name = "update_by")
@ApiModelProperty("更新者")
private String updateBy;
//更新时间
@Excel(name = "update_time",dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

@ -0,0 +1,54 @@
package com.ruoyi.gysl.entity.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
public class MmmRequest {
// 主键id 自增
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("文件标题")
private String documentTitle;
@ApiModelProperty("发布单位")
private String publishUnit;
@ApiModelProperty("发布人")
private String publisher;
@ApiModelProperty("发布时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishTime;
@ApiModelProperty("发布内容")
private String publishingContent;
@ApiModelProperty("创建者id")
private Integer createId;
@ApiModelProperty("发布开始时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishStarTime;
@ApiModelProperty("发布结束时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime publishEndTime;
@ApiModelProperty("页码")
private Long current=1L;
@ApiModelProperty("页数")
private Long size=10L;
}

@ -0,0 +1,20 @@
package com.ruoyi.gysl.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.gysl.entity.Mmm;
import com.ruoyi.gysl.entity.request.MmmRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface MmmMapper extends BaseMapper<Mmm> {
Page<Mmm> page(Page<Mmm> page, @Param("req") MmmRequest mmm);
/**
*
*
* @param page
* @param as
* @return
*/
}

@ -0,0 +1,23 @@
package com.ruoyi.gysl.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itextpdf.text.DocumentException;
import com.ruoyi.gysl.entity.Mmm;
import com.ruoyi.gysl.entity.request.MmmRequest;
import java.io.IOException;
public interface MmmService extends IService<Mmm> {
/**
*
*
* @param page
* @param mmm
* @return
*/
Page<Mmm> page(Page<Mmm> page, MmmRequest mmm);
byte[] fillPdfTemplate(String path, Mmm item) throws IOException, DocumentException;
}

@ -0,0 +1,63 @@
package com.ruoyi.gysl.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.ruoyi.gysl.entity.Mmm;
import com.ruoyi.gysl.entity.request.MmmRequest;
import com.ruoyi.gysl.mapper.MmmMapper;
import com.ruoyi.gysl.service.MmmService;
import org.springframework.stereotype.Service;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
@Service
public class MmmServiceImpl extends ServiceImpl<MmmMapper, Mmm> implements MmmService {
@Override
public Page<Mmm> page(Page<Mmm> page, MmmRequest mmm) {
return baseMapper.page(page, mmm);
}
@Override
public byte[] fillPdfTemplate(String path, Mmm item) throws IOException, DocumentException {
Map<String, String> fillData = new HashMap<>();
fillData.put("Title", item.getDocumentTitle());
fillData.put("Unit", item.getPublishUnit());
fillData.put("Publisher", item.getPublisher());
fillData.put("Time", item.getPublishTime().toString());
fillData.put("Content", item.getPublishingContent());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(Files.newInputStream(Paths.get(path)));
PdfStamper stamper = new PdfStamper(reader, outputStream);
// 获取表单字段
AcroFields form = stamper.getAcroFields();
// 填充表单字段
for (Map.Entry<String, String> entry : fillData.entrySet()) {
String fieldName = entry.getKey();
String fieldValue = entry.getValue();
form.setField(fieldName, fieldValue);
}
stamper.setFormFlattening(true);
stamper.close();
reader.close();
return outputStream.toByteArray();
}
}

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.gysl.mapper.MmmMapper">
<select id="page" resultType="com.ruoyi.gysl.entity.Mmm">
select * from monolithic_material_management
<where>
<if test="req.documentTitle != null">
AND document_title LIKE CONCAT('%', #{req.documentTitle}, '%')
</if>
<if test="req.publishTime != null">
AND publish_time = #{req.publishTime}
</if>
<if test="req.publishStarTime != null">
AND publish_time &gt;= #{req.publishStarTime}
</if>
<if test="req.publishEndTime != null">
AND publish_time &lt;= #{req.publishEndTime}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save