parent
4524174d80
commit
5f74fe26d4
@ -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 >= #{req.publishStarTime}
|
||||
</if>
|
||||
|
||||
<if test="req.publishEndTime != null">
|
||||
AND publish_time <= #{req.publishEndTime}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in new issue