refactor(文档拆分): 重构文档拆分、列表页、更改权限、删除

This commit is contained in:
yjz
2023-10-13 01:49:03 +08:00
parent e9ac8ee6bf
commit a89e2cb5bc
7 changed files with 412 additions and 0 deletions
@@ -0,0 +1,92 @@
package com.jero.modules.laws.documenttool.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 文档拆分
*/
@Api(tags="文档拆分")
@RestController
@RequestMapping("/laws/DocumentTool/documentSplit")
@Slf4j
public class DocumentSplitController {
private final IDocumentSplitService documentSplitService;
private final ISarFileSplitInfoService sarFileSplitInfoService;
public DocumentSplitController(IDocumentSplitService documentSplitService,
@Lazy ISarFileSplitInfoService sarFileSplitInfoService){
this.documentSplitService = documentSplitService;
this.sarFileSplitInfoService = sarFileSplitInfoService;
}
/**
* 分页列表查询
*
* @return Result<IPage<DocumentSplitInfo>>
*/
@AutoLog(value = "文档拆分-分页列表查询")
@ApiOperation(value="文档拆分-分页列表查询", notes="文档拆分-分页列表查询")
@GetMapping(value = "/queryByPage")
public Result<IPage<DocumentSplitInfo>> queryByPage(DocumentSplitInfo documentSplitInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
return Result.OK(documentSplitService.queryByPage(documentSplitInfo, pageNo, pageSize));
}
/**
* 更改权限
*
* @param documentSplitInfo
* @return Result<T>
*/
@AutoLog(value = "文档拆分-更改权限")
@ApiOperation(value="文档拆分-更改权限", notes="文档拆分-更改权限")
@PostMapping(value = "/updatePermissions")
public Result<T> updatePermissions(@Validated @RequestBody DocumentSplitInfo documentSplitInfo) {
documentSplitService.updatePermissions(documentSplitInfo);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @return Result<T>
*/
@AutoLog(value = "文档拆分-通过id删除Y")
@ApiOperation(value="文档拆分-通过id删除", notes="文档拆分-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestParam(name="id",required=true) String id) {
sarFileSplitInfoService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @return Result<T>
*/
@AutoLog(value = "文档拆分-批量删除Y")
@ApiOperation(value="文档拆分-批量删除", notes="文档拆分-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.sarFileSplitInfoService.deleteByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
}
@@ -0,0 +1,52 @@
package com.jero.modules.laws.documenttool.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: Entity基类
* @Author: yjz
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "ID")
private java.lang.String id;
/** 创建人 */
@ApiModelProperty(value = "创建人")
// @Excel(name = "创建人", width = 15)
private java.lang.String createBy;
/** 创建时间 */
@ApiModelProperty(value = "创建时间")
// @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date createTime;
/** 更新人 */
@ApiModelProperty(value = "更新人")
// @Excel(name = "更新人", width = 15)
private java.lang.String updateBy;
/** 更新时间 */
@ApiModelProperty(value = "更新时间")
// @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date updateTime;
/** 逻辑删除 */
@TableLogic
private Integer delFlag;
}
@@ -0,0 +1,82 @@
package com.jero.modules.laws.documenttool.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 文档拆分
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class DocumentSplitInfo extends BaseEntity{
/**标准号*/
@Excel(name = "标准号", width = 15)
@ApiModelProperty(value = "标准号")
private String serialNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private String title;
/**文件状态*/
@Excel(name = "文件状态", width = 15, dicCode = "file_type")
@Dict(dicCode = "process_manuscript")
private String fileType;
/**文件名称*/
@Excel(name = "文件名称", width = 15)
@ApiModelProperty(value = "文件名称")
private String fileName;
/**拆分状态(1:编辑中 2:已发布)*/
@Excel(name = "拆分状态", width = 15)
@ApiModelProperty(value = "拆分状态(1:编辑中 2:已发布)")
@Dict(dicCode = "split_status")
private String splitStatus;
/**编辑人*/
@Excel(name = "编辑人", width = 15)
@ApiModelProperty(value = "编辑人")
private String author;
// 拆分时间 父类createTime
/**拆分结果*/
@Excel(name = "拆分结果", width = 15)
private String splitResult;
/**文件id*/
@Excel(name = "文件id", width = 15)
@ApiModelProperty(value = "文件id")
private String fileId;
/**文档库关联id*/
@Excel(name = "文档库关联id", width = 15)
@ApiModelProperty(value = "文档库关联id")
private String connectId;
/**标准关联id*/
@Excel(name = "标准关联id", width = 15)
@ApiModelProperty(value = "标准关联id")
private String standardId;
@TableField(exist = false)
private String cut;
/**ids 搜索用*/
@ApiModelProperty(value = "标ids 搜索用")
@TableField(exist = false)
private String ids;
/**标准编号/标准名称 搜索用*/
@ApiModelProperty(value = "标准编号/标准名称 搜索用")
@TableField(exist = false)
private String serialNumberOrName;
}
@@ -0,0 +1,34 @@
package com.jero.modules.laws.documenttool.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 文档拆分
*/
public interface DocumentSplitMapper {
/**
* 文档拆分-分页列表查询
* @param page
* @param queryWrapper
* @return
*/
IPage<DocumentSplitInfo> queryByPage(Page<SarFileSplitInfoEO> page, @Param(Constants.WRAPPER) QueryWrapper<SarFileSplitInfoEO> queryWrapper);
/**
* 文档拆分-列表查询
* @param queryWrapper
* @return
*/
List<DocumentSplitInfo> queryByPage(@Param(Constants.WRAPPER) QueryWrapper<SarFileSplitInfoEO> queryWrapper);
}
@@ -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.jero.modules.laws.documenttool.mapper.DocumentSplitMapper">
<select id="queryByPage" resultType="com.jero.modules.laws.documenttool.entity.DocumentSplitInfo">
select *
from (select i.id as id,
serial_number,
(IF(length(s.standard_name) > 0, s.standard_name, d.standard_name)) title,
file_type,
file_name,
split_status,
concat(u.realname, '(', u.username, ')') as author,
i.create_time,
i.split_result,
i.create_by,
i.standard_id,
i.del_flag,
file_id,
u.username as username
from sar_file_split_info i
left join laws_domestic_standard s on i.standard_id = s.id and s.del_flag = 0
left join laws_enterprise_standard d on i.standard_id = d.id and d.del_flag = 0
left join sys_user u on i.author = u.id) t
${ew.customSqlSegment}
</select>
</mapper>
@@ -0,0 +1,36 @@
package com.jero.modules.laws.documenttool.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import java.util.List;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 文档拆分
*/
public interface IDocumentSplitService {
/**
* 文档拆分-分页列表查询
* @param documentSplitInfo
* @param pageNo
* @param pageSize
* @return
*/
IPage<DocumentSplitInfo> queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize);
/**
* 文档拆分-列表查询
* @param documentSplitInfo
* @return
*/
List<DocumentSplitInfo> queryByList(DocumentSplitInfo documentSplitInfo);
/**
* 更改权限
* @param documentSplitInfo
*/
void updatePermissions(DocumentSplitInfo documentSplitInfo);
}
@@ -0,0 +1,89 @@
package com.jero.modules.laws.documenttool.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 文档拆分
*/
@Service
@Transactional
public class DocumentSplitServiceImpl implements IDocumentSplitService {
private final DocumentSplitMapper documentSplitMapper;
private final ISarFileSplitInfoService sarFileSplitInfoService;
public DocumentSplitServiceImpl(DocumentSplitMapper documentSplitMapper,
ISarFileSplitInfoService sarFileSplitInfoService) {
this.documentSplitMapper = documentSplitMapper;
this.sarFileSplitInfoService = sarFileSplitInfoService;
}
@Override
public IPage<DocumentSplitInfo> queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) {
// 构建查询条件
QueryWrapper<SarFileSplitInfoEO> queryWrapper = getSarFileSplitInfoEOQueryWrapper(documentSplitInfo);
return documentSplitMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper);
}
@Override
public List<DocumentSplitInfo> queryByList(DocumentSplitInfo documentSplitInfo) {
// 构建查询条件
QueryWrapper<SarFileSplitInfoEO> queryWrapper = getSarFileSplitInfoEOQueryWrapper(documentSplitInfo);
return documentSplitMapper.queryByPage(queryWrapper);
}
@Override
public void updatePermissions(DocumentSplitInfo documentSplitInfo) {
LambdaUpdateWrapper<SarFileSplitInfoEO> updateWrapper = new LambdaUpdateWrapper<>();
List<String> ids;
// 获取id集合
if (StringUtils.isNotBlank(documentSplitInfo.getIds())){
ids = Arrays.asList(documentSplitInfo.getIds().split(","));
}else {
List<DocumentSplitInfo> documentSplitInfos = queryByList(documentSplitInfo);
ids = documentSplitInfos.stream().map(DocumentSplitInfo::getId).collect(Collectors.toList());
}
updateWrapper.in(SarFileSplitInfoEO::getId, ids);
updateWrapper.set(SarFileSplitInfoEO::getCreateBy, documentSplitInfo.getCreateBy());
sarFileSplitInfoService.update(updateWrapper);
}
@NotNull
private static QueryWrapper<SarFileSplitInfoEO> getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) {
QueryWrapper<SarFileSplitInfoEO> queryWrapper = new QueryWrapper<>();
// 标准编号/标准名称
if (StringUtils.isNotBlank(documentSplitInfo.getSerialNumberOrName())){
queryWrapper.and(qw -> qw
.like("serial_number", documentSplitInfo.getSerialNumberOrName())
.or()
.like("title", documentSplitInfo.getSerialNumberOrName()));
}
// 拆分状态
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getSplitStatus()), "split_status", documentSplitInfo.getSplitStatus());
// 编辑人
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getAuthor()), "username", documentSplitInfo.getAuthor());
// 逻辑删除
queryWrapper.eq("del_flag", 0);
// 排序
queryWrapper.orderByDesc("create_time");
return queryWrapper;
}
}