代码初始化提交。

This commit is contained in:
wangzhijiang
2024-02-20 10:56:39 +08:00
parent a9ec74a912
commit baf6cdced0
22 changed files with 3550 additions and 0 deletions
@@ -0,0 +1,43 @@
package com.jero.modules.documenttool.common;
import java.util.Comparator;
import java.util.Map;
/**
* @ClassName: DirectoryComparator
* @Description:
* @Author: yjz
* @Date: 2023-11-03 11:24
* @Version: 1.0
**/
public class DirectoryComparator implements Comparator<Map<String, Object>> {
public int compare(Map<String, Object> dir1, Map<String, Object> dir2) {
String sortNumber1 = (String) dir1.get("item_num");
String sortNumber2 = (String) dir2.get("item_num");
String[] parts1 = sortNumber1.split("\\.");
String[] parts2 = sortNumber2.split("\\.");
int i = 0;
while (i < parts1.length && i < parts2.length) {
int part1 = tryParseInt(parts1[i]);
int part2 = tryParseInt(parts2[i]);
if (part1 != part2) {
return part1 - part2;
}
i++;
}
return parts1.length - parts2.length;
}
private int tryParseInt(String str) {
try {
return Integer.parseInt(str);
} catch(NumberFormatException e) {
return str.hashCode();
}
}
}
@@ -0,0 +1,98 @@
package com.jero.modules.documenttool.common;
/**
* @Author: yjz
* @Date: 2023/10/13/11:46
* @Description:
*/
public class DocumentSplitCommon {
private DocumentSplitCommon(){
}
/**
* 是否null
*/
public static final String IF_NULL_BEGIN = " IFNULL( ";
/**
* 是否null
*/
public static final String IF_NULL_END = " ,'') ";
/**
* 日期格式化
*/
public static final String DATE_FORMAT_BEGIN = " date_format( ";
/**
* 日期格式化
*/
public static final String DATE_FORMAT_END = " , '%Y-%m-%d') ";
/**
* 字符转日期
*/
public static final String STR_TO_DATE_BEGIN = "str_to_date(";
/**
* between
*/
public static final String BETWEEN = "between ";
/**
* 模糊匹配
*/
public static final String CONCAT_LIKE_BEGIN = " concat('%', '";
/**
* 模糊匹配
*/
public static final String CONCAT_LIKE_END = "', '%') ";
/**
* 包含
*/
public static final String INSTR_BEGIN = " instr(";
/**
* and
*/
public static final String AND = " and ";
/**
* or
*/
public static final String OR = " or ";
/**
* in
*/
public static final String IN = " in ";
/**
* like
*/
public static final String LIKE = " like ";
/**
* >=
*/
public static final String GT = " >= ";
/**
* <=
*/
public static final String LT = " <= ";
/**
* 翻译后缀
*/
public static final String DIC_TEXT = "_dictText";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String TEXT = "TEXT";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String IMG = "IMG";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String TABLE = "TABLE";
/**
* 拆分状态 1:编辑中 2:已发布
*/
public static final String SPLIT_STATUS1 = "1";
/**
* 拆分状态 1:编辑中 2:已发布
*/
public static final String SPLIT_STATUS2 = "2";
public static final String INTERPRETATION = "interpretation";
public static final String MEG_DEL = "删除成功!";
public static final String MEG_DEL_BATCH = "批量删除成功!";
}
@@ -0,0 +1,404 @@
package com.jero.modules.documenttool.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils;
import com.jero.modules.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.documenttool.entity.LawsDocumentSplitView;
import com.jero.modules.documenttool.entity.SplitFileInfo;
import com.jero.modules.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.system.vo.IdMapBody;
import com.jero.modules.system.vo.IdsMapBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @Author: yjz
* @Date: 2023/10/12/23:03
* @Description: 标准拆分
*/
@Api(tags="标准拆分")
@ApiSupport(order = 302)
@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
*/
@AutoLog(value = "标准拆分-分页列表查询")
@ApiOperation(value="标准拆分-分页列表查询", notes="标准拆分-分页列表查询")
@GetMapping(value = "/queryByPage")
@ApiOperationSupport(order = 1)
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));
}
/**
* 标准拆分-拆分已入库文本
*
* @return
*/
@AutoLog(value = "标准拆分-拆分已入库文本分页列表查询")
@ApiOperation(value="标准拆分-拆分已入库文本分页列表查询", notes="标准拆分-拆分已入库文本分页列表查询")
@GetMapping(value = "/querySplitFileInfoByPage")
@ApiOperationSupport(order = 2)
public Result<IPage<SplitFileInfo>> querySplitFileInfoByPage(SplitFileInfo splitFileInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
return Result.OK(documentSplitService.querySplitFileInfoByPage(splitFileInfo, pageNo, pageSize));
}
/**
* 标准拆分-查看
*
* @return
*/
@AutoLog(value = "标准拆分-查看")
@ApiOperation(value="标准拆分-查看", notes="标准拆分-查看")
@PostMapping(value = "/queryView")
@ApiOperationSupport(order = 3)
public Result<LawsDocumentSplitView> queryView(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
return Result.OK(documentSplitService.queryView(parameter));
}
/**
* 标准拆分-通过标准拆分id查询目录树形结构
*
* @return
*/
@AutoLog(value = "标准拆分-通过标准拆分id查询目录树形结构")
@ApiOperation(value="标准拆分-通过标准拆分id查询目录树形结构", notes="标准拆分-通过标准拆分id查询目录树形结构")
@GetMapping(value = "/queryTreeMenuByInfoId")
@ApiOperationSupport(order = 4)
public Result<List<SarFileSplitMenuEO>> queryTreeMenuByInfoId(@ApiParam("标准拆分id") String infoId) {
return Result.OK(documentSplitService.queryTreeMenuByInfoId(infoId));
}
/**
* 更改权限
*
* @param documentSplitInfo
* @return
*/
@AutoLog(value = "标准拆分-更改权限")
@ApiOperation(value="标准拆分-更改权限", notes="标准拆分-更改权限")
@PostMapping(value = "/updatePermissions")
@ApiOperationSupport(order = 5)
public Result<T> updatePermissions(@Validated @RequestBody DocumentSplitInfo documentSplitInfo) {
documentSplitService.updatePermissions(documentSplitInfo);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 拆分
*
* @param sarFileSplitInfoEO
* @return
*/
@AutoLog(value = "标准拆分-拆分")
@ApiOperation(value="标准拆分-拆分", notes="标准拆分-拆分")
@PostMapping(value = "/split")
@ApiOperationSupport(order = 6)
public Result<T> split(@Validated @RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) {
documentSplitService.add(sarFileSplitInfoEO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 发布
*
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分-发布")
@ApiOperation(value="标准拆分-发布", notes="标准拆分-发布")
@PostMapping(value = "/publish")
@ApiOperationSupport(order = 7)
public Result<T> publish(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
documentSplitService.publish(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 撤回
*
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分-撤回")
@ApiOperation(value="标准拆分-撤回", notes="标准拆分-撤回")
@PostMapping(value = "/revocation")
@ApiOperationSupport(order = 8)
public Result<T> revocation(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
documentSplitService.revocation(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 通过id删除
*
* @return
*/
@AutoLog(value = "标准拆分-通过id删除")
@ApiOperation(value="标准拆分-通过id删除", notes="标准拆分-通过id删除")
@PostMapping(value = "/delete")
@ApiOperationSupport(order = 9)
public Result<T> delete(@RequestBody IdMapBody map){
if (StringUtils.isBlank(map.getId())) {
return Result.error("请选择数据!");
}
documentSplitService.isHorizontalOverstep(map.getId());
documentSplitService.checkOutOperation(Collections.singletonList(map.getId()));
sarFileSplitInfoService.deleteById(map.getId());
return Result.OK(MessageUtils.getMessage(ResultCommon.SUCCESSFULLY_DELETED));
}
/**
* 批量删除
*
* @return
*/
@AutoLog(value = "标准拆分-批量删除")
@ApiOperation(value="标准拆分-批量删除", notes="标准拆分-批量删除")
@PostMapping(value = "/deleteBatch")
@ApiOperationSupport(order = 10)
public Result<T> deleteBatch(@RequestBody IdsMapBody map) {
if (StringUtils.isBlank(map.getIds())) {
return Result.error("请选择数据!");
}
List<String> list = Arrays.asList(map.getIds().split(","));
documentSplitService.isHorizontalOverstep(map.getIds());
documentSplitService.checkOutOperation(list);
sarFileSplitInfoService.deleteByIds(list);
return Result.OK(MessageUtils.getMessage(ResultCommon.SUCCESSFULLY_DELETED_IN_BULK));
}
/**
* 标准拆分详情-分页列表查询
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分详情-分页列表查询")
@ApiOperation(value = "标准拆分详情-分页列表查询")
@PostMapping("/queryDocumentSplitDetail")
@ApiOperationSupport(order = 11)
public Result<IPage<Map<String,Object>>> queryDocumentSplitDetail(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
try {
IPage<Map<String, Object>> data = documentSplitService.queryDocumentSplitDetail(parameter);
return Result.OK(data);
} catch (JeroBootException e){
return Result.error(e.getMessage());
} catch (Exception e){
return Result.error(MessageUtils.getMessage(ResultCommon.ERROR));
}
}
/**
* 标准拆分详情-根据id查询
* @param id
* @return
*/
@AutoLog(value = "标准拆分详情-根据id查询")
@ApiOperation(value = "标准拆分详情-根据id查询")
@GetMapping("/queryDocumentSplitDetailById")
@ApiOperationSupport(order = 12)
public Result<Map<String,Object>> queryDocumentSplitDetailById(String id) {
return Result.OK(documentSplitService.queryDocumentSplitDetailById(id));
}
/**
* 标准拆分详情-条目信息列表
* @param id
* @return
*/
@AutoLog(value = "标准拆分详情-条目信息列表")
@ApiOperation(value = "标准拆分详情-条目信息列表")
@GetMapping("/queryItemsValList")
@ApiOperationSupport(order = 12)
public Result<List<SarFileSplitItemsValEO>> queryItemsValList(String id) {
return Result.OK(documentSplitService.queryItemsValList(id));
}
/**
* 标准拆分详情-条文解读列表
* @param id
* @return
*/
@AutoLog(value = "标准拆分详情-条文解读列表")
@ApiOperation(value = "标准拆分详情-条文解读列表")
@GetMapping("/queryInterpretationArticlesList")
@ApiOperationSupport(order = 13)
public Result<List<SarFileSplitItemsValEO>> queryInterpretationArticlesList(String id) {
return Result.OK(documentSplitService.queryInterpretationArticlesList(id));
}
/**
* 标准拆分详情-编辑
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分详情-编辑")
@ApiOperation(value = "标准拆分详情-编辑")
@PostMapping("/editDocumentSplitDetail")
@ApiOperationSupport(order = 14)
public Result<T> editDocumentSplitDetail(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
documentSplitService.editDocumentSplitDetail(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-批量编辑
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分详情-批量编辑")
@ApiOperation(value = "标准拆分详情-批量编辑")
@PostMapping("/editBatchDocumentSplitDetail")
@ApiOperationSupport(order = 15)
public Result<T> editBatchDocumentSplitDetail(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
try {
documentSplitService.editBatchDocumentSplitDetail(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
} catch (JeroBootException e){
return Result.error(e.getMessage());
} catch (Exception e){
return Result.error(MessageUtils.getMessage(ResultCommon.ERROR));
}
}
/**
* 标准拆分详情-删除
*
* @return
*/
@AutoLog(value = "标准拆分详情-删除")
@ApiOperation(value="标准拆分详情-删除", notes="标准拆分详情-删除")
@PostMapping(value = "/deleteDocumentSplitDetail")
@ApiOperationSupport(order = 16)
public Result<T> deleteDocumentSplitDetail(@RequestBody Map<String, Object> parameter) {
documentSplitService.deleteDocumentSplitDetail(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-批量删除
*
* @return
*/
@AutoLog(value = "标准拆分详情-批量删除")
@ApiOperation(value="标准拆分详情-批量删除", notes="标准拆分详情-批量删除")
@PostMapping(value = "/deleteBatchDocumentSplitDetail")
@ApiOperationSupport(order = 17)
public Result<T> deleteBatchDocumentSplitDetail(@RequestBody Map<String, Object> parameter) {
documentSplitService.deleteBatchDocumentSplitDetail(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-合并条款
* @param parameter
* @return
*/
@AutoLog(value = "标准拆分详情-合并条款")
@ApiOperation(value = "标准拆分详情-合并条款")
@PostMapping("/mergeDocumentSplitDetail")
@ApiOperationSupport(order = 18)
public Result<T> mergeDocumentSplitDetail(@RequestBody @ApiParam("标签管理") Map<String, Object> parameter) {
documentSplitService.mergeDocumentSplitDetail(parameter);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-复制
* @param id
* @return
*/
@AutoLog(value = "标准拆分详情-复制")
@ApiOperation(value = "标准拆分详情-复制")
@GetMapping("/copyDocumentSplitDetail")
@ApiOperationSupport(order = 19)
public Result<T> copyDocumentSplitDetail(String id) {
documentSplitService.copyDocumentSplitDetail(id);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-批量复制
* @param ids
* @return
*/
@AutoLog(value = "标准拆分详情-批量复制")
@ApiOperation(value = "标准拆分详情-批量复制")
@GetMapping("/copyBatchDocumentSplitDetail")
@ApiOperationSupport(order = 20)
public Result<T> copyBatchDocumentSplitDetail(String ids) {
documentSplitService.copyBatchDocumentSplitDetail(ids);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准拆分详情-模板下载
* @param request
* @param response
*/
@AutoLog(value = "标准拆分详情-模板下载")
@ApiOperation(value = "标准拆分详情-模板下载")
@GetMapping("/downloadImportTemplate")
@ApiOperationSupport(order = 21)
public void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response) {
documentSplitService.downloadImportTemplate(request, response);
}
/**
* 标准拆分详情-导出
* @param request
* @param response
* @AutoLog(value = "标准拆分详情-导出")
* @ApiOperation(value = "标准拆分详情-导出")
* @GetMapping("/exportDocumentSplitDetail")
* public void exportDocumentSplitDetail(@RequestBody Map<String, Object> parameter, HttpServletRequest request, HttpServletResponse response) {
* documentSplitService.exportDocumentSplitDetail(parameter, request, response);
* }
*/
}
@@ -0,0 +1,64 @@
package com.jero.modules.documenttool.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
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 String id;
/** 创建人 */
@ApiModelProperty(value = "创建人")
// @Excel(name = "创建人", width = 15)
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private String createBy;
/** 创建人 翻译 */
@ApiModelProperty(value = "创建人 翻译")
@TableField(exist = false)
private String createByDictText;
/** 创建时间 */
@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)
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private String updateBy;
/** 更新人 翻译 */
@ApiModelProperty(value = "更新人 翻译")
@TableField(exist = false)
private String updateByDictText;
/** 更新时间 */
@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,102 @@
package com.jero.modules.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 {
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**标准号*/
@Excel(name = "标准号", width = 15)
@ApiModelProperty(value = "标准号")
private String serialNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private String title;
/**英文标题*/
@Excel(name = "英文标题", width = 15)
@ApiModelProperty(value = "英文标题")
private String titleEn;
/**文件状态*/
@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)
@ApiModelProperty(value = "拆分结果")
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;
/**发布前id*/
@Excel(name = "发布前id", width = 15)
@ApiModelProperty(value = "发布前id")
private String publishBeforeId;
@TableField(exist = false)
private String cut;
/**ids 搜索用*/
@ApiModelProperty(value = "标ids 搜索用")
@TableField(exist = false)
private String ids;
/**标准编号/标准名称 搜索用*/
@ApiModelProperty(value = "标准编号/标准名称 搜索用")
@TableField(exist = false)
private String serialNumberOrName;
/**标准标识(1:国内,3:企业)*/
@ApiModelProperty(value = "标准标识(1:国内,3:企业)")
@TableField(exist = false)
@Dict(dicCode = "split_standard_source")
private String splitStandardSource;
}
@@ -0,0 +1,140 @@
package com.jero.modules.documenttool.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.*;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author: yjz
* @Date: 2023/10/15/19:34
* @Description:
*/
@Data
@TableName("laws_document_split")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="laws_document_split对象", description="文档拆分")
public class LawsDocumentSplit extends BaseEntity {
/**
* 条文号
*/
@ApiModelProperty("条文号")
private String itemNum;
/**
* 条文标题
*/
@ApiModelProperty("条文标题")
private String itemTitle;
/**
* 条文内容
*/
@ApiModelProperty("条文内容")
private String itemContent;
/**
* 展示顺序
*/
@ApiModelProperty("展示顺序")
private String sortNumber;
/**
* 拆分目录id
*/
@ApiModelProperty("拆分目录id")
private String menuId;
/**
* 技术领域
*/
@ApiModelProperty("技术领域")
private String technicalField;
/**
* 信息类别
*/
@ApiModelProperty("信息类别")
private String infoType;
/**
* 法规要求类型
*/
@ApiModelProperty("法规要求类型")
private String lawsRequireType;
/**
* 功能分类
*/
@ApiModelProperty("功能分类")
private String functionClassification;
/**
* 功能专业
*/
@ApiModelProperty("功能专业")
private String functionProfessional;
/**
* 功能分组编码
*/
@ApiModelProperty("功能分组编码")
private String functionGroupCode;
/**
* 功能分组名称
*/
@ApiModelProperty("功能分组名称")
private String functionGroupName;
/**
* 新认证实施时间
*/
@ApiModelProperty("新认证实施时间")
private String newCerImplementDate;
/**
* 已认证实施时间
*/
@ApiModelProperty("已认证实施时间")
private String cerImplementDate;
/**
* 新注册实施时间
*/
@ApiModelProperty("新注册实施时间")
private String newRegisterImplementDate;
/**
* 适用车型
*/
@ApiModelProperty("适用车型")
private String applications;
/**
* 动力类型
*/
@ApiModelProperty("动力类型")
private String dynamicType;
/**
* 适用零部件
*/
@ApiModelProperty("适用零部件")
private String applicableComponents;
/**
* 条文解读
*/
@ApiModelProperty("条文解读")
private String interpretationArticles;
/**
* 拆分信息记录id
*/
@ApiModelProperty("拆分信息记录id")
private String infoId;
}
@@ -0,0 +1,34 @@
package com.jero.modules.documenttool.entity;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @Author: yjz
* @Date: 2023/10/18/18:01
* @Description:
*/
@Data
public class LawsDocumentSplitView {
/**
* 文档拆分信息
*/
@ApiModelProperty(value = "文档拆分信息")
private DocumentSplitInfo documentSplitInfo;
/**
* 目录
*/
@ApiModelProperty(value = "目录")
private List<SarFileSplitMenuEO> sarFileSplitMenuEO;
/**
* 文档拆分详情信息
*/
@ApiModelProperty(value = "文档拆分详情信息")
private List<Map<String, Object>> documentSplitDetail;
}
@@ -0,0 +1,84 @@
package com.jero.modules.documenttool.entity;
import io.swagger.annotations.*;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 条目信息
*
* @author yjz
* @since 2023-10-19 00:07:32
*/
@Data
public class SarFileSplitItemsVal implements Serializable {
private static final long serialVersionUID = -57474928779384395L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 所属部门
*/
@ApiModelProperty("所属部门")
private String sysOrgCode;
/**
* 条款id
*/
@ApiModelProperty("条款id")
private String itemId;
/**
* 类型
*/
@ApiModelProperty("类型")
private String type;
/**
* 条目内容
*/
@ApiModelProperty("条目内容")
private String itemContent;
/**
* 排序
*/
@ApiModelProperty("排序")
private Integer displaySeq;
/**
* 是否有效
*/
@ApiModelProperty("是否有效")
private Integer validFlag;
/**
* 图片
*/
@ApiModelProperty("图片")
private String imgName;
/**
* 用于前端数组排序
*/
@ApiModelProperty("用于前端数组排序")
private Integer indexItem;
/**
* 创建日期
*/
@ApiModelProperty("创建日期")
private Date creationTime;
/**
* 更新人
*/
@ApiModelProperty("更新人")
private String modifyUser;
/**
* 更新日期
*/
@ApiModelProperty("更新日期")
private Date modifyTime;
/**
* 创建人
*/
@ApiModelProperty("创建人")
private String creationUser;
}
@@ -0,0 +1,83 @@
package com.jero.modules.documenttool.entity;
import io.swagger.annotations.*;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 目录
*
* @author yjz
* @since 2023-10-18 22:21:48
*/
@Data
public class SarFileSplitMenu implements Serializable {
private static final long serialVersionUID = 214967115522705210L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 所属部门
*/
@ApiModelProperty("所属部门")
private String sysOrgCode;
/**
* 信息记录表id
*/
@ApiModelProperty("信息记录表id")
private String infoId;
/**
* 目录名称
*/
@ApiModelProperty("目录名称")
private String name;
/**
* 父节点id
*/
@ApiModelProperty("父节点id")
private String parentId;
/**
* 排序序号
*/
@ApiModelProperty("排序序号")
private Integer displaySeq;
/**
* 是否有效
*/
@ApiModelProperty("是否有效")
private Integer validFlag;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remarks;
/**
* 条款名称
*/
@ApiModelProperty("条款名称")
private String itemName;
/**
* 创建人
*/
@ApiModelProperty("创建人")
private String creationUser;
/**
* 创建日期
*/
@ApiModelProperty("创建日期")
private Date creationTime;
/**
* 更新人
*/
@ApiModelProperty("更新人")
private String modifyUser;
/**
* 更新日期
*/
private Date modifyTime;
}
@@ -0,0 +1,73 @@
package com.jero.modules.documenttool.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.util.Date;
/**
* @ClassName: SplitFileInfo
* @Description:
* @Author: yjz
* @Date: 2023-11-14 11:29
* @Version: 1.0
**/
@Data
public class SplitFileInfo {
@Excel(name = "id")
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "文件名称")
@ApiModelProperty(value = "文件名称")
private String fileName;
@Excel(name = "文件地址")
@ApiModelProperty(value = "文件地址")
private String url;
@Excel(name = "标准文件类型")
@Dict(dicCode = "process_manuscript")
@ApiModelProperty(value = "标准文件类型")
private String standardFileType;
@ApiModelProperty(value = "标准id")
@Excel(name = "标准id")
private String standardId;
@ApiModelProperty(value = "标准编号")
@Excel(name = "标准编号")
private String standardNo;
@ApiModelProperty(value = "创建人")
@Excel(name = "创建人")
private String createBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "创建日期")
private Date createTime;
@ApiModelProperty(value = "更新人")
private String updateBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
@TableField(exist = false)
@ApiModelProperty(value = "来源")
@Dict(dicCode = "standard_source")
private String origin;
@TableField(exist = false)
@ApiModelProperty(value = "标准号")
private String standardNumber;
@TableField(exist = false)
@ApiModelProperty(value = "标准名称")
private String standardName;
}
@@ -0,0 +1,44 @@
package com.jero.modules.documenttool.factory;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @Author: yjz
* @Date: 2023/10/13/17:03
* @Description: 工厂设计模式
*/
public class ConditionMapFactory {
private ConditionMapFactory(){
}
/**
* 静态map容器
*/
private static Map<String, AbstractConditionBase> strategyMap = new HashMap<>();
/**
* 获取对应实现类
* @param key:键
* @return AbstractConditionBase:具体实现类
*/
public static AbstractConditionBase getInvokeStrategy(String key){
return strategyMap.get(key);
}
/**
* 注册到工厂方法
* @param key:键
* @param abstractConditionBase:具体实现类
*/
public static void register(String key, AbstractConditionBase abstractConditionBase){
if (StringUtils.isEmpty(key) || Objects.isNull(abstractConditionBase)){
return;
}
strategyMap.put(key, abstractConditionBase);
}
}
@@ -0,0 +1,48 @@
package com.jero.modules.documenttool.handler;
import com.jero.common.system.vo.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Author: yjz
* @Date: 2023/10/13/17:01
* @Description: 抽象类
*/
@Slf4j
public abstract class AbstractConditionBase {
private static final String EXPLAIN = "抽象类";
/**
* 构建查询条件
* @return 拼接完成的sql
*/
public String buildCondition(String fieldName, String value){
log.info("{}构建查询条件字段名:{}, 参数值{}", EXPLAIN, fieldName, value);
return "";
}
/**
* 构建修改字段
* @return 拼接完成的sql
*/
public String buildUpdate(String fieldName, String value){
log.info("{}构建修改字段字段名:{}, 参数值{}", EXPLAIN, fieldName, value);
return "";
}
/**
* 更新人、更新时间填充
* @return
*/
public String getUpdateByAndUpdateTime() {
// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// return " update_by = " + "'" + sysUser.getUsername() + "'" + "," +
// "update_time = " + FieldCommon.STR_TO_DATE_PREFIX + dateFormat.format(new Date()) + "','%Y-%m-%d %H:%i:%s')";
return "";
}
}
@@ -0,0 +1,83 @@
package com.jero.modules.documenttool.handler.impl;
import com.jero.modules.documenttool.common.DocumentSplitCommon;
import com.jero.modules.documenttool.factory.ConditionMapFactory;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: 多日期查询
*/
@Component
public class DateManyConditionImpl extends AbstractConditionBase {
/**
* 实现逻辑,多日期字符串字段(存储时前端从小到大排好序(必须))
* 逗号拆分获取首位和末尾日期,来分别匹配是否符合查询参数的两个日期区间
* 实现sql参考:(代码拼接中加入了date_format来格式化日期)
* select
* epr.*
* from
* event_plan_record epr
* where
* substring_index('epr.realStartTime', ',', 1) BETWEEN #{startDate} AND #{endDate}
* or substring_index('epr.realStartTime', ',', -1) BETWEEN #{startDate} AND #{endDate}
* or #{startDate} BETWEEN substring_index('epr.realStartTime', ',', 1) AND substring_index('epr.realStartTime', ',', -1)
* or #{endDate} BETWEEN substring_index('epr.realStartTime', ',', 1) AND substring_index('epr.realStartTime', ',', -1)
* @param fieldName
* @param value
* @return
*/
@Override
public String buildCondition(String fieldName, String value){
// 多日期查询
String substringBegin = "SUBSTRING_INDEX(";
String substringEndFirst = ", ',', 1)";
String substringEndLast = ", ',', -1)";
String dateMany = DocumentSplitCommon.AND;
if (value.contains(",")) {
// 范围查询
String[] split = value.split(",");
dateMany += "(";
String startDate = DocumentSplitCommon.DATE_FORMAT_BEGIN + "'" + split[0] + "'" + DocumentSplitCommon.DATE_FORMAT_END;
String endDate = DocumentSplitCommon.DATE_FORMAT_BEGIN + "'" + split[1] + "'" + DocumentSplitCommon.DATE_FORMAT_END;
dateMany += "(" +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndFirst + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.BETWEEN + startDate + DocumentSplitCommon.AND + endDate +
")" +
DocumentSplitCommon.OR +
"(" +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndLast + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.BETWEEN + startDate + DocumentSplitCommon.AND + endDate +
")" +
DocumentSplitCommon.OR +
"(" +
startDate + DocumentSplitCommon.BETWEEN + DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndFirst + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.AND + DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndLast + DocumentSplitCommon.DATE_FORMAT_END +
")" +
DocumentSplitCommon.OR +
"(" +
endDate + DocumentSplitCommon.BETWEEN + DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndFirst + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.AND + DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEndLast + DocumentSplitCommon.DATE_FORMAT_END +
")" + ")";
} else {
dateMany += fieldName + DocumentSplitCommon.LIKE + DocumentSplitCommon.CONCAT_LIKE_BEGIN + value + DocumentSplitCommon.CONCAT_LIKE_END;
}
return dateMany;
}
@Override
public String buildUpdate(String fieldName, String value){
return fieldName + " = " + "'" + value +"'";
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
ConditionMapFactory.register(LawsFieldTypeEnum.DATE_MANY.getValue(), this);
}
}
@@ -0,0 +1,53 @@
package com.jero.modules.documenttool.handler.impl;
import com.jero.modules.documenttool.common.DocumentSplitCommon;
import com.jero.modules.documenttool.factory.ConditionMapFactory;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: 单日期查询
*/
@Component
public class DateSingleConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 单日期查询
String dateSingle = DocumentSplitCommon.AND;
if (value.contains(",")) {
// 范围查询
String[] split = value.split(",");
String startDate = split[0];
String endDate = split[1];
dateSingle +=
DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.GT + "'" + startDate + "'" +
DocumentSplitCommon.AND +
DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.LT + "'" + endDate + "'";
} else {
// 等值查询
dateSingle += DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + "='" + value + "'";
}
return dateSingle;
}
@Override
public String buildUpdate(String fieldName, String value){
// return fieldName + " = " + "'" + FieldCommon.STR_TO_DATE_PREFIX + value + FieldCommon.STR_TO_DATE_SUFFIX +"'";
return "";
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
ConditionMapFactory.register(LawsFieldTypeEnum.DATE_SINGLE.getValue(), this);
}
}
@@ -0,0 +1,45 @@
package com.jero.modules.documenttool.handler.impl;
import com.jero.modules.documenttool.common.DocumentSplitCommon;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: 下拉框查询
*/
@Component
public class InConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 下拉框查询
StringBuilder in = new StringBuilder();
in.append(DocumentSplitCommon.AND).append("((");
List<String> list = Arrays.asList(value.split(","));
for (String s : list) {
in.append(DocumentSplitCommon.INSTR_BEGIN).append(fieldName).append(",").append("'").append(s).append("'").append(")");
if (list.indexOf(s) != list.size() -1){
in.append(DocumentSplitCommon.OR);
}
}
in.append("))");
return in.toString();
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
// for (String item : FieldCommon.TYPE_LIKE_IN) {
// ConditionMapFactory.register(item, this);
// }
}
}
@@ -0,0 +1,34 @@
package com.jero.modules.documenttool.handler.impl;
import com.jero.modules.documenttool.common.DocumentSplitCommon;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:04
* @Description: 模糊查询
*/
@Component
public class LikeConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 模糊查询
return DocumentSplitCommon.AND + fieldName + DocumentSplitCommon.LIKE +
DocumentSplitCommon.CONCAT_LIKE_BEGIN + value + DocumentSplitCommon.CONCAT_LIKE_END;
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
// for (String item : FieldCommon.TYPE_LIKE) {
// ConditionMapFactory.register(item, this);
// }
}
}
@@ -0,0 +1,21 @@
package com.jero.modules.documenttool.handler.impl;
import com.jero.modules.documenttool.handler.AbstractConditionBase;
import lombok.extern.slf4j.Slf4j;
/**
* @Author: yjz
* @Date: 2023/10/15/15:19
* @Description: 普通
*/
@Slf4j
public class UniversalImpl extends AbstractConditionBase {
public UniversalImpl(){
log.info("");
}
@Override
public String buildUpdate(String fieldName, String value){
return fieldName + " = " + "'" + value + "'";
}
}
@@ -0,0 +1,212 @@
package com.jero.modules.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.documenttool.entity.*;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @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);
/**
* 文档拆分详情-分页列表查询
* @param mapPage
* @param selectColumn
* @param selectCondition
* @return
*/
IPage<Map<String, Object>> queryDocumentSplitDetail(Page<Map<String, Object>> mapPage, @Param("selectColumn") String selectColumn, @Param("selectCondition") String selectCondition);
/**
* 文档拆分详情-列表查询
* @param selectColumn
* @param selectCondition
* @return
*/
List<Map<String, Object>> queryDocumentSplitDetail(@Param("selectColumn") String selectColumn, @Param("selectCondition") String selectCondition);
/**
* 文档拆分详情-编辑
* @param updateSet
* @param updateCondition
* @return int
*/
int editDocumentSplitDetail(@Param("updateSet") String updateSet, @Param("updateCondition") String updateCondition);
/**
* 条目查询根据itemId集合
* @param itemIdList
* @return
*/
List<SarFileSplitItemsValEO> queryItemsValByItemIds(@Param("itemIdList") List<String> itemIdList);
/**
* 条目查询根据itemId
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/**
* 条目删除根据itemId
* @param itemId
* @return
*/
int deleteItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/**
* 目录删除根据menuId集合
* @param menuIdList
*/
int sarFileSplitMenuDeleteByIdList(@Param("menuIdList") List<String> menuIdList);
/**
* 文档拆分详情-删除
* @param id
*/
int deleteDocumentSplitDetail(@Param("id") String id);
/**
* 文档拆分详情-批量删除
* @param updateCondition
*/
int deleteBatchDocumentSplitDetail(@Param("updateCondition") String updateCondition);
/**
* 条目批量新增
* @param valList
* @return
*/
int addBatchItemsVal(@Param("valList") List<SarFileSplitItemsValEO> valList);
/**
* 文档拆分详情通过id查询
* @param id
*/
Map<String, Object> queryLawsDocumentSplitById(@Param("id") String id);
/**
* 文档拆分详情通过id范围查询
* @param id
*/
Map<String, Object> queryLawsDocumentSplitInId(@Param("idList") String id);
/**
* 文档拆分详情-新增
* @param insertField
* @param insertValue
* @return
*/
int insertLawsDocumentSplit(@Param("insertField") String insertField, @Param("insertValue") List<String> insertValue);
/**
* 条目批量删除根据itemId
* @param itemIds
*/
int deleteItemsValByItemIds(@Param("itemIds") String itemIds, @Param("type") String type);
/**
* 文档拆分根据id查询
* @param id
*/
DocumentSplitInfo queryDocumentSplitInfoById(@Param("id") String id);
/**
* 文档拆分新增
* @param newInfo
*/
int insertDocumentSplitInfo(DocumentSplitInfo newInfo);
/**
* 目录根据id查询
* @param infoId
* @return
*/
List<SarFileSplitMenu> querySarFileSplitMenuByInfoId(@Param("infoId") String infoId);
/**
* 目录批量新增
* @param oldMenuList
* @return
*/
int insertBatchSarFileSplitMenuByInfoId(@Param("entities") List<SarFileSplitMenu> oldMenuList);
/**
* 文档拆分详情根据infoid查询
* @param infoId
* @return
*/
List<Map<String, Object>> queryLawsDocumentSplitByInfoId(@Param("infoId") String infoId);
/**
* 条目信息根据itemId查询
* @param itemId
* @return
*/
List<SarFileSplitItemsVal> querySarFileSplitItemsValByItemId(@Param("itemId") String itemId);
/**
* 条目信息批量新增
* @param sarFileSplitItemsVal
*/
int insertSarFileSplitItemsVal(@Param("entities") List<SarFileSplitItemsVal> sarFileSplitItemsVal);
/**
* 文档拆分详情根据id查询
* @param id
* @return
*/
Map<String, Object> queryDocumentSplitDetailById(String id);
/**
* 文档拆分-拆分已入库文本分页列表查询
* @param queryWrapper
* @param page
* @return
*/
IPage<SplitFileInfo> querySplitFileInfoByPage(@Param(Constants.WRAPPER) QueryWrapper<SplitFileInfo> queryWrapper, IPage<SplitFileInfo> page);
/**
* 条文表-根据id集合查询
* @param listMapIdList
*/
List<SarFileSplitItemsEO> querySarFileSplitItemsByIds(@Param("idList") List<String> listMapIdList);
/**
* 文档拆分详情通过idList范围查询
* @param idList
*/
List<LawsDocumentSplit> queryLawsDocumentSplitInIds(List<String> idList);
/**
* 文档拆分详情-查询menuId分组数量
* @param infoId
*/
List<String> queryLawsDocumentSplitGroupByMenuId(@Param("infoId") String infoId);
}
@@ -0,0 +1,12 @@
package com.jero.modules.documenttool.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.documenttool.entity.LawsDocumentSplit;
/**
* @Author: yjz
* @Date: 2023/10/15/19:32
* @Description:
*/
public interface LawsDocumentSplitMapper extends BaseMapper<LawsDocumentSplit> {
}
@@ -0,0 +1,275 @@
<?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.documenttool.mapper.DocumentSplitMapper">
<insert id="addBatchItemsVal">
insert into SAR_FILE_SPLIT_ITEMS_VAL
(id, type, item_id, valid_flag, creation_user, creation_time, modify_time, modify_user, display_seq, img_name, item_content, index_item)
values
<foreach collection="valList" item="item" index="index" separator=",">(
#{item.id, jdbcType=VARCHAR}, #{item.type, jdbcType=VARCHAR},
#{item.itemId, jdbcType=VARCHAR},
#{item.validFlag, jdbcType=INTEGER}, #{item.creationUser, jdbcType=VARCHAR},
#{item.creationTime, jdbcType=TIMESTAMP}, #{item.modifyTime, jdbcType=TIMESTAMP},
#{item.modifyUser, jdbcType=VARCHAR}, #{item.displaySeq, jdbcType=INTEGER},
#{item.imgName, jdbcType=INTEGER},
#{item.itemContent, jdbcType=CLOB},
#{item.indexItem, jdbcType=INTEGER})
</foreach>
</insert>
<insert id="insertLawsDocumentSplit">
insert into laws_document_split(${insertField})
values
<foreach item='value' index='index' collection='insertValue' open='(' separator=',' close=')'>
#{value}
</foreach>
</insert>
<insert id="insertDocumentSplitInfo">
insert into sar_file_split_info(id, create_by, create_time, update_by, update_time, sys_org_code, serial_number, title, file_type, file_name, split_result, file_id, connect_id, title_en, author, split_status, standard_id, del_flag, publish_before_id)
values (#{id}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{sysOrgCode}, #{serialNumber}, #{title}, #{fileType}, #{fileName}, #{splitResult}, #{fileId}, #{connectId}, #{titleEn}, #{author}, #{splitStatus}, #{standardId}, #{delFlag}, #{publishBeforeId})
</insert>
<insert id="insertBatchSarFileSplitMenuByInfoId">
insert into sar_file_split_menu(id, sys_org_code, info_id, name, parent_id, display_seq, valid_flag, remarks, item_name, creation_user, creation_time, modify_user, modify_time)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.id}, #{entity.sysOrgCode}, #{entity.infoId}, #{entity.name}, #{entity.parentId}, #{entity.displaySeq}, #{entity.validFlag}, #{entity.remarks}, #{entity.itemName}, #{entity.creationUser}, #{entity.creationTime}, #{entity.modifyUser}, #{entity.modifyTime})
</foreach>
</insert>
<insert id="insertSarFileSplitItemsVal">
insert into sar_file_split_items_val(id, sys_org_code, item_id, type, item_content, display_seq, valid_flag, img_name, index_item, creation_time, modify_user, modify_time, creation_user)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.id}, #{entity.sysOrgCode}, #{entity.itemId}, #{entity.type}, #{entity.itemContent}, #{entity.displaySeq}, #{entity.validFlag}, #{entity.imgName}, #{entity.indexItem}, #{entity.creationTime}, #{entity.modifyUser}, #{entity.modifyTime}, #{entity.creationUser})
</foreach>
</insert>
<delete id="sarFileSplitMenuDeleteByIdList">
delete from SAR_FILE_SPLIT_MENU
where id in
<foreach collection="menuIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<delete id="deleteDocumentSplitDetail">
delete from laws_document_split
where id = #{id}
</delete>
<delete id="deleteBatchDocumentSplitDetail">
delete from laws_document_split
where ${updateCondition}
</delete>
<delete id="deleteItemsValByItemId">
delete from sar_file_split_items_val
where item_id = #{itemId}
<choose>
<when test="type != null and type != ''">
and type = #{type}
</when>
<otherwise>
and type <![CDATA[<>]]> 'interpretation'
</otherwise>
</choose>
</delete>
<delete id="deleteItemsValByItemIds">
delete from sar_file_split_items_val
where item_id in
<foreach collection="itemIds.split(',')" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<choose>
<when test="type != null and type != ''">
and type = #{type}
</when>
<otherwise>
and type <![CDATA[<>]]> 'interpretation'
</otherwise>
</choose>
</delete>
<select id="queryByPage" resultType="com.jero.modules.documenttool.entity.DocumentSplitInfo">
select *
from (select i.id as id,
serial_number,
(CASE
WHEN length(s.standard_name) > 0 THEN s.standard_name
WHEN length(d.standard_name) > 0 THEN d.standard_name
ELSE title
END) title,
(CASE
WHEN length(s.id) > 0 THEN 1
WHEN length(d.id) > 0 THEN 3
ELSE ''
END) splitStandardSource,
file_type,
file_name,
split_status,
(IF(i.is_asms_import = '1' and u.id is null, i.author, concat(u.realname, '(', u.username, ')'))) as author,
i.create_time,
i.split_result,
u2.id createBy,
i.standard_id,
i.del_flag,
publish_before_id,
file_id,
u.realname as realname,
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
left join sys_user u2 on i.create_by = u2.username) t
${ew.customSqlSegment}
</select>
<select id="queryDocumentSplitDetail" resultType="java.util.Map">
select
${selectColumn}
from laws_document_split s
left join SAR_FILE_SPLIT_MENU m on s.MENU_ID = m.id
${selectCondition}
</select>
<select id="queryItemsValByItemIds" resultType="com.jero.modules.split.entity.SarFileSplitItemsValEO">
select id, type, item_id, item_content, valid_flag, creation_user,
creation_time, modify_time, modify_user, display_seq,img_name,index_item
from SAR_FILE_SPLIT_ITEMS_VAL
where valid_flag = '0' and ITEM_ID in
<foreach collection="itemIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
order by display_seq
</select>
<select id="queryItemsValByItemId" resultType="com.jero.modules.split.entity.SarFileSplitItemsValEO">
select id, type, item_id, item_content, valid_flag, creation_user,
creation_time, modify_time, modify_user, display_seq,img_name,index_item
from SAR_FILE_SPLIT_ITEMS_VAL
where valid_flag = '0' and ITEM_ID = #{itemId}
<choose>
<when test="type != null and type != ''">
and type = #{type}
</when>
<otherwise>
and type <![CDATA[<>]]> 'interpretation'
</otherwise>
</choose>
order by display_seq
</select>
<select id="queryLawsDocumentSplitById" resultType="java.util.Map">
select *
from laws_document_split
where id = #{id}
</select>
<select id="queryDocumentSplitInfoById"
resultType="com.jero.modules.documenttool.entity.DocumentSplitInfo">
select id, create_by, create_time, update_by, update_time, sys_org_code,
serial_number, title, file_type, file_name, split_result, file_id,
connect_id, title_en, author, split_status, standard_id, del_flag
from sar_file_split_info
where id = #{id}
</select>
<select id="querySarFileSplitMenuByInfoId"
resultType="com.jero.modules.documenttool.entity.SarFileSplitMenu">
select id, sys_org_code, info_id, name, parent_id, display_seq, valid_flag,
remarks, item_name, creation_user, creation_time, modify_user, modify_time
from sar_file_split_menu
where valid_flag = 0 and info_id = #{infoId}
</select>
<select id="queryLawsDocumentSplitByInfoId" resultType="java.util.Map">
select * from laws_document_split where del_flag = 0 and info_id = #{infoId}
</select>
<select id="querySarFileSplitItemsValByItemId"
resultType="com.jero.modules.documenttool.entity.SarFileSplitItemsVal">
select id, sys_org_code, item_id, type, item_content, display_seq, valid_flag,
img_name, index_item, creation_time, modify_user, modify_time, creation_user
from sar_file_split_items_val
where valid_flag = 0 and item_id = #{itemId}
</select>
<select id="queryLawsDocumentSplitInId" resultType="java.util.Map">
select *
from laws_document_split
where id in
<foreach collection="idList.split(',')" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<select id="queryDocumentSplitDetailById" resultType="java.util.Map">
select *
from laws_document_split
where id =#{id}
</select>
<select id="querySplitFileInfoByPage" resultType="com.jero.modules.documenttool.entity.SplitFileInfo">
select standard.*, o.id id, o.file_name, o.standard_file_type, o.url
from (select id standardId, standard_number, standard_number standardNo, standard_name, standard_state, release_date, 1 origin, create_time, create_by, update_by, update_time
from laws_domestic_standard
where del_flag = 0
union all
select id standardId, standard_number, standard_number standardNo, standard_name, standard_state, release_date, 3 origin, create_time, create_by, update_by, update_time
from laws_enterprise_standard
where del_flag = 0) standard left join oss_file o on standardId = o.standard_id
${ew.customSqlSegment}
</select>
<select id="querySarFileSplitItemsByIds" resultType="com.jero.modules.split.entity.SarFileSplitItemsEO">
SELECT id,
creation_user,
creation_time,
modify_user,
modify_time,
sys_org_code,
info_id,
items_num,
items_name,
iterms_conditions,
menu_id
FROM sar_file_split_items
WHERE id IN
<foreach collection="idList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="queryLawsDocumentSplitInIds"
resultType="com.jero.modules.documenttool.entity.LawsDocumentSplit">
select *
from laws_document_split
where id in
<foreach collection="idList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<select id="queryLawsDocumentSplitGroupByMenuId" resultType="java.lang.String">
SELECT *
FROM (SELECT menu_id, COUNT(*) count
FROM laws_document_split
WHERE info_id = #{infoId}
GROUP BY menu_id
ORDER BY count DESC) t
WHERE count > 1
</select>
<update id="editDocumentSplitDetail">
UPDATE laws_document_split
SET ${updateSet}
WHERE ${updateCondition}
</update>
</mapper>
@@ -0,0 +1,208 @@
package com.jero.modules.documenttool.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.documenttool.entity.LawsDocumentSplitView;
import com.jero.modules.documenttool.entity.SplitFileInfo;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @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);
/**
* 判断操作权限
* @param ids
*/
void checkOutOperation(List<String> ids);
/**
* 文档拆分详情-分页列表查询
* @param parameter
* @return
*/
IPage<Map<String, Object>> queryDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-列表查询
* @param parameter
* @return
*/
List<Map<String, Object>> queryDocumentSplitDetailByList(Map<String, Object> parameter);
/**
* 文档拆分-拆分
* @param sarFileSplitInfoEO
*/
void add(SarFileSplitInfoEO sarFileSplitInfoEO);
/**
* 拆分文档保存
* @param sarFileSplitInfoEO
*/
void saveDocumentSplitInfo(SarFileSplitInfoEO sarFileSplitInfoEO);
/**
* 企标权限校验
* @param sarFileSplitInfoEO
*/
void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO);
/**
* 唯一性校验
*/
void uniqueCheck(SarFileSplitInfoEO sarFileSplitInfoEO);
/**
* 文档拆分详情-编辑
* @param parameter
*/
void editDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-批量编辑
* @param parameter
*/
void editBatchDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-合并条款
* @param parameter
*/
void mergeDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-删除
* @param parameter
*/
void deleteDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-批量删除
* @param parameter
*/
void deleteBatchDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-复制
* @param id
*/
void copyDocumentSplitDetail(String id);
/**
* 文档拆分详情-批量复制
* @param ids
*/
void copyBatchDocumentSplitDetail(String ids);
/**
* 文档拆分详情-条目信息列表
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryItemsValList(String itemId);
/**
* 文档拆分详情-根据id查询
* @param id
* @return
*/
Map<String,Object> queryDocumentSplitDetailById(String id);
/**
* 文档拆分详情-模板下载
* @param request
* @param response
*/
void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response);
/**
* 文档拆分详情-条文解读列表
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryInterpretationArticlesList(String itemId);
/**
* 文档拆分-查看
* @param parameter
* @return
*/
LawsDocumentSplitView queryView(Map<String, Object> parameter);
/**
* 文档拆分-发布
* @param parameter
* @return
*/
void publish(Map<String, Object> parameter);
/**
* 文档拆分-撤回
* @param parameter
*/
void revocation(Map<String, Object> parameter);
/**
* 文档拆分详情-导出
* @param request
* @param response
*/
void exportDocumentSplitDetail(Map<String, Object> parameter, HttpServletRequest request, HttpServletResponse response);
/**
* 文档拆分-拆分已入库文本分页列表查询
* @param splitFileInfo
* @param pageNo
* @param pageSize
* @return
*/
IPage<SplitFileInfo> querySplitFileInfoByPage(SplitFileInfo splitFileInfo, Integer pageNo, Integer pageSize);
/**
* 文档拆分-通过文档拆分id查询目录树形结构
* @param infoId
* @return
*/
List<SarFileSplitMenuEO> queryTreeMenuByInfoId(String infoId);
/**
* 文档拆分-是否水平越权
* @return
*/
void isHorizontalOverstep(String ids);
}