【删除】去掉整个OCR包、去掉领域和人的关系代码、去掉搜索中心代码
【修改】更换部分工具类的位置
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.jero.modules.ocr.util;
|
||||
package com.jero.common.util;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.jero.modules.ocr.util;
|
||||
package com.jero.common.util;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
+7
-7
@@ -1,4 +1,4 @@
|
||||
package com.jero.modules.ocr.util;
|
||||
package com.jero.common.util;
|
||||
|
||||
|
||||
import java.util.Random;
|
||||
@@ -8,15 +8,15 @@ public class UUIDUtils {
|
||||
public static String randomUUID10() {
|
||||
return RandomUtils.randomString(10);
|
||||
}
|
||||
|
||||
|
||||
public static String randomUUID20() {
|
||||
return RandomUtils.randomString(20);
|
||||
}
|
||||
|
||||
|
||||
public static String randomUUID(int length) {
|
||||
return RandomUtils.randomString(length);
|
||||
}
|
||||
|
||||
|
||||
public static String getUUIDPath(String uuid){
|
||||
StringBuilder builder=new StringBuilder();
|
||||
builder.append("/");
|
||||
@@ -25,7 +25,7 @@ public class UUIDUtils {
|
||||
builder.append((uuid.substring(11,14).hashCode())%100+"").append("/");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
public static String getAttTable(){
|
||||
Random rand = new Random();
|
||||
int nextInt = rand.nextInt(10)+1;
|
||||
@@ -33,6 +33,6 @@ public class UUIDUtils {
|
||||
builder.append("ATT_FILE_").append(String.format("%02d", nextInt));
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+7
-8
@@ -34,17 +34,16 @@ import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.document.utils.ReadPdfUtil;
|
||||
import com.jero.modules.document.utils.ReadWordUtil;
|
||||
import com.jero.modules.document.vo.QueryConditionVO;
|
||||
import com.jero.modules.domain.entity.DomainUserRel;
|
||||
import com.jero.modules.domain.service.impl.DomainManageServiceImpl;
|
||||
//import com.jero.modules.domain.entity.DomainUserRel;
|
||||
//import com.jero.modules.domain.service.impl.DomainManageServiceImpl;
|
||||
import com.jero.modules.home.entity.HomeDocumentDynamicEO;
|
||||
import com.jero.modules.home.service.IHomeDocumentDynamicEOService;
|
||||
import com.jero.modules.log.entity.BussLogEO;
|
||||
import com.jero.modules.log.service.IBussLogEOService;
|
||||
import com.jero.modules.message.websocket.WebSocket;
|
||||
import com.jero.modules.ocr.service.IOcrRecordEOService;
|
||||
//import com.jero.modules.ocr.service.IOcrRecordEOService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.searchcenter.enums.ModuleTypeFlagEnum;
|
||||
import com.jero.modules.split.common.FileUnZip;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
import com.jero.modules.split.service.ISarFileSplitInfoService;
|
||||
@@ -133,10 +132,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
private WebSocket webSocket;
|
||||
@Autowired
|
||||
private IHomeDocumentDynamicEOService homeDocumentDynamicEOService;
|
||||
@Autowired
|
||||
private IOcrRecordEOService ocrRecordEOService;
|
||||
@Autowired
|
||||
private DomainManageServiceImpl domainManageService;
|
||||
// @Autowired
|
||||
// private IOcrRecordEOService ocrRecordEOService;
|
||||
// @Autowired
|
||||
// private DomainManageServiceImpl domainManageService;
|
||||
// @Autowired
|
||||
// private IPhasedImplementationDetailsEOService phasedImplementationDetailsEOService;
|
||||
//@Autowired
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.jero.modules.domain.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 io.swagger.annotations.ApiModel;
|
||||
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;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 领域与用户关系实体
|
||||
*@Author: wzj
|
||||
*@Date: 2022/3/2 11:41
|
||||
**/
|
||||
@Data
|
||||
@TableName("domain_user_rel")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="domain_user_rel对象", description="领域与用户关系表")
|
||||
public class DomainUserRel implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("创建人")
|
||||
private String createBy;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty("领域id")
|
||||
private String domainId;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private String userId;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.jero.modules.domain.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.domain.entity.DomainUserRel;
|
||||
/**
|
||||
* 领域与用户关系
|
||||
*@Author: wzj
|
||||
*@Date: 2022/3/2 11:41
|
||||
**/
|
||||
public interface DomainUserRelMapper extends BaseMapper<DomainUserRel> {
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?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.domain.mapper.DomainUserRelMapper">
|
||||
<resultMap id="OnlCgformSubscribeResultMap" type="com.jero.modules.domain.entity.DomainUserRel">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="domain_id" property="domainId" />
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
@@ -1,29 +0,0 @@
|
||||
package com.jero.modules.domain.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.domain.entity.DomainUserRel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 领域与用户关系
|
||||
*@Author: wzj
|
||||
*@Date: 2022/3/2 11:40
|
||||
**/
|
||||
public interface DomainUserRelService extends IService<DomainUserRel> {
|
||||
|
||||
Result<?> insert(JSONObject jsonObject);
|
||||
|
||||
Result<?> queryList();
|
||||
|
||||
/**
|
||||
* 查询领域、文档关联的用户
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
List<String> queryDomainUserRelInfo(Map<String,Object> params);
|
||||
|
||||
}
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
package com.jero.modules.domain.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.domain.entity.DomainUserRel;
|
||||
import com.jero.modules.domain.mapper.DomainUserRelMapper;
|
||||
import com.jero.modules.domain.service.DomainUserRelService;
|
||||
import com.jero.modules.system.mapper.SysUserMapper;
|
||||
import me.zhyd.oauth.utils.StringUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 领域与用户关系
|
||||
*@Author: wzj
|
||||
*@Date: 2022/3/2 11:41
|
||||
**/
|
||||
@Service
|
||||
public class DomainManageServiceImpl extends ServiceImpl<DomainUserRelMapper, DomainUserRel> implements DomainUserRelService {
|
||||
|
||||
//我的订阅
|
||||
//@Autowired
|
||||
//private OnlCgformSubscribeMapper onlCgformSubscribeMapper;
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
|
||||
@Override
|
||||
public Result<?> insert(JSONObject jsonObject) {
|
||||
try {
|
||||
List<String> domainIdList = jsonObject.getJSONArray("domainIdList").toJavaList(String.class);
|
||||
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userName = currentUser.getUsername();
|
||||
String userId = currentUser.getId();
|
||||
QueryWrapper<DomainUserRel> deleteWrapepr = new QueryWrapper<>();
|
||||
deleteWrapepr.lambda().eq(DomainUserRel::getUserId,userId);
|
||||
super.baseMapper.delete(deleteWrapepr);
|
||||
|
||||
List<DomainUserRel> domainUserRelList = new ArrayList<>();
|
||||
domainIdList.forEach(domainId -> {
|
||||
DomainUserRel domainUserRel = new DomainUserRel();
|
||||
domainUserRel.setCreateBy(userName);
|
||||
domainUserRel.setDomainId(domainId);
|
||||
domainUserRel.setUserId(userId);
|
||||
domainUserRel.setCreateTime(new Date());
|
||||
domainUserRelList.add(domainUserRel);
|
||||
});
|
||||
if (CollectionUtils.isNotEmpty(domainIdList)) {
|
||||
super.saveBatch(domainUserRelList);
|
||||
}
|
||||
}catch (Exception ex){
|
||||
log.error("添加领域与用户关系失败:" + ex.getMessage());
|
||||
throw new JeroBootException("添加失败!");
|
||||
}
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<?> queryList() {
|
||||
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = currentUser.getId();
|
||||
QueryWrapper<DomainUserRel> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(DomainUserRel::getUserId,userId);
|
||||
List<DomainUserRel> domainUserRels = super.baseMapper.selectList(queryWrapper);
|
||||
return Result.OK(domainUserRels);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询领域、文档关联的用户
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<String> queryDomainUserRelInfo(Map<String, Object> params) {
|
||||
String domainId = (String) params.get("domainId");
|
||||
String documentId = (String) params.get("documentId");
|
||||
List<String> result = new ArrayList<>();
|
||||
try {
|
||||
//获取订阅该领域的所有用户信息
|
||||
if(StringUtils.isNotEmpty(domainId)){
|
||||
QueryWrapper<DomainUserRel> queryDomain = new QueryWrapper<>();
|
||||
queryDomain.lambda().in(DomainUserRel::getDomainId, Arrays.asList(domainId.split(",")));
|
||||
List<DomainUserRel> domainUserRelList = super.baseMapper.selectList(queryDomain);
|
||||
if(CollectionUtils.isNotEmpty(domainUserRelList)){
|
||||
result = domainUserRelList.stream().map(DomainUserRel::getUserId).distinct().collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
}catch (Exception ex){
|
||||
log.error("根据领域id、文档id查询用户失败:" + ex.getMessage());
|
||||
throw new JeroBootException("根据领域id、文档id查询用户失败!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+1
@@ -3,6 +3,7 @@ package com.jero.modules.extRepo.enums;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// TODO 需要进行修改,此处是写死的角色id
|
||||
public enum ExtRepoMamagerRoleIdEnum {
|
||||
MANAGER_ID("系统管理员", "Administrator", "admin", "f6817f48af4fb3af11b9e8bf182f618b", 1),
|
||||
ERMANAGER_ID("资料中心管理员", "ExternalReportsManager", "ExternalReportsManager", "1552536424587862017", 2);
|
||||
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
//package com.jero.modules.lanswitch.controller;
|
||||
//
|
||||
//import com.jero.common.api.vo.Result;
|
||||
//import com.jero.common.aspect.annotation.AutoLog;
|
||||
//import com.jero.modules.lanswitch.service.ILanguageSwitchService;
|
||||
//import io.swagger.annotations.Api;
|
||||
//import io.swagger.annotations.ApiOperation;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.web.bind.annotation.GetMapping;
|
||||
//import org.springframework.web.bind.annotation.RequestMapping;
|
||||
//import org.springframework.web.bind.annotation.RequestParam;
|
||||
//import org.springframework.web.bind.annotation.RestController;
|
||||
//
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
///**
|
||||
// * @Author: liyawei
|
||||
// * @Description:
|
||||
// * @Date: Created in 12:07 2022/3/22
|
||||
// */
|
||||
//@RestController
|
||||
//@RequestMapping("/language/switch")
|
||||
//@Api(tags="中英文切换通用接口")
|
||||
//@Slf4j
|
||||
//public class LanguageSwitchController {
|
||||
// @Autowired
|
||||
// private ILanguageSwitchService languageSwitchService;
|
||||
//
|
||||
// /**
|
||||
// * 表头中英文切换
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// @AutoLog(value = "表头中英文切换")
|
||||
// @ApiOperation(value="表头中英文切换", notes="表头中英文切换")
|
||||
// @GetMapping(value = "/getHeader")
|
||||
// public Result<List<Map<String, Object>>> getHeader(@RequestParam(name = "flag") String flag,
|
||||
// @RequestParam(name = "cut") String cut) {
|
||||
// List<Map<String, Object>> list = languageSwitchService.getHeader(flag, cut);
|
||||
// return Result.OK(list);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 查询条件中英文切换
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// @AutoLog(value = "查询条件中英文切换")
|
||||
// @ApiOperation(value="查询条件中英文切换", notes="查询条件中英文切换")
|
||||
// @GetMapping(value = "/queryCondition")
|
||||
// public Result<List<Map<String, Object>>> queryCondition(@RequestParam(name = "flag") String flag,
|
||||
// @RequestParam(name = "cut") String cut) {
|
||||
// List<Map<String, Object>> list = languageSwitchService.queryCondition(flag, cut);
|
||||
// return Result.OK(list);
|
||||
// }
|
||||
// /**
|
||||
// * 表单中英文切换
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// @AutoLog(value = "表单中英文切换")
|
||||
// @ApiOperation(value="表单中英文切换", notes="表单中英文切换")
|
||||
// @GetMapping(value = "/getForm")
|
||||
// public Result<List<Map<String, Object>>> getForm(@RequestParam(name = "flag") String flag,
|
||||
// @RequestParam(name = "cut") String cut) {
|
||||
// List<Map<String, Object>> list = languageSwitchService.getForm(flag, cut);
|
||||
// return Result.OK(list);
|
||||
// }
|
||||
//
|
||||
//}
|
||||
-36
@@ -1,36 +0,0 @@
|
||||
//package com.jero.modules.lanswitch.service;
|
||||
//
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
///**
|
||||
// * @Author: liyawei
|
||||
// * @Description:
|
||||
// * @Date: Created in 12:08 2022/3/22
|
||||
// */
|
||||
//public interface ILanguageSwitchService {
|
||||
//
|
||||
// /**
|
||||
// * 列表表头中英文切换
|
||||
// * @param flag
|
||||
// * @param cut
|
||||
// * @return
|
||||
// */
|
||||
// List<Map<String, Object>> getHeader(String flag, String cut);
|
||||
//
|
||||
// /**
|
||||
// * 查询条件中英文切换
|
||||
// * @param flag
|
||||
// * @param cut
|
||||
// * @return
|
||||
// */
|
||||
// List<Map<String, Object>> queryCondition(String flag, String cut);
|
||||
//
|
||||
// /**
|
||||
// * 表单中英文切换
|
||||
// * @param flag
|
||||
// * @param cut
|
||||
// * @return
|
||||
// */
|
||||
// List<Map<String, Object>> getForm(String flag, String cut);
|
||||
//}
|
||||
-169
@@ -1,169 +0,0 @@
|
||||
//package com.jero.modules.lanswitch.service.impl;
|
||||
//
|
||||
//import com.jero.common.constant.enums.LanguageEnum;
|
||||
//import com.jero.common.constant.enums.ModuleEnum;
|
||||
//import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
//import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
//import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
//import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
//import com.jero.modules.lanswitch.service.ILanguageSwitchService;
|
||||
//import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
//import com.jero.modules.system.entity.SysCategoryTreeVO;
|
||||
//import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.HashMap;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//import java.util.stream.Collectors;
|
||||
//
|
||||
///**
|
||||
// * @Author: liyawei
|
||||
// * @Description:
|
||||
// * @Date: Created in 12:08 2022/3/22
|
||||
// */
|
||||
//@Service
|
||||
//public class LanguageSwitchServiceImpl implements ILanguageSwitchService {
|
||||
// @Autowired
|
||||
// private OnlCgformFieldServiceImpl onlCgformFieldService;
|
||||
//
|
||||
// @Autowired
|
||||
// private SysCategoryServiceImpl sysCategoryService;
|
||||
//
|
||||
// /**
|
||||
// * 列表表头中英文切换
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// @Override
|
||||
// public List<Map<String, Object>> getHeader(String flag, String cut) {
|
||||
// List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
// if (fieldList.size() != 0) {
|
||||
// //过滤列表字段(is_show_list-->列表是否显示0否 1是)
|
||||
// fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))).collect(Collectors.toList());
|
||||
// }
|
||||
// List<Map<String, Object>> list = new ArrayList<>();
|
||||
// for (OnlCgformField onlCgformField : fieldList) {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// if(FieldTypeEnum.TEXT_LINK.getValue().equals(onlCgformField.getFieldShowType())){
|
||||
// map.put("urlClick","true");
|
||||
// }
|
||||
// if("file_name".equals(onlCgformField.getDbFieldName())){
|
||||
// //跳转详情的标识
|
||||
// map.put("click","true");
|
||||
// }
|
||||
// //日期添加排序标识
|
||||
// if ("create_time".equals(onlCgformField.getDbFieldName())) {
|
||||
// map.put("sort", "true");//列表排序标识
|
||||
// }
|
||||
// if ("update_time".equals(onlCgformField.getDbFieldName())) {
|
||||
// map.put("sort", "true");//列表排序标识
|
||||
// }
|
||||
//
|
||||
// String dbFieldName = onlCgformField.getDbFieldName();
|
||||
// if (ModuleEnum.FILE_SPLIT_ITEMS.getValue().equals(flag)) {
|
||||
// map.put("db_field_name", dbFieldName);
|
||||
// } else {
|
||||
// map.put("db_field_name", LineHumpUtil.lineToHump(dbFieldName));
|
||||
// }
|
||||
//
|
||||
// if(LanguageEnum.CN.getValue().equals(cut)){
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
// }else{
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
// }
|
||||
// list.add(map);
|
||||
// }
|
||||
// return list;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 查询条件中英文切换
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// @Override
|
||||
// public List<Map<String, Object>> queryCondition(String flag, String cut) {
|
||||
// List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
// if (fieldList.size() != 0) {
|
||||
// //过滤出搜索条件()
|
||||
// fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsQuery()))).collect(Collectors.toList());
|
||||
// }
|
||||
// //树形数据字典
|
||||
// List<SysCategoryTreeVO> sysCategoryTree = sysCategoryService.getSysCategoryTreeByCut(cut); // 查询所有 并以树结构返回
|
||||
//
|
||||
// List<Map<String, Object>> list = new ArrayList<>();
|
||||
// for (OnlCgformField onlCgformField : fieldList) {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
//
|
||||
// if (FieldTypeEnum.TREE.getValue().equals(onlCgformField.getFieldShowType())) {
|
||||
// List<SysCategoryTreeVO> sysCategoryTreeVOList = sysCategoryTree.stream()
|
||||
// .filter(e -> onlCgformField.getDictId().equals(e.getDictId()))
|
||||
// .collect(Collectors.toList());
|
||||
// map.put("tree", sysCategoryTreeVOList); // 树形结构字段 设置树形结构字段值
|
||||
// } else {
|
||||
// map.put("tree", new ArrayList<>()); // 其他类型字段 该key为空
|
||||
// }
|
||||
//
|
||||
// map.put("field_show_type", onlCgformField.getFieldShowType());//类型(判断是下拉还是输入框,等等)
|
||||
// map.put("dict_field", onlCgformField.getDictField()); //下拉类型的数据字典编码
|
||||
// if (ModuleEnum.FILE_SPLIT_ITEMS.getValue().equals(flag)) {
|
||||
// map.put("db_field_name", onlCgformField.getDbFieldName());//字段
|
||||
// } else {
|
||||
// map.put("db_field_name", LineHumpUtil.lineToHump(onlCgformField.getDbFieldName()));//字段
|
||||
// }
|
||||
//
|
||||
// if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
// } else {
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
// }
|
||||
// list.add(map);
|
||||
// }
|
||||
// return list;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<Map<String, Object>> getForm(String flag, String cut) {
|
||||
// List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
// if (fieldList.size() != 0) {
|
||||
// //过滤出搜索条件()
|
||||
// fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowForm()))).collect(Collectors.toList());
|
||||
// }
|
||||
// //树形数据字典
|
||||
// List<SysCategoryTreeVO> sysCategoryTree = sysCategoryService.getSysCategoryTreeByCut(cut); // 查询所有 并以树结构返回
|
||||
//
|
||||
// List<Map<String, Object>> list = new ArrayList<>();
|
||||
// for (OnlCgformField onlCgformField : fieldList) {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// if (FieldTypeEnum.TREE.getValue().equals(onlCgformField.getFieldShowType())) {
|
||||
// List<SysCategoryTreeVO> sysCategoryTreeVOList = sysCategoryTree.stream()
|
||||
// .filter(e -> onlCgformField.getDictId().equals(e.getDictId()))
|
||||
// .collect(Collectors.toList());
|
||||
// map.put("tree", sysCategoryTreeVOList); // 树形结构字段 设置树形结构字段值
|
||||
// } else {
|
||||
// map.put("tree", new ArrayList<>()); // 其他类型字段 该key为空
|
||||
// }
|
||||
//
|
||||
// map.put("area", null);//展示区域。没用到
|
||||
// map.put("field_show_type", onlCgformField.getFieldShowType());//类型(判断是下拉还是输入框,等等)
|
||||
// map.put("field_must_input", onlCgformField.getFieldMustInput());//是否必填
|
||||
// map.put("dict_field", onlCgformField.getDictField()); //下拉类型的数据字典编码
|
||||
// if (ModuleEnum.FILE_SPLIT_ITEMS.getValue().equals(flag)) {
|
||||
// map.put("db_field_name", onlCgformField.getDbFieldName());//字段
|
||||
// } else {
|
||||
// map.put("db_field_name", LineHumpUtil.lineToHump(onlCgformField.getDbFieldName()));//字段
|
||||
// }
|
||||
// map.put("db_length", onlCgformField.getDbLength());//字段长度
|
||||
// if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
// } else {
|
||||
// map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
// }
|
||||
// list.add(map);
|
||||
// }
|
||||
// return list;
|
||||
// }
|
||||
//}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommentGroups {
|
||||
public List<String> view;
|
||||
public List<String> edit;
|
||||
public List<String> remove;
|
||||
public CommentGroups(){
|
||||
|
||||
}
|
||||
public CommentGroups(List<String> view, List<String> edit, List<String> remove){
|
||||
this.view = view;
|
||||
this.edit = edit;
|
||||
this.remove = remove;
|
||||
}
|
||||
}
|
||||
@@ -1,370 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jero.modules.ocr.helpers.DocumentManager;
|
||||
import com.jero.modules.ocr.helpers.FileUtility;
|
||||
import com.jero.modules.ocr.helpers.ServiceConverter;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.*;
|
||||
|
||||
public class FileModel
|
||||
{
|
||||
public String type = "desktop";
|
||||
public String mode = "edit";
|
||||
public String documentType;
|
||||
public Document document;
|
||||
public EditorConfig editorConfig;
|
||||
public String token;
|
||||
|
||||
// create file model
|
||||
public FileModel(String fileName, String lang, String actionData, User user)
|
||||
{
|
||||
if (fileName == null) fileName = "";
|
||||
fileName = fileName.trim(); // remove extra spaces in the file name
|
||||
|
||||
// get file type from the file name (word, cell or slide)
|
||||
documentType = FileUtility.GetFileType(fileName).toString().toLowerCase();
|
||||
|
||||
// set the document parameters
|
||||
document = new Document();
|
||||
document.title = fileName;
|
||||
document.url = DocumentManager.GetDownloadUrl(fileName); // get file url
|
||||
document.urlUser = DocumentManager.GetFileUri(fileName, false);
|
||||
document.fileType = FileUtility.GetFileExtension(fileName).replace(".", ""); // get file extension from the file name
|
||||
// generate document key
|
||||
document.key = ServiceConverter.GenerateRevisionId(DocumentManager.CurUserHostAddress(null) + "/" + fileName + "/" + Long.toString(new File(DocumentManager.StoragePath(fileName, null)).lastModified()));
|
||||
document.info = new Info();
|
||||
document.info.favorite = user.favorite;
|
||||
|
||||
String templatesImageUrl = DocumentManager.GetTemplateImageUrl(FileUtility.GetFileType(fileName));
|
||||
List<Map<String, String>> templates = new ArrayList<>();
|
||||
String createUrl = DocumentManager.GetCreateUrl(FileUtility.GetFileType(fileName));
|
||||
|
||||
// add templates for the "Create New" from menu option
|
||||
Map<String, String> templateForBlankDocument = new HashMap<>();
|
||||
templateForBlankDocument.put("image", "");
|
||||
templateForBlankDocument.put("title", "Blank");
|
||||
templateForBlankDocument.put("url", createUrl);
|
||||
templates.add(templateForBlankDocument);
|
||||
Map<String, String> templateForDocumentWithSampleContent = new HashMap<>();
|
||||
templateForDocumentWithSampleContent.put("image", templatesImageUrl);
|
||||
templateForDocumentWithSampleContent.put("title", "With sample content");
|
||||
templateForDocumentWithSampleContent.put("url", createUrl + "&sample=true");
|
||||
templates.add(templateForDocumentWithSampleContent);
|
||||
|
||||
// set the editor config parameters
|
||||
editorConfig = new EditorConfig(actionData);
|
||||
editorConfig.callbackUrl = DocumentManager.GetCallback(fileName); // get callback url
|
||||
|
||||
if (lang != null) editorConfig.lang = lang; // write language parameter to the config
|
||||
|
||||
editorConfig.createUrl = !user.id.equals("uid-0") ? createUrl : null;
|
||||
editorConfig.templates = user.templates ? templates : null;
|
||||
|
||||
// write user information to the config (id, name and group)
|
||||
editorConfig.user.id = user.id;
|
||||
editorConfig.user.name = user.name;
|
||||
editorConfig.user.group = user.group;
|
||||
|
||||
// write the absolute URL to the file location
|
||||
editorConfig.customization.goback.url = DocumentManager.GetServerUrl(false) + "/IndexServlet";
|
||||
|
||||
changeType(mode, type, user);
|
||||
}
|
||||
|
||||
// change the document type
|
||||
public void changeType(String _mode, String _type, User user)
|
||||
{
|
||||
if (_mode != null) mode = _mode;
|
||||
if (_type != null) type = _type;
|
||||
|
||||
// check if the file with such an extension can be edited
|
||||
String fileExt = FileUtility.GetFileExtension(document.title);
|
||||
Boolean canEdit = DocumentManager.GetEditedExts().contains(fileExt);
|
||||
// check if the Submit form button is displayed or not
|
||||
editorConfig.customization.submitForm = mode.equals("fillForms") && user.id.equals("uid-1") && false;
|
||||
|
||||
if ((!canEdit && mode.equals("edit") || mode.equals("fillForms")) && DocumentManager.GetFillExts().contains(fileExt)) {
|
||||
canEdit = true;
|
||||
mode = "fillForms";
|
||||
}
|
||||
// set the mode parameter: change it to view if the document can't be edited
|
||||
editorConfig.mode = canEdit && !mode.equals("view") ? "edit" : "view";
|
||||
|
||||
// set document permissions
|
||||
document.permissions = new Permissions(mode, type, canEdit, user);
|
||||
|
||||
if (type.equals("embedded")) InitDesktop(); // set parameters for the embedded document
|
||||
}
|
||||
|
||||
public void InitDesktop()
|
||||
{
|
||||
editorConfig.InitDesktop(document.urlUser);
|
||||
}
|
||||
|
||||
// generate document token
|
||||
public void BuildToken()
|
||||
{
|
||||
// write all the necessary document parameters to the map
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("type", type);
|
||||
map.put("documentType", documentType);
|
||||
map.put("document", document);
|
||||
map.put("editorConfig", editorConfig);
|
||||
|
||||
// and create token from them
|
||||
token = DocumentManager.CreateToken(map);
|
||||
}
|
||||
|
||||
// get document history
|
||||
public String[] GetHistory()
|
||||
{
|
||||
JSONParser parser = new JSONParser();
|
||||
String histDir = DocumentManager.HistoryDir(DocumentManager.StoragePath(document.title, null)); // get history directory
|
||||
if (DocumentManager.GetFileVersion(histDir) > 0) {
|
||||
Integer curVer = DocumentManager.GetFileVersion(histDir); // get current file version if it is greater than 0
|
||||
|
||||
List<Object> hist = new ArrayList<>();
|
||||
Map<String, Object> histData = new HashMap<String, Object>();
|
||||
|
||||
for (Integer i = 1; i <= curVer; i++) { // run through all the file versions
|
||||
Map<String, Object> obj = new HashMap<String, Object>();
|
||||
Map<String, Object> dataObj = new HashMap<String, Object>();
|
||||
String verDir = DocumentManager.VersionDir(histDir, i); // get the path to the given file version
|
||||
|
||||
try {
|
||||
String key = null;
|
||||
|
||||
// get document key
|
||||
key = i == curVer ? document.key : readFileToEnd(new File(verDir + File.separator + "key.txt"));
|
||||
|
||||
obj.put("key", key);
|
||||
obj.put("version", i);
|
||||
|
||||
if (i == 1) { // check if the version number is equal to 1
|
||||
String createdInfo = readFileToEnd(new File(histDir + File.separator + "createdInfo.json")); // get file with meta data
|
||||
JSONObject json = (JSONObject) parser.parse(createdInfo); // and turn it into json object
|
||||
|
||||
// write meta information to the object (user information and creation date)
|
||||
obj.put("created", json.get("created"));
|
||||
Map<String, Object> user = new HashMap<String, Object>();
|
||||
user.put("id", json.get("id"));
|
||||
user.put("name", json.get("name"));
|
||||
obj.put("user", user);
|
||||
}
|
||||
|
||||
dataObj.put("key", key);
|
||||
dataObj.put("url", i == curVer ? document.url : DocumentManager.GetPathUri(verDir + File.separator + "prev" + FileUtility.GetFileExtension(document.title)));
|
||||
dataObj.put("version", i);
|
||||
|
||||
if (i > 1) { //check if the version number is greater than 1
|
||||
// if so, get the path to the changes.json file
|
||||
JSONObject changes = (JSONObject) parser.parse(readFileToEnd(new File(DocumentManager.VersionDir(histDir, i - 1) + File.separator + "changes.json")));
|
||||
JSONObject change = (JSONObject) ((JSONArray) changes.get("changes")).get(0);
|
||||
|
||||
// write information about changes to the object
|
||||
obj.put("changes", !change.isEmpty() ? changes.get("changes") : null);
|
||||
obj.put("serverVersion", changes.get("serverVersion"));
|
||||
obj.put("created", !change.isEmpty() ? change.get("created") : null);
|
||||
obj.put("user", !change.isEmpty() ? change.get("user") : null);
|
||||
|
||||
Map<String, Object> prev = (Map<String, Object>) histData.get(Integer.toString(i - 2)); // get the history data from the previous file version
|
||||
Map<String, Object> prevInfo = new HashMap<String, Object>();
|
||||
prevInfo.put("key", prev.get("key")); // write key and url information about previous file version
|
||||
prevInfo.put("url", prev.get("url"));
|
||||
dataObj.put("previous", prevInfo); // write information about previous file version to the data object
|
||||
// write the path to the diff.zip archive with differences in this file version
|
||||
dataObj.put("changesUrl", DocumentManager.GetPathUri(DocumentManager.VersionDir(histDir, i - 1) + File.separator + "diff.zip"));
|
||||
}
|
||||
|
||||
if (DocumentManager.TokenEnabled())
|
||||
{
|
||||
dataObj.put("token", DocumentManager.CreateToken(dataObj));
|
||||
}
|
||||
|
||||
hist.add(obj);
|
||||
histData.put(Integer.toString(i - 1), dataObj);
|
||||
|
||||
} catch (Exception ex) { }
|
||||
}
|
||||
|
||||
// write history information about the current file version to the history object
|
||||
Map<String, Object> histObj = new HashMap<String, Object>();
|
||||
histObj.put("currentVersion", curVer);
|
||||
histObj.put("history", hist);
|
||||
|
||||
Gson gson = new Gson();
|
||||
return new String[] { gson.toJson(histObj), gson.toJson(histData) };
|
||||
}
|
||||
return new String[] { "", "" };
|
||||
}
|
||||
|
||||
// read a file
|
||||
private String readFileToEnd(File file) {
|
||||
String output = "";
|
||||
try {
|
||||
try(FileInputStream is = new FileInputStream(file))
|
||||
{
|
||||
Scanner scanner = new Scanner(is); // read data from the source
|
||||
scanner.useDelimiter("\\A");
|
||||
while (scanner.hasNext()) {
|
||||
output += scanner.next();
|
||||
}
|
||||
scanner.close();
|
||||
}
|
||||
} catch (Exception e) { }
|
||||
return output;
|
||||
}
|
||||
|
||||
// the document parameters
|
||||
public class Document
|
||||
{
|
||||
public String title;
|
||||
public String url;
|
||||
public String urlUser;
|
||||
public String fileType;
|
||||
public String key;
|
||||
public Info info;
|
||||
public Permissions permissions;
|
||||
}
|
||||
|
||||
// the permissions parameters
|
||||
public class Permissions
|
||||
{
|
||||
public Boolean comment;
|
||||
public Boolean сopy;
|
||||
public Boolean download;
|
||||
public Boolean edit;
|
||||
public Boolean print;
|
||||
public Boolean fillForms;
|
||||
public Boolean modifyFilter;
|
||||
public Boolean modifyContentControl;
|
||||
public Boolean review;
|
||||
public List<String> reviewGroups;
|
||||
public CommentGroups commentGroups;
|
||||
|
||||
// defines what can be done with a document
|
||||
public Permissions(String mode, String type, Boolean canEdit, User user)
|
||||
{
|
||||
comment = !mode.equals("view") && !mode.equals("fillForms") && !mode.equals("embedded") && !mode.equals("blockcontent");
|
||||
сopy = !user.deniedPermissions.contains("сopy");
|
||||
download = !user.deniedPermissions.contains("download");
|
||||
edit = canEdit && (mode.equals("edit") || mode.equals("view") || mode.equals("filter") || mode.equals("blockcontent"));
|
||||
print = !user.deniedPermissions.contains("print");
|
||||
fillForms = !mode.equals("view") && !mode.equals("comment") && !mode.equals("embedded") && !mode.equals("blockcontent");
|
||||
modifyFilter = !mode.equals("filter");
|
||||
modifyContentControl = !mode.equals("blockcontent");
|
||||
review = canEdit && (mode.equals("edit") || mode.equals("review"));
|
||||
reviewGroups = user.reviewGroups;
|
||||
commentGroups = user.commentGroups;
|
||||
}
|
||||
}
|
||||
|
||||
// the Favorite icon state
|
||||
public class Info
|
||||
{
|
||||
public Boolean favorite;
|
||||
}
|
||||
// the editor config parameters
|
||||
public class EditorConfig
|
||||
{
|
||||
public HashMap<String, Object> actionLink = null;
|
||||
public String mode = "edit";
|
||||
public String callbackUrl;
|
||||
public String lang = "en";
|
||||
public String createUrl;
|
||||
public List<Map<String, String>> templates;
|
||||
public User user;
|
||||
public Customization customization;
|
||||
public Embedded embedded;
|
||||
|
||||
public EditorConfig(String actionData)
|
||||
{
|
||||
// get the action in the document that will be scrolled to (bookmark or comment)
|
||||
if (actionData != null) {
|
||||
Gson gson = new Gson();
|
||||
actionLink = gson.fromJson(actionData, new TypeToken<HashMap<String, Object>>() { }.getType());
|
||||
}
|
||||
user = new User();
|
||||
customization = new Customization();
|
||||
}
|
||||
|
||||
// set parameters for the embedded document
|
||||
public void InitDesktop(String url)
|
||||
{
|
||||
embedded = new Embedded();
|
||||
embedded.saveUrl = url; // the absolute URL that will allow the document to be saved onto the user personal computer
|
||||
embedded.embedUrl = url; // the absolute URL to the document serving as a source file for the document embedded into the web page
|
||||
embedded.shareUrl = url; // the absolute URL that will allow other users to share this document
|
||||
embedded.toolbarDocked = "top"; // the place for the embedded viewer toolbar, can be either top or bottom
|
||||
}
|
||||
|
||||
// default user parameters (id, name and group)
|
||||
public class User
|
||||
{
|
||||
public String id;
|
||||
public String name;
|
||||
public String group;
|
||||
}
|
||||
|
||||
// customization parameters
|
||||
public class Customization
|
||||
{
|
||||
public Goback goback;
|
||||
public Boolean forcesave;
|
||||
public Boolean submitForm;
|
||||
|
||||
public Customization()
|
||||
{
|
||||
forcesave = false;
|
||||
goback = new Goback();
|
||||
}
|
||||
|
||||
public class Goback
|
||||
{
|
||||
public String url;
|
||||
}
|
||||
}
|
||||
|
||||
// parameters for embedded document
|
||||
public class Embedded
|
||||
{
|
||||
public String saveUrl;
|
||||
public String embedUrl;
|
||||
public String shareUrl;
|
||||
public String toolbarDocked;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// turn java objects into json strings
|
||||
public static String Serialize(FileModel model)
|
||||
{
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(model);
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
public enum FileType
|
||||
{
|
||||
Word,
|
||||
Cell,
|
||||
Slide
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
/**
|
||||
* @program: OcrDemo
|
||||
* @description: orc调取回调函数的参数
|
||||
* @author: duyunbao
|
||||
* @create: 2019-03-13 16:14
|
||||
*/
|
||||
public class OcrCallBackResultEO {
|
||||
|
||||
private String result ;
|
||||
private String taskID ;
|
||||
private String key;
|
||||
|
||||
public String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(String result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public String getTaskID() {
|
||||
return taskID;
|
||||
}
|
||||
|
||||
public void setTaskID(String taskID) {
|
||||
this.taskID = taskID;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
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.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: OCR识别转换记录表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-02-16
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("ocr_record")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="ocr_record对象", description="OCR识别转换记录表")
|
||||
public class OcrRecordEO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysOrgCode;
|
||||
|
||||
/**标准名称*/
|
||||
@Excel(name = "标准名称", width = 15)
|
||||
@ApiModelProperty(value = "标准名称")
|
||||
private String standName;
|
||||
|
||||
/**标准英文名称*/
|
||||
@Excel(name = "标准英文名称", width = 15)
|
||||
@ApiModelProperty(value = "标准英文名称")
|
||||
private String standNameEn;
|
||||
|
||||
/**标准编号*/
|
||||
@Excel(name = "标准编号", width = 15)
|
||||
@ApiModelProperty(value = "标准编号")
|
||||
private String standNumber;
|
||||
|
||||
/**文本状态*/
|
||||
@Excel(name = "文本状态", width = 15, dicCode = "file_type")
|
||||
// @Dict(dicCode = "file_type")
|
||||
@ApiModelProperty(value = "文本状态")
|
||||
private String fileType;
|
||||
|
||||
/**文件名称*/
|
||||
@Excel(name = "文件名称", width = 15)
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
|
||||
/**转换结果*/
|
||||
@Excel(name = "转换结果", width = 15)
|
||||
// @Dict(dicCode = "result_content")
|
||||
@ApiModelProperty(value = "转换结果")
|
||||
private String resultContent;
|
||||
|
||||
/**doc本地存放全路径*/
|
||||
@Excel(name = "doc本地存放全路径", width = 15)
|
||||
@ApiModelProperty(value = "doc本地存放全路径")
|
||||
private String docName;
|
||||
|
||||
/**doc文件名称*/
|
||||
@Excel(name = "doc文件名称", width = 15)
|
||||
@ApiModelProperty(value = "doc文件名称")
|
||||
private String docRealName;
|
||||
|
||||
/**doc文件编码*/
|
||||
@Excel(name = "doc文件编码", width = 15)
|
||||
@ApiModelProperty(value = "doc文件编码")
|
||||
private String wordFileCode;
|
||||
|
||||
/**json文件本地存放全路径*/
|
||||
@Excel(name = "json文件本地存放全路径", width = 15)
|
||||
@ApiModelProperty(value = "json文件本地存放全路径")
|
||||
private String jsonName;
|
||||
|
||||
/**json文件名称*/
|
||||
@Excel(name = "json文件名称", width = 15)
|
||||
@ApiModelProperty(value = "json文件名称")
|
||||
private String jsonRealName;
|
||||
|
||||
/**json文件编码*/
|
||||
@Excel(name = "json文件编码", width = 15)
|
||||
@ApiModelProperty(value = "json文件编码")
|
||||
private String jsonFileCode;
|
||||
|
||||
/**pdf文件id*/
|
||||
@Excel(name = "pdf文件id", width = 15)
|
||||
@ApiModelProperty(value = "pdf文件id")
|
||||
private String attId;
|
||||
|
||||
/**同步状态*/
|
||||
@Excel(name = "同步状态", width = 15)
|
||||
// @Dict(dicCode = "sync_state")
|
||||
@ApiModelProperty(value = "同步状态")
|
||||
private String syncState;
|
||||
|
||||
/**文档库关联文件id*/
|
||||
@ApiModelProperty(value = "文档库关联文件id")
|
||||
private String connectId;
|
||||
|
||||
/**校核锁定标识*/
|
||||
@ApiModelProperty(value = "校核锁定标识")
|
||||
private String checkFlag;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String docRealFile;
|
||||
@TableField(exist = false)
|
||||
private String jsonRealFile;
|
||||
@TableField(exist = false)
|
||||
private String fileSource; //文件来源:0-上传 1-导入
|
||||
@TableField(exist = false)
|
||||
private String cut;
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
/**
|
||||
* @program: OcrDemo
|
||||
* @description: ocr接口请求实体类
|
||||
* @author: duyunbao
|
||||
* @create: 2019-03-13 20:46
|
||||
*/
|
||||
public class OcrRequestEO {
|
||||
|
||||
private String userId;
|
||||
private String authCode;
|
||||
private String convertType;
|
||||
private String Filename;
|
||||
private String taskId;
|
||||
private String callBackUrl;
|
||||
private String callBackMethod;
|
||||
private String fileContent;
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getAuthCode() {
|
||||
return authCode;
|
||||
}
|
||||
|
||||
public void setAuthCode(String authCode) {
|
||||
this.authCode = authCode;
|
||||
}
|
||||
|
||||
public String getConvertType() {
|
||||
return convertType;
|
||||
}
|
||||
|
||||
public void setConvertType(String convertType) {
|
||||
this.convertType = convertType;
|
||||
}
|
||||
|
||||
public String getFilename() {
|
||||
return Filename;
|
||||
}
|
||||
|
||||
public void setFilename(String filename) {
|
||||
Filename = filename;
|
||||
}
|
||||
|
||||
public String getTaskId() {
|
||||
return taskId;
|
||||
}
|
||||
|
||||
public void setTaskId(String taskId) {
|
||||
this.taskId = taskId;
|
||||
}
|
||||
|
||||
public String getCallBackUrl() {
|
||||
return callBackUrl;
|
||||
}
|
||||
|
||||
public void setCallBackUrl(String callBackUrl) {
|
||||
this.callBackUrl = callBackUrl;
|
||||
}
|
||||
|
||||
public String getCallBackMethod() {
|
||||
return callBackMethod;
|
||||
}
|
||||
|
||||
public void setCallBackMethod(String callBackMethod) {
|
||||
this.callBackMethod = callBackMethod;
|
||||
}
|
||||
|
||||
public String getFileContent() {
|
||||
return fileContent;
|
||||
}
|
||||
|
||||
public void setFileContent(String fileContent) {
|
||||
this.fileContent = fileContent;
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
/**
|
||||
* @program: OcrDemo
|
||||
* @description: ocr返回结果
|
||||
* @author: duyunbao
|
||||
* @create: 2019-03-13 15:35
|
||||
*/
|
||||
public class OcrResultEO {
|
||||
|
||||
private String resultCode;
|
||||
|
||||
private String returnMessage;
|
||||
|
||||
public String getResultCode() {
|
||||
return resultCode;
|
||||
}
|
||||
|
||||
public void setResultCode(String resultCode) {
|
||||
this.resultCode = resultCode;
|
||||
}
|
||||
|
||||
public String getReturnMessage() {
|
||||
return returnMessage;
|
||||
}
|
||||
|
||||
public void setReturnMessage(String returnMessage) {
|
||||
this.returnMessage = returnMessage;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class User {
|
||||
public String id;
|
||||
public String name;
|
||||
public String email;
|
||||
public String group;
|
||||
public List<String> reviewGroups;
|
||||
public CommentGroups commentGroups;
|
||||
public Boolean favorite;
|
||||
public List<String> deniedPermissions;
|
||||
public List<String> descriptions;
|
||||
public Boolean templates;
|
||||
|
||||
public User(String id, String name, String email, String group, List<String> reviewGroups, CommentGroups commentGroups,
|
||||
Boolean favorite, List<String> deniedPermissions, List<String> descriptions, Boolean templates) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
this.group = group;
|
||||
this.reviewGroups = reviewGroups;
|
||||
this.commentGroups = commentGroups;
|
||||
this.favorite = favorite;
|
||||
this.deniedPermissions = deniedPermissions;
|
||||
this.descriptions = descriptions;
|
||||
this.templates = templates;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package com.jero.modules.ocr.enums;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
* @Description:
|
||||
* @Date: Created in 11:20 2022/4/14
|
||||
*/
|
||||
public enum CheckFlagEnum {
|
||||
LOCK("锁定","1"),
|
||||
UNLOCK("解锁","0");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
CheckFlagEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.jero.modules.ocr.enums;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
* @Description:
|
||||
* @Date: Created in 16:04 2022/3/8
|
||||
*/
|
||||
public enum FileSourceEnum {
|
||||
UPLOAD("上传","0"),
|
||||
IMPORT("导入","1");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
FileSourceEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.jero.modules.ocr.enums;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
* @Description:
|
||||
* @Date: Created in 14:49 2022/2/16
|
||||
*/
|
||||
public enum FileSyncStateEnum {
|
||||
SYNC_NO("未同步","未同步"),
|
||||
SYNC_YES("已同步","已同步");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
private FileSyncStateEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.jero.modules.ocr.enums;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
* @Description:
|
||||
* @Date: Created in 14:49 2022/2/16
|
||||
*/
|
||||
public enum FileTypeEnum {
|
||||
RELEASE_DRAFT("发布稿","1"),
|
||||
SUPPLEMENT("增补件","2"),
|
||||
APPROVAL_DRAFT("报批稿","3"),
|
||||
EXPOSURE_DRAFT("征求意见稿","4");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
private FileTypeEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.jero.modules.ocr.enums;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
* @Description:
|
||||
* @Date: Created in 14:49 2022/2/16
|
||||
*/
|
||||
public enum ResultContentEnum {
|
||||
OCR_CONVERTING("转换中","转换中"),
|
||||
OCR_CONVERT_SUCCESS("转换成功","转换成功"),
|
||||
OCR_CONVERT_FAIL("转换失败","转换失败");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
private ResultContentEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
public class ConfigManager
|
||||
{
|
||||
private static Properties properties;
|
||||
|
||||
static
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private static void Init()
|
||||
{
|
||||
try
|
||||
{
|
||||
// get from the settings.properties resource and load it
|
||||
properties = new Properties();
|
||||
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("settings.properties");
|
||||
properties.load(stream);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
properties = null;
|
||||
}
|
||||
}
|
||||
|
||||
// get name from the settings.properties file
|
||||
public static String GetProperty(String name)
|
||||
{
|
||||
if (properties == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// get property by its name
|
||||
String property = properties.getProperty(name);
|
||||
|
||||
return property == null ? "" : property;
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class CookieManager {
|
||||
private HashMap<String, String> cookiesMap;
|
||||
|
||||
public CookieManager(HttpServletRequest request) throws UnsupportedEncodingException {
|
||||
cookiesMap = new HashMap<String, String>();
|
||||
|
||||
Cookie[] cookies = request.getCookies(); // get all the cookies from the request
|
||||
if (cookies != null) {
|
||||
for (Cookie cookie : cookies) { // run through all the cookies
|
||||
cookiesMap.putIfAbsent(cookie.getName(), URLDecoder.decode(cookie.getValue(), "UTF-8")); // add cookie to the cookies map if its name isn't in the map yet
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// get cookie by its name
|
||||
public String getCookie(String name) {
|
||||
return cookiesMap.get(name);
|
||||
}
|
||||
}
|
||||
@@ -1,531 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import com.jero.modules.ocr.entity.FileType;
|
||||
import com.jero.modules.ocr.entity.User;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.primeframework.jwt.Signer;
|
||||
import org.primeframework.jwt.Verifier;
|
||||
import org.primeframework.jwt.domain.JWT;
|
||||
import org.primeframework.jwt.hmac.HMACSigner;
|
||||
import org.primeframework.jwt.hmac.HMACVerifier;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public class DocumentManager
|
||||
{
|
||||
private static HttpServletRequest request;
|
||||
|
||||
public static void Init(HttpServletRequest req, HttpServletResponse resp)
|
||||
{
|
||||
request = req;
|
||||
}
|
||||
|
||||
// get max file size
|
||||
public static long GetMaxFileSize()
|
||||
{
|
||||
long size;
|
||||
|
||||
try
|
||||
{
|
||||
size = Long.parseLong(ConfigManager.GetProperty("filesize-max"));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
size = 0;
|
||||
}
|
||||
|
||||
return size > 0 ? size : 5 * 1024 * 1024;
|
||||
}
|
||||
|
||||
// get all the supported file extensions
|
||||
public static List<String> GetFileExts()
|
||||
{
|
||||
List<String> res = new ArrayList<>();
|
||||
|
||||
res.addAll(GetViewedExts());
|
||||
res.addAll(GetEditedExts());
|
||||
res.addAll(GetConvertExts());
|
||||
res.addAll(GetFillExts());
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public static List<String> GetFillExts() {
|
||||
String exts = ConfigManager.GetProperty("files.docservice.fill-docs");
|
||||
return Arrays.asList(exts.split("\\|"));
|
||||
}
|
||||
|
||||
// get file extensions that can be viewed
|
||||
public static List<String> GetViewedExts()
|
||||
{
|
||||
String exts = ConfigManager.GetProperty("files.docservice.viewed-docs");
|
||||
return Arrays.asList(exts.split("\\|"));
|
||||
}
|
||||
|
||||
// get file extensions that can be edited
|
||||
public static List<String> GetEditedExts()
|
||||
{
|
||||
String exts = ConfigManager.GetProperty("files.docservice.edited-docs");
|
||||
return Arrays.asList(exts.split("\\|"));
|
||||
}
|
||||
|
||||
// get file extensions that can be converted
|
||||
public static List<String> GetConvertExts()
|
||||
{
|
||||
String exts = ConfigManager.GetProperty("files.docservice.convert-docs");
|
||||
return Arrays.asList(exts.split("\\|"));
|
||||
}
|
||||
|
||||
// get current user host address
|
||||
public static String CurUserHostAddress(String userAddress)
|
||||
{
|
||||
if(userAddress == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// use InetAddress class to get the user address if it wasn't passed to the function
|
||||
userAddress = InetAddress.getLocalHost().getHostAddress();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
userAddress = "";
|
||||
}
|
||||
}
|
||||
|
||||
return userAddress.replaceAll("[^0-9a-zA-Z.=]", "_");
|
||||
}
|
||||
|
||||
// get the root directory of the user host
|
||||
public static String FilesRootPath(String userAddress)
|
||||
{
|
||||
String hostAddress = CurUserHostAddress(userAddress); // get current user host address
|
||||
String serverPath = request.getSession().getServletContext().getRealPath(""); // get the server url
|
||||
String storagePath = ConfigManager.GetProperty("storage-folder"); // get the storage directory
|
||||
String directory = serverPath + storagePath + File.separator + hostAddress + File.separator;
|
||||
|
||||
File file = new File(directory);
|
||||
|
||||
// if the root directory doesn't exist
|
||||
if (!file.exists())
|
||||
{
|
||||
// create it
|
||||
file.mkdirs();
|
||||
}
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
// get the storage path of the file
|
||||
public static String StoragePath(String fileName, String userAddress)
|
||||
{
|
||||
String directory = FilesRootPath(userAddress);
|
||||
return directory + FileUtility.GetFileName(fileName);
|
||||
}
|
||||
|
||||
// get the path to the forcesaved file version
|
||||
public static String ForcesavePath(String fileName, String userAddress, Boolean create)
|
||||
{
|
||||
String hostAddress = CurUserHostAddress(userAddress);
|
||||
String serverPath = request.getSession().getServletContext().getRealPath("");
|
||||
String storagePath = ConfigManager.GetProperty("storage-folder");
|
||||
|
||||
// create the directory to this file version
|
||||
String directory = serverPath + storagePath + File.separator + hostAddress + File.separator;
|
||||
|
||||
File file = new File(directory);
|
||||
if (!file.exists()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// create the directory to the history of this file version
|
||||
directory = directory + fileName + "-hist" + File.separator;
|
||||
file = new File(directory);
|
||||
if (!create && !file.exists()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
file.mkdirs();
|
||||
|
||||
directory = directory + fileName;
|
||||
file = new File(directory);
|
||||
if (!create && !file.exists()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
// get the history directory
|
||||
public static String HistoryDir(String storagePath)
|
||||
{
|
||||
return storagePath += "-hist";
|
||||
}
|
||||
|
||||
// get the path to the file version by the history path and file version
|
||||
public static String VersionDir(String histPath, Integer version)
|
||||
{
|
||||
return histPath + File.separator + Integer.toString(version);
|
||||
}
|
||||
|
||||
// get the path to the file version by the file name, user address and file version
|
||||
public static String VersionDir(String fileName, String userAddress, Integer version)
|
||||
{
|
||||
return VersionDir(HistoryDir(StoragePath(fileName, userAddress)), version);
|
||||
}
|
||||
|
||||
// get the file version by the history path
|
||||
public static Integer GetFileVersion(String historyPath)
|
||||
{
|
||||
File dir = new File(historyPath);
|
||||
|
||||
if (!dir.exists()) {
|
||||
return 1; // if the history path doesn't exist, then the file version is 1
|
||||
}
|
||||
|
||||
File[] dirs = dir.listFiles(new FileFilter() { // take only directories from the history folder
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return pathname.isDirectory();
|
||||
}
|
||||
});
|
||||
|
||||
return dirs.length + 1; // count the directories
|
||||
}
|
||||
|
||||
// get the file version by the file name and user address
|
||||
public static int GetFileVersion(String fileName, String userAddress)
|
||||
{
|
||||
return GetFileVersion(HistoryDir(StoragePath(fileName, userAddress)));
|
||||
}
|
||||
|
||||
// get a file name with an index if the file with such a name already exists
|
||||
public static String GetCorrectName(String fileName, String userAddress)
|
||||
{
|
||||
String baseName = FileUtility.GetFileNameWithoutExtension(fileName);
|
||||
String ext = FileUtility.GetFileExtension(fileName);
|
||||
String name = baseName + ext;
|
||||
|
||||
File file = new File(StoragePath(name, userAddress));
|
||||
|
||||
for (int i = 1; file.exists(); i++) // run through all the files with such a name in the storage directory
|
||||
{
|
||||
name = baseName + " (" + i + ")" + ext; // and add an index to the base name
|
||||
file = new File(StoragePath(name, userAddress));
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
// create meta information
|
||||
public static void CreateMeta(String fileName, String uid, String uname, String userAddress) throws Exception
|
||||
{
|
||||
String histDir = HistoryDir(StoragePath(fileName, userAddress));
|
||||
|
||||
File dir = new File(histDir); // create history directory
|
||||
dir.mkdir();
|
||||
|
||||
// create json object and put there file information (creation time, user id and name)
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("created", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||
json.put("id", uid);
|
||||
json.put("name", uname);
|
||||
|
||||
// create createdInfo.json file with meta information in the history directory
|
||||
File meta = new File(histDir + File.separator + "createdInfo.json");
|
||||
try (FileWriter writer = new FileWriter(meta)) {
|
||||
json.writeJSONString(writer); // write information from the json object into this file
|
||||
}
|
||||
}
|
||||
|
||||
// get all the stored files from the user host address
|
||||
public static File[] GetStoredFiles(String userAddress)
|
||||
{
|
||||
String directory = FilesRootPath(userAddress);
|
||||
|
||||
File file = new File(directory);
|
||||
return file.listFiles(new FileFilter() { // take only files from the root directory
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return pathname.isFile();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// create demo document
|
||||
public static String CreateDemo(String fileExt, Boolean sample, User user) throws Exception
|
||||
{
|
||||
String demoName = (sample ? "sample." : "new.") + fileExt; // create sample or new template file with the necessary extension
|
||||
String demoPath = "assets" + File.separator + (sample ? "sample" : "new") + File.separator; // get the path to the sample document
|
||||
String fileName = GetCorrectName(demoName, null); // get a file name with an index if the file with such a name already exists
|
||||
|
||||
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(demoPath + demoName); // get the input file stream
|
||||
|
||||
CreateFile(Paths.get(StoragePath(fileName, null)), stream);
|
||||
|
||||
// create meta information of the demo file
|
||||
CreateMeta(fileName, user.id, user.name, null);
|
||||
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public static boolean CreateFile(Path path, InputStream stream) {
|
||||
if (Files.exists(path)){
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
File file = Files.createFile(path).toFile();
|
||||
try (FileOutputStream out = new FileOutputStream(file))
|
||||
{
|
||||
int read;
|
||||
final byte[] bytes = new byte[1024];
|
||||
while ((read = stream.read(bytes)) != -1)
|
||||
{
|
||||
out.write(bytes, 0, read);
|
||||
}
|
||||
out.flush();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// get file url
|
||||
public static String GetFileUri(String fileName, Boolean forDocumentServer)
|
||||
{
|
||||
try
|
||||
{
|
||||
String serverPath = GetServerUrl(forDocumentServer);
|
||||
String storagePath = ConfigManager.GetProperty("storage-folder");
|
||||
String hostAddress = CurUserHostAddress(null);
|
||||
|
||||
String filePath = serverPath + "/" + storagePath + "/" + hostAddress + "/" + URLEncoder.encode(fileName, java.nio.charset.StandardCharsets.UTF_8.toString()).replace("+", "%20");
|
||||
// String filePath = serverPath + "?fileName=" + URLEncoder.encode(fileName, java.nio.charset.StandardCharsets.UTF_8.toString()).replace("+", "%20") + "&useraddress=" + hostAddress;
|
||||
|
||||
return filePath;
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// get file information
|
||||
public static ArrayList<Map<String, Object>> GetFilesInfo(){
|
||||
ArrayList<Map<String, Object>> files = new ArrayList<>();
|
||||
|
||||
// run through all the stored files
|
||||
for(File file : GetStoredFiles(null)){
|
||||
Map<String, Object> map = new LinkedHashMap<>(); // write all the parameters to the map
|
||||
map.put("version", GetFileVersion(file.getName(), null));
|
||||
map.put("id", ServiceConverter.GenerateRevisionId(CurUserHostAddress(null) + "/" + file.getName() + "/" + Long.toString(new File(StoragePath(file.getName(), null)).lastModified())));
|
||||
map.put("contentLength", new BigDecimal(String.valueOf((file.length()/1024.0))).setScale(2, RoundingMode.HALF_UP) + " KB");
|
||||
map.put("pureContentLength", file.length());
|
||||
map.put("title", file.getName());
|
||||
map.put("updated", String.valueOf(new Date(file.lastModified())));
|
||||
files.add(map);
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
// get file information by its id
|
||||
public static ArrayList<Map<String, Object>> GetFilesInfo(String fileId){
|
||||
ArrayList<Map<String, Object>> file = new ArrayList<>();
|
||||
|
||||
for (Map<String, Object> map : GetFilesInfo()){
|
||||
if (map.get("id").equals(fileId)){
|
||||
file.add(map);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return file;
|
||||
}
|
||||
|
||||
// get the path url
|
||||
public static String GetPathUri(String path)
|
||||
{
|
||||
String serverPath = GetServerUrl(true);
|
||||
String storagePath = ConfigManager.GetProperty("storage-folder");
|
||||
String hostAddress = CurUserHostAddress(null);
|
||||
|
||||
String filePath = serverPath + "/" + storagePath + "/" + hostAddress + "/" + path.replace(File.separator, "/").substring(FilesRootPath(null).length()).replace(" ", "%20");
|
||||
|
||||
return filePath;
|
||||
}
|
||||
|
||||
|
||||
// get the server url
|
||||
public static String GetServerUrl(Boolean forDocumentServer) {
|
||||
if (forDocumentServer && !ConfigManager.GetProperty("files.docservice.url.example").equals("")) {
|
||||
return ConfigManager.GetProperty("files.docservice.url.example");
|
||||
} else {
|
||||
return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
|
||||
}
|
||||
}
|
||||
|
||||
// get the callback url
|
||||
public static String GetCallback(String fileName)
|
||||
{
|
||||
String serverPath = GetServerUrl(true);
|
||||
String hostAddress = CurUserHostAddress(null);
|
||||
try
|
||||
{
|
||||
String query = "?type=track&fileName=" + URLEncoder.encode(fileName, java.nio.charset.StandardCharsets.UTF_8.toString()) + "&userAddress=" + URLEncoder.encode(hostAddress, java.nio.charset.StandardCharsets.UTF_8.toString());
|
||||
|
||||
return serverPath + "/IndexServlet" + query;
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// get url to the created file
|
||||
public static String GetCreateUrl (FileType fileType) {
|
||||
String serverPath = GetServerUrl(false);
|
||||
String fileExt = GetInternalExtension(fileType).replace(".", "");
|
||||
String query = "?fileExt=" + fileExt;
|
||||
|
||||
return serverPath + "/EditorServlet" + query;
|
||||
}
|
||||
|
||||
// get url to download a file
|
||||
public static String GetDownloadUrl(String fileName) {
|
||||
String serverPath = GetServerUrl(true);
|
||||
String hostAddress = CurUserHostAddress(null);
|
||||
try
|
||||
{
|
||||
String query = "?type=download&fileName=" + URLEncoder.encode(fileName, java.nio.charset.StandardCharsets.UTF_8.toString()) + "&userAddress=" + URLEncoder.encode(hostAddress, java.nio.charset.StandardCharsets.UTF_8.toString());
|
||||
|
||||
return serverPath + "/IndexServlet" + query;
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// get an editor internal extension
|
||||
public static String GetInternalExtension(FileType fileType)
|
||||
{
|
||||
// .docx for word file type
|
||||
if (fileType.equals(FileType.Word)) {
|
||||
return ".docx";
|
||||
}
|
||||
|
||||
// .xlsx for cell file type
|
||||
if (fileType.equals(FileType.Cell)) {
|
||||
return ".xlsx";
|
||||
}
|
||||
|
||||
// .pptx for slide file type
|
||||
if (fileType.equals(FileType.Slide)) {
|
||||
return ".pptx";
|
||||
}
|
||||
|
||||
// the default file type is .docx
|
||||
return ".docx";
|
||||
}
|
||||
|
||||
// get image url for templates
|
||||
public static String GetTemplateImageUrl(FileType fileType)
|
||||
{
|
||||
String path = GetServerUrl(true) + "/css/img/";
|
||||
// for word file type
|
||||
if (fileType.equals(FileType.Word)) {
|
||||
return path + "file_docx.svg";
|
||||
}
|
||||
|
||||
// .xlsx for cell file type
|
||||
if (fileType.equals(FileType.Cell)) {
|
||||
return path + "file_xlsx.svg";
|
||||
}
|
||||
|
||||
// .pptx for slide file type
|
||||
if (fileType.equals(FileType.Slide)) {
|
||||
return path + "file_pptx.svg";
|
||||
}
|
||||
|
||||
// the default file type
|
||||
return path + "file_docx.svg";
|
||||
}
|
||||
|
||||
// create document token
|
||||
public static String CreateToken(Map<String, Object> payloadClaims)
|
||||
{
|
||||
try
|
||||
{
|
||||
// build a HMAC signer using a SHA-256 hash
|
||||
Signer signer = HMACSigner.newSHA256Signer(GetTokenSecret());
|
||||
JWT jwt = new JWT();
|
||||
for (String key : payloadClaims.keySet()) // run through all the keys from the payload
|
||||
{
|
||||
jwt.addClaim(key, payloadClaims.get(key)); // and write each claim to the jwt
|
||||
}
|
||||
return JWT.getEncoder().encode(jwt, signer); // sign and encode the JWT to a JSON string representation
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// read document token
|
||||
public static JWT ReadToken(String token)
|
||||
{
|
||||
try
|
||||
{
|
||||
// build a HMAC verifier using the token secret
|
||||
Verifier verifier = HMACVerifier.newVerifier(GetTokenSecret());
|
||||
return JWT.getDecoder().decode(token, verifier); // verify and decode the encoded string JWT to a rich object
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// check if the token is enabled
|
||||
public static Boolean TokenEnabled()
|
||||
{
|
||||
String secret = GetTokenSecret();
|
||||
return secret != null && !secret.isEmpty();
|
||||
}
|
||||
|
||||
// get token secret from the config parameters
|
||||
public static String GetTokenSecret()
|
||||
{
|
||||
return ConfigManager.GetProperty("files.docservice.secret");
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import com.jero.modules.ocr.entity.FileType;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class FileUtility
|
||||
{
|
||||
static {}
|
||||
|
||||
// get file type
|
||||
public static FileType GetFileType(String fileName)
|
||||
{
|
||||
String ext = GetFileExtension(fileName).toLowerCase();
|
||||
|
||||
// word type for document extensions
|
||||
if (ExtsDocument.contains(ext))
|
||||
return FileType.Word;
|
||||
|
||||
// cell type for spreadsheet extensions
|
||||
if (ExtsSpreadsheet.contains(ext))
|
||||
return FileType.Cell;
|
||||
|
||||
// slide type for presentation extensions
|
||||
if (ExtsPresentation.contains(ext))
|
||||
return FileType.Slide;
|
||||
|
||||
// default file type is word
|
||||
return FileType.Word;
|
||||
}
|
||||
|
||||
// document extensions
|
||||
public static List<String> ExtsDocument = Arrays.asList
|
||||
(
|
||||
".doc", ".docx", ".docm",
|
||||
".dot", ".dotx", ".dotm",
|
||||
".odt", ".fodt", ".ott", ".rtf", ".txt",
|
||||
".html", ".htm", ".mht", ".xml",
|
||||
".pdf", ".djvu", ".fb2", ".epub", ".xps", ".oxps", ".oform"
|
||||
);
|
||||
|
||||
// spreadsheet extensions
|
||||
public static List<String> ExtsSpreadsheet = Arrays.asList
|
||||
(
|
||||
".xls", ".xlsx", ".xlsm",
|
||||
".xlt", ".xltx", ".xltm",
|
||||
".ods", ".fods", ".ots", ".csv"
|
||||
);
|
||||
|
||||
// presentation extensions
|
||||
public static List<String> ExtsPresentation = Arrays.asList
|
||||
(
|
||||
".pps", ".ppsx", ".ppsm",
|
||||
".ppt", ".pptx", ".pptm",
|
||||
".pot", ".potx", ".potm",
|
||||
".odp", ".fodp", ".otp"
|
||||
);
|
||||
|
||||
|
||||
// get file name from the url
|
||||
public static String GetFileName(String url)
|
||||
{
|
||||
if (url == null) return "";
|
||||
|
||||
// get file name from the last part of url
|
||||
String fileName = url.substring(url.lastIndexOf('/') + 1, url.length());
|
||||
fileName = fileName.split("\\?")[0];
|
||||
return fileName;
|
||||
}
|
||||
|
||||
// get file name without extension
|
||||
public static String GetFileNameWithoutExtension(String url)
|
||||
{
|
||||
String fileName = GetFileName(url);
|
||||
if (fileName == null) return null;
|
||||
String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf('.'));
|
||||
return fileNameWithoutExt;
|
||||
}
|
||||
|
||||
// get file extension from url
|
||||
public static String GetFileExtension(String url)
|
||||
{
|
||||
String fileName = GetFileName(url);
|
||||
if (fileName == null) return null;
|
||||
String fileExt = fileName.substring(fileName.lastIndexOf("."));
|
||||
return fileExt.toLowerCase();
|
||||
}
|
||||
|
||||
// get url parameters
|
||||
public static Map<String, String> GetUrlParams(String url)
|
||||
{
|
||||
try
|
||||
{
|
||||
String query = new URL(url).getQuery(); // take all the parameters which are placed after ? sign in the file url
|
||||
String[] params = query.split("&"); // parameters are separated by & sign
|
||||
Map<String, String> map = new HashMap<>();
|
||||
for (String param : params) // write parameters and their values to the map dictionary
|
||||
{
|
||||
String name = param.split("=")[0];
|
||||
String value = param.split("=")[1];
|
||||
map.put(name, value);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,269 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
public class ServiceConverter
|
||||
{
|
||||
private static int ConvertTimeout = 120000;
|
||||
private static final String DocumentConverterUrl = ConfigManager.GetProperty("files.docservice.url.site") + ConfigManager.GetProperty("files.docservice.url.converter");
|
||||
private static final String DocumentJwtHeader = ConfigManager.GetProperty("files.docservice.header");
|
||||
|
||||
public static class ConvertBody
|
||||
{
|
||||
public String region;
|
||||
public String url;
|
||||
public String outputtype;
|
||||
public String filetype;
|
||||
public String title;
|
||||
public String key;
|
||||
public Boolean async;
|
||||
public String token;
|
||||
public String password;
|
||||
}
|
||||
|
||||
static
|
||||
{
|
||||
try
|
||||
{
|
||||
// get timeout value from the settings.properties
|
||||
int timeout = Integer.parseInt(ConfigManager.GetProperty("files.docservice.timeout"));
|
||||
if (timeout > 0) // if it's greater than 0
|
||||
{
|
||||
ConvertTimeout = timeout; // assign this value to a convert timeout
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// get the url of the converted file
|
||||
public static String GetConvertedUri(String documentUri, String fromExtension, String toExtension, String documentRevisionId, String filePass, Boolean isAsync, String lang) throws Exception
|
||||
{
|
||||
// check if the fromExtension parameter is defined; if not, get it from the document url
|
||||
fromExtension = fromExtension == null || fromExtension.isEmpty() ? FileUtility.GetFileExtension(documentUri) : fromExtension;
|
||||
|
||||
// check if the file name parameter is defined; if not, get random uuid for this file
|
||||
String title = FileUtility.GetFileName(documentUri);
|
||||
title = title == null || title.isEmpty() ? UUID.randomUUID().toString() : title;
|
||||
|
||||
documentRevisionId = documentRevisionId == null || documentRevisionId.isEmpty() ? documentUri : documentRevisionId;
|
||||
|
||||
documentRevisionId = GenerateRevisionId(documentRevisionId); // create document token
|
||||
|
||||
// write all the necessary parameters to the body object
|
||||
ConvertBody body = new ConvertBody();
|
||||
body.region = lang;
|
||||
body.url = documentUri;
|
||||
body.outputtype = toExtension.replace(".", "");
|
||||
body.filetype = fromExtension.replace(".", "");
|
||||
body.title = title;
|
||||
body.key = documentRevisionId;
|
||||
body.password = filePass;
|
||||
if (isAsync)
|
||||
body.async = true;
|
||||
|
||||
String headerToken = "";
|
||||
if (DocumentManager.TokenEnabled())
|
||||
{
|
||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("region", lang);
|
||||
map.put("url", body.url);
|
||||
map.put("outputtype", body.outputtype);
|
||||
map.put("filetype", body.filetype);
|
||||
map.put("title", body.title);
|
||||
map.put("key", body.key);
|
||||
map.put("password", body.password);
|
||||
if (isAsync)
|
||||
map.put("async", body.async);
|
||||
|
||||
// add token to the body if it is enabled
|
||||
String token = DocumentManager.CreateToken(map);
|
||||
body.token = token;
|
||||
|
||||
Map<String, Object> payloadMap = new HashMap<String, Object>();
|
||||
payloadMap.put("payload", map); // create payload object
|
||||
headerToken = DocumentManager.CreateToken(payloadMap); // create header token
|
||||
}
|
||||
|
||||
Gson gson = new Gson();
|
||||
String bodyString = gson.toJson(body);
|
||||
|
||||
byte[] bodyByte = bodyString.getBytes(StandardCharsets.UTF_8);
|
||||
|
||||
// specify request parameters
|
||||
URL url = new URL(DocumentConverterUrl);
|
||||
java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setDoOutput(true);
|
||||
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||
connection.setFixedLengthStreamingMode(bodyByte.length);
|
||||
connection.setRequestProperty("Accept", "application/json");
|
||||
connection.setConnectTimeout(ConvertTimeout);
|
||||
|
||||
// write header token to the request
|
||||
if (DocumentManager.TokenEnabled())
|
||||
{
|
||||
connection.setRequestProperty(DocumentJwtHeader.equals("") ? "Authorization" : DocumentJwtHeader, "Bearer " + headerToken);
|
||||
}
|
||||
|
||||
connection.connect();
|
||||
try (OutputStream os = connection.getOutputStream()) {
|
||||
os.write(bodyByte);
|
||||
}
|
||||
|
||||
InputStream stream = connection.getInputStream();
|
||||
|
||||
if (stream == null)
|
||||
throw new Exception("Could not get an answer");
|
||||
|
||||
// convert string to json
|
||||
String jsonString = ConvertStreamToString(stream);
|
||||
|
||||
connection.disconnect();
|
||||
|
||||
return GetResponseUri(jsonString);
|
||||
}
|
||||
|
||||
// generate document key
|
||||
public static String GenerateRevisionId(String expectedKey)
|
||||
{
|
||||
if (expectedKey.length() > 20) // if the expected key length is greater than 20
|
||||
expectedKey = Integer.toString(expectedKey.hashCode()); // the expected key is hashed and a fixed length value is stored in the string format
|
||||
|
||||
String key = UUIDUtils.randomUUID(2) + expectedKey.replace("[^0-9-.a-zA-Z_=]", "_");
|
||||
|
||||
return key.substring(0, Math.min(key.length(), 20)); // the resulting key length is 20 or less
|
||||
}
|
||||
|
||||
// create an error message for an error code
|
||||
private static void ProcessConvertServiceResponceError(int errorCode) throws Exception
|
||||
{
|
||||
String errorMessage = "";
|
||||
String errorMessageTemplate = "Error occurred in the ConvertService: ";
|
||||
|
||||
// add the error message to the error message template depending on the error code
|
||||
switch (errorCode)
|
||||
{
|
||||
case -8:
|
||||
errorMessage = errorMessageTemplate + "Error document VKey";
|
||||
break;
|
||||
case -7:
|
||||
errorMessage = errorMessageTemplate + "Error document request";
|
||||
break;
|
||||
case -6:
|
||||
errorMessage = errorMessageTemplate + "Error database";
|
||||
break;
|
||||
case -5:
|
||||
errorMessage = errorMessageTemplate + "Incorrect password";
|
||||
break;
|
||||
case -4:
|
||||
errorMessage = errorMessageTemplate + "Error download error";
|
||||
break;
|
||||
case -3:
|
||||
errorMessage = errorMessageTemplate + "Error convertation error";
|
||||
break;
|
||||
case -2:
|
||||
errorMessage = errorMessageTemplate + "Error convertation timeout";
|
||||
break;
|
||||
case -1:
|
||||
errorMessage = errorMessageTemplate + "Error convertation unknown";
|
||||
break;
|
||||
case 0: // if the error code is equal to 0, the error message is empty
|
||||
break;
|
||||
default:
|
||||
errorMessage = "ErrorCode = " + errorCode; // default value for the error message
|
||||
break;
|
||||
}
|
||||
|
||||
throw new Exception(errorMessage);
|
||||
}
|
||||
|
||||
// get the response url
|
||||
private static String GetResponseUri(String jsonString) throws Exception
|
||||
{
|
||||
JSONObject jsonObj = ConvertStringToJSON(jsonString);
|
||||
|
||||
Object error = jsonObj.get("error");
|
||||
if (error != null) // if an error occurs
|
||||
ProcessConvertServiceResponceError(Math.toIntExact((long)error)); // then get an error message
|
||||
|
||||
// check if the conversion is completed and save the result to a variable
|
||||
Boolean isEndConvert = (Boolean) jsonObj.get("endConvert");
|
||||
|
||||
Long resultPercent = 0l;
|
||||
String responseUri = null;
|
||||
|
||||
if (isEndConvert) // if the conversion is completed
|
||||
{
|
||||
resultPercent = 100l;
|
||||
responseUri = (String) jsonObj.get("fileUrl"); // get the file url
|
||||
}
|
||||
else // if the conversion isn't completed
|
||||
{
|
||||
resultPercent = (Long) jsonObj.get("percent");
|
||||
resultPercent = resultPercent >= 100l ? 99l : resultPercent; // get the percentage value
|
||||
}
|
||||
|
||||
return resultPercent >= 100l ? responseUri : "";
|
||||
}
|
||||
|
||||
// convert stream to string
|
||||
public static String ConvertStreamToString(InputStream stream) throws IOException
|
||||
{
|
||||
InputStreamReader inputStreamReader = new InputStreamReader(stream); // create an object to get incoming stream
|
||||
StringBuilder stringBuilder = new StringBuilder(); // create a string builder object
|
||||
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // create an object to read incoming streams
|
||||
String line = bufferedReader.readLine(); // get incoming streams by lines
|
||||
|
||||
while (line != null)
|
||||
{
|
||||
stringBuilder.append(line); // concatenate strings using the string builder
|
||||
line = bufferedReader.readLine();
|
||||
}
|
||||
|
||||
String result = stringBuilder.toString();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// convert string to json
|
||||
public static JSONObject ConvertStringToJSON(String jsonString) throws ParseException
|
||||
{
|
||||
JSONParser parser = new JSONParser();
|
||||
Object obj = parser.parse(jsonString); // parse json string
|
||||
JSONObject jsonObj = (JSONObject) obj; // and turn it into a json object
|
||||
|
||||
return jsonObj;
|
||||
}
|
||||
}
|
||||
@@ -1,323 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.primeframework.jwt.domain.JWT;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class TrackManager {
|
||||
private static final String DocumentJwtHeader = ConfigManager.GetProperty("files.docservice.header");
|
||||
|
||||
// read request body
|
||||
public static JSONObject readBody(HttpServletRequest request, PrintWriter writer) throws Exception {
|
||||
String bodyString = "";
|
||||
|
||||
try {
|
||||
// read request body by streams
|
||||
Scanner scanner = new Scanner(request.getInputStream());
|
||||
scanner.useDelimiter("\\A");
|
||||
bodyString = scanner.hasNext() ? scanner.next() : "";
|
||||
scanner.close();
|
||||
}
|
||||
catch (Exception ex) {
|
||||
writer.write("get request.getInputStream error:" + ex.getMessage());
|
||||
throw ex;
|
||||
}
|
||||
|
||||
// error when the bodyString object is empty
|
||||
if (bodyString.isEmpty()) {
|
||||
writer.write("empty request.getInputStream");
|
||||
throw new Exception("empty request.getInputStream");
|
||||
}
|
||||
|
||||
JSONParser parser = new JSONParser();
|
||||
JSONObject body;
|
||||
|
||||
try {
|
||||
Object obj = parser.parse(bodyString); // parse bodyString object
|
||||
body = (JSONObject) obj;
|
||||
} catch (Exception ex) {
|
||||
writer.write("JSONParser.parse error:" + ex.getMessage());
|
||||
throw ex;
|
||||
}
|
||||
|
||||
// if the secret key to generate token exists
|
||||
if (DocumentManager.TokenEnabled()) {
|
||||
String token = (String) body.get("token"); // get the document token
|
||||
|
||||
if (token == null) { // if JSON web token is not received
|
||||
String header = (String) request.getHeader(DocumentJwtHeader == null || DocumentJwtHeader.isEmpty() ? "Authorization" : DocumentJwtHeader); // get it from the Authorization header
|
||||
if (header != null && !header.isEmpty()) {
|
||||
token = header.startsWith("Bearer ") ? header.substring(7) : header; // and save it without Authorization prefix
|
||||
}
|
||||
}
|
||||
|
||||
if (token == null || token.isEmpty()) { // if the token is not received
|
||||
writer.write("{\"error\":1,\"message\":\"JWT expected\"}"); // an error occurs
|
||||
throw new Exception("{\"error\":1,\"message\":\"JWT expected\"}");
|
||||
}
|
||||
|
||||
JWT jwt = DocumentManager.ReadToken(token); // read token
|
||||
if (jwt == null) {
|
||||
writer.write("{\"error\":1,\"message\":\"JWT validation failed\"}"); // an error occurs
|
||||
throw new Exception("{\"error\":1,\"message\":\"JWT validation failed\"}");
|
||||
}
|
||||
|
||||
if (jwt.getObject("payload") != null) { // get the payload object from the request body
|
||||
try {
|
||||
@SuppressWarnings("unchecked") LinkedHashMap<String, Object> payload =
|
||||
(LinkedHashMap<String, Object>)jwt.getObject("payload");
|
||||
|
||||
jwt.claims = payload;
|
||||
} catch (Exception ex) {
|
||||
writer.write("{\"error\":1,\"message\":\"Wrong payload\"}");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
Gson gson = new Gson();
|
||||
Object obj = parser.parse(gson.toJson(jwt.claims));
|
||||
body = (JSONObject) obj;
|
||||
} catch (Exception ex) {
|
||||
writer.write("JSONParser.parse error:" + ex.getMessage());
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
return body;
|
||||
}
|
||||
|
||||
// file saving process
|
||||
public static void processSave(JSONObject body, String fileName, String userAddress) throws Exception {
|
||||
if (body.get("url") == null) {
|
||||
throw new Exception("DownloadUrl is null");
|
||||
}
|
||||
String downloadUri = (String) body.get("url");
|
||||
String changesUri = (String) body.get("changesurl");
|
||||
String key = (String) body.get("key");
|
||||
String newFileName = fileName;
|
||||
|
||||
String curExt = FileUtility.GetFileExtension(fileName); // get current file extension
|
||||
String downloadExt = FileUtility.GetFileExtension(downloadUri); // get the extension of the downloaded file
|
||||
|
||||
// convert downloaded file to the file with the current extension if these extensions aren't equal
|
||||
if (!curExt.equals(downloadExt)) {
|
||||
try {
|
||||
String newFileUri = ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), null, false, null); // convert file and get url to a new file
|
||||
if (newFileUri.isEmpty()) {
|
||||
newFileName = DocumentManager.GetCorrectName(FileUtility.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress); // get the correct file name if it already exists
|
||||
} else {
|
||||
downloadUri = newFileUri;
|
||||
}
|
||||
} catch (Exception e){
|
||||
newFileName = DocumentManager.GetCorrectName(FileUtility.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
|
||||
}
|
||||
}
|
||||
|
||||
String storagePath = DocumentManager.StoragePath(newFileName, userAddress); // get the file path
|
||||
File histDir = new File(DocumentManager.HistoryDir(storagePath)); // get the path to the history direction
|
||||
if (!histDir.exists()) histDir.mkdirs(); // if the path doesn't exist, create it
|
||||
|
||||
String versionDir = DocumentManager.VersionDir(histDir.getAbsolutePath(), DocumentManager.GetFileVersion(histDir.getAbsolutePath())); // get the path to the file version
|
||||
File ver = new File(versionDir);
|
||||
File lastVersion = new File(DocumentManager.StoragePath(fileName, userAddress));
|
||||
File toSave = new File(storagePath);
|
||||
|
||||
if (!ver.exists()) ver.mkdirs();
|
||||
|
||||
lastVersion.renameTo(new File(versionDir + File.separator + "prev" + curExt)); // get the path to the previous file version and rename the last file version with it
|
||||
|
||||
downloadToFile(downloadUri, toSave); // save file to the storage path
|
||||
downloadToFile(changesUri, new File(versionDir + File.separator + "diff.zip")); // save file changes to the diff.zip archive
|
||||
|
||||
String history = (String) body.get("changeshistory");
|
||||
if (history == null && body.containsKey("history")) {
|
||||
history = ((JSONObject) body.get("history")).toJSONString();
|
||||
}
|
||||
if (history != null && !history.isEmpty()) {
|
||||
FileWriter fw = new FileWriter(new File(versionDir + File.separator + "changes.json")); // write the history changes to the changes.json file
|
||||
fw.write(history);
|
||||
fw.close();
|
||||
}
|
||||
|
||||
FileWriter fw = new FileWriter(new File(versionDir + File.separator + "key.txt")); // write the key value to the key.txt file
|
||||
fw.write(key);
|
||||
fw.close();
|
||||
|
||||
String forcesavePath = DocumentManager.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
|
||||
if (!forcesavePath.equals("")) { // if the forcesaved file version exists
|
||||
File forceSaveFile = new File(forcesavePath);
|
||||
forceSaveFile.delete(); // remove it
|
||||
}
|
||||
}
|
||||
|
||||
// file force saving process
|
||||
public static void processForceSave(JSONObject body, String fileName, String userAddress) throws Exception {
|
||||
if (body.get("url") == null) {
|
||||
throw new Exception("DownloadUrl is null");
|
||||
}
|
||||
String downloadUri = (String) body.get("url");
|
||||
|
||||
String curExt = FileUtility.GetFileExtension(fileName); // get current file extension
|
||||
String downloadExt = FileUtility.GetFileExtension(downloadUri); // get the extension of the downloaded file
|
||||
Boolean newFileName = false;
|
||||
|
||||
// convert downloaded file to the file with the current extension if these extensions aren't equal
|
||||
if (!curExt.equals(downloadExt)) {
|
||||
try {
|
||||
String newFileUri = ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), null, false, null); // convert file and get url to a new file
|
||||
if (newFileUri.isEmpty()) {
|
||||
newFileName = true;
|
||||
} else {
|
||||
downloadUri = newFileUri;
|
||||
}
|
||||
} catch (Exception e){
|
||||
newFileName = true;
|
||||
}
|
||||
}
|
||||
|
||||
String forcesavePath = "";
|
||||
boolean isSubmitForm = body.get("forcesavetype").toString().equals("3"); // SubmitForm
|
||||
|
||||
if (isSubmitForm) { // if the form is submitted
|
||||
// new file
|
||||
if (newFileName){
|
||||
fileName = DocumentManager.GetCorrectName(FileUtility.GetFileNameWithoutExtension(fileName) + "-form" + downloadExt, userAddress); // get the correct file name if it already exists
|
||||
} else {
|
||||
fileName = DocumentManager.GetCorrectName(FileUtility.GetFileNameWithoutExtension(fileName) + "-form" + curExt, userAddress);
|
||||
}
|
||||
forcesavePath = DocumentManager.StoragePath(fileName, userAddress);
|
||||
} else {
|
||||
if (newFileName){
|
||||
fileName = DocumentManager.GetCorrectName(FileUtility.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
|
||||
}
|
||||
|
||||
// create forcesave path if it doesn't exist
|
||||
forcesavePath = DocumentManager.ForcesavePath(fileName, userAddress, false);
|
||||
if (forcesavePath == "") {
|
||||
forcesavePath = DocumentManager.ForcesavePath(fileName, userAddress, true);
|
||||
}
|
||||
}
|
||||
|
||||
File toSave = new File(forcesavePath);
|
||||
downloadToFile(downloadUri, toSave);
|
||||
|
||||
if (isSubmitForm) {
|
||||
JSONArray actions = (JSONArray) body.get("actions");
|
||||
JSONObject action = (JSONObject) actions.get(0);
|
||||
String user = (String) action.get("userid"); // get the user id
|
||||
DocumentManager.CreateMeta(fileName, user, "Filling Form", userAddress); // create meta data for forcesaved file
|
||||
}
|
||||
}
|
||||
|
||||
// save file information from the url to the file specified
|
||||
private static void downloadToFile(String url, File file) throws Exception {
|
||||
if (url == null || url.isEmpty()) throw new Exception("argument url"); // url isn't specified
|
||||
if (file == null) throw new Exception("argument path"); // file isn't specified
|
||||
|
||||
URL uri = new URL(url);
|
||||
java.net.HttpURLConnection connection = (java.net.HttpURLConnection) uri.openConnection();
|
||||
InputStream stream = connection.getInputStream(); // get input stream of the file information from the url
|
||||
|
||||
if (stream == null)
|
||||
{
|
||||
throw new Exception("Stream is null");
|
||||
}
|
||||
|
||||
try (FileOutputStream out = new FileOutputStream(file))
|
||||
{
|
||||
int read;
|
||||
final byte[] bytes = new byte[1024];
|
||||
while ((read = stream.read(bytes)) != -1)
|
||||
{
|
||||
out.write(bytes, 0, read); // write bytes to the output stream
|
||||
}
|
||||
|
||||
// force write data to the output stream that can be cached in the current thread
|
||||
out.flush();
|
||||
}
|
||||
|
||||
connection.disconnect();
|
||||
}
|
||||
|
||||
// create a command request
|
||||
public static void commandRequest(String method, String key) throws Exception {
|
||||
String DocumentCommandUrl = ConfigManager.GetProperty("files.docservice.url.site") + ConfigManager.GetProperty("files.docservice.url.command");
|
||||
|
||||
URL url = new URL(DocumentCommandUrl);
|
||||
java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
|
||||
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("c", method);
|
||||
params.put("key", key);
|
||||
|
||||
String headerToken = "";
|
||||
if (DocumentManager.TokenEnabled()) // check if a secret key to generate token exists or not
|
||||
{
|
||||
Map<String, Object> payloadMap = new HashMap<String, Object>();
|
||||
payloadMap.put("payload", params);
|
||||
headerToken = DocumentManager.CreateToken(payloadMap); // encode a payload object into a header token
|
||||
|
||||
// add a header Authorization with a header token and Authorization prefix in it
|
||||
connection.setRequestProperty(DocumentJwtHeader.equals("") ? "Authorization" : DocumentJwtHeader, "Bearer " + headerToken);
|
||||
|
||||
String token = DocumentManager.CreateToken(params); // encode a payload object into a body token
|
||||
params.put("token", token);
|
||||
}
|
||||
|
||||
Gson gson = new Gson();
|
||||
String bodyString = gson.toJson(params);
|
||||
|
||||
byte[] bodyByte = bodyString.getBytes(StandardCharsets.UTF_8);
|
||||
|
||||
connection.setRequestMethod("POST"); // set the request method
|
||||
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); // set the Content-Type header
|
||||
connection.setDoOutput(true); // set the doOutput field to true
|
||||
|
||||
connection.connect();
|
||||
try (OutputStream os = connection.getOutputStream()) {
|
||||
os.write(bodyByte); // write bytes to the output stream
|
||||
}
|
||||
InputStream stream = connection.getInputStream();; // get input stream
|
||||
|
||||
if (stream == null)
|
||||
throw new Exception("Could not get an answer");
|
||||
|
||||
String jsonString = ServiceConverter.ConvertStreamToString(stream); // convert stream to json string
|
||||
connection.disconnect();
|
||||
|
||||
JSONObject response = ServiceConverter.ConvertStringToJSON(jsonString); // convert json string to json object
|
||||
if (!response.get("error").toString().equals("0")){
|
||||
throw new Exception(response.toJSONString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.jero.modules.ocr.helpers;
|
||||
|
||||
import com.jero.modules.ocr.entity.CommentGroups;
|
||||
import com.jero.modules.ocr.entity.User;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class Users {
|
||||
|
||||
static List<String> descr_user_1 = new ArrayList<String>() {{
|
||||
add("File author by default");
|
||||
add("Doesn’t belong to any group");
|
||||
add("Can review all the changes");
|
||||
add("Can perform all actions with comments");
|
||||
add("The file favorite state is undefined");
|
||||
add("Can create files from templates using data from the editor");
|
||||
}};
|
||||
|
||||
static List<String> descr_user_2 = new ArrayList<String>() {{
|
||||
add("Belongs to Group2");
|
||||
add("Can review only his own changes or changes made by users with no group");
|
||||
add("Can view comments, edit his own comments and comments left by users with no group. Can remove his own comments only");
|
||||
add("This file is marked as favorite");
|
||||
add("Can create new files from the editor");
|
||||
}};
|
||||
|
||||
static List<String> descr_user_3 = new ArrayList<String>() {{
|
||||
add("Belongs to Group3");
|
||||
add("Can review changes made by Group2 users");
|
||||
add("Can view comments left by Group2 and Group3 users. Can edit comments left by Group2 users");
|
||||
add("This file isn’t marked as favorite");
|
||||
add("Can’t copy data from the file to clipboard");
|
||||
add("Can’t download the file");
|
||||
add("Can’t print the file");
|
||||
add("Can create new files from the editor");
|
||||
}};
|
||||
|
||||
static List<String> descr_user_0 = new ArrayList<String>() {{
|
||||
add("The name is requested when the editor is opened");
|
||||
add("Doesn’t belong to any group");
|
||||
add("Can review all the changes");
|
||||
add("Can perform all actions with comments");
|
||||
add("The file favorite state is undefined");
|
||||
add("Can't mention others in comments");
|
||||
add("Can't create new files from the editor");
|
||||
}};
|
||||
|
||||
private static List<User> users = new ArrayList<User>() {{
|
||||
add(new User("uid-1", "John Smith", "smith@example.com",
|
||||
null, null, new CommentGroups(),
|
||||
null, new ArrayList<String>(), descr_user_1, true));
|
||||
add(new User("uid-2", "Mark Pottato", "pottato@example.com",
|
||||
"group-2", Arrays.asList("group-2", ""), new CommentGroups(null, Arrays.asList("group-2", ""), Arrays.asList("group-2")),
|
||||
true, new ArrayList<String>(), descr_user_2, false));
|
||||
add(new User("uid-3", "Hamish Mitchell", "mitchell@example.com",
|
||||
"group-3", Arrays.asList("group-2"), new CommentGroups(Arrays.asList("group-3", "group-2"), Arrays.asList("group-2"), new ArrayList<String>()),
|
||||
false, Arrays.asList("copy", "download", "print"), descr_user_3, false));
|
||||
add(new User("uid-0", null, null,
|
||||
null, null, new CommentGroups(),
|
||||
null, new ArrayList<String>(), descr_user_0, false));
|
||||
}};
|
||||
|
||||
// get a user by id specified
|
||||
public static User getUser (String id) {
|
||||
for (User user : users) {
|
||||
if (user.id.equals(id)) {
|
||||
return user;
|
||||
}
|
||||
}
|
||||
return users.get(0);
|
||||
}
|
||||
|
||||
// get a list of all the users
|
||||
public static List<User> getAllUsers () {
|
||||
return users;
|
||||
}
|
||||
|
||||
// get a list of users with their names and emails for mentions
|
||||
public static List<Map<String, Object>> getUsersForMentions (String id) {
|
||||
List<Map<String, Object>> usersData = new ArrayList<>();
|
||||
for (User user : users) {
|
||||
if (!user.id.equals(id) && user.name != null && user.email != null) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("name", user.name);
|
||||
data.put("email", user.email);
|
||||
usersData.add(data);
|
||||
}
|
||||
}
|
||||
return usersData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
package com.jero.modules.ocr.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.ocr.entity.OcrRecordEO;
|
||||
|
||||
/**
|
||||
* @Description: OCR识别转换记录表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-02-16
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface OcrRecordEOMapper extends BaseMapper<OcrRecordEO> {
|
||||
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
<?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.ocr.mapper.OcrRecordEOMapper">
|
||||
<resultMap id="OcrRecordResultMap" type="com.jero.modules.ocr.entity.OcrRecordEO">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="sys_org_code" property="sysOrgCode" />
|
||||
<result column="stand_name" property="standName" />
|
||||
<result column="stand_name_en" property="standNameEn" />
|
||||
<result column="stand_number" property="standNumber" />
|
||||
<result column="file_type" property="fileType" />
|
||||
<result column="file_name" property="fileName" />
|
||||
<result column="result_content" property="resultContent" />
|
||||
<result column="doc_name" property="docName" />
|
||||
<result column="doc_real_name" property="docRealName" />
|
||||
<result column="word_file_code" property="wordFileCode" />
|
||||
<result column="json_name" property="jsonName" />
|
||||
<result column="json_real_name" property="jsonRealName" />
|
||||
<result column="json_file_code" property="jsonFileCode" />
|
||||
<result column="att_id" property="attId" />
|
||||
<result column="sync_state" property="syncState" />
|
||||
<result column="connect_id" property="connectId" />
|
||||
<result column="check_flag" property="checkFlag" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -1,98 +0,0 @@
|
||||
package com.jero.modules.ocr.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.ocr.entity.OcrRecordEO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: OCR识别转换记录表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-02-16
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IOcrRecordEOService extends IService<OcrRecordEO> {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param ocrRecordEO
|
||||
* @return
|
||||
*/
|
||||
void add(OcrRecordEO ocrRecordEO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param ocrRecordEO
|
||||
* @return
|
||||
*/
|
||||
void editById(OcrRecordEO ocrRecordEO);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void deleteById(String id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
OcrRecordEO queryById(String id);
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<OcrRecordEO> queryList();
|
||||
|
||||
/**
|
||||
* 列表表头中英文切换
|
||||
* @param flag
|
||||
* @param cut
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> getHeader(String flag, String cut);
|
||||
|
||||
/**
|
||||
* 查询条件中英文切换
|
||||
* @param flag
|
||||
* @param cut
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> queryCondition(String flag, String cut);
|
||||
|
||||
/**
|
||||
* 表单中英文切换
|
||||
* @param flag
|
||||
* @param cut
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> getForm(String flag, String cut);
|
||||
|
||||
/**
|
||||
* 处理列表数据字典值中英文切换
|
||||
* @param cut
|
||||
* @param ocrRecordEOList
|
||||
* @return
|
||||
*/
|
||||
void dataProcessing(String cut, List<OcrRecordEO> ocrRecordEOList);
|
||||
|
||||
void batchUpdateByDocumentSerialNumber(String oldSerialNumber,String newSerialNumber,String newTitle,String newTitleEn);
|
||||
|
||||
}
|
||||
-328
@@ -1,328 +0,0 @@
|
||||
package com.jero.modules.ocr.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.constant.enums.ModuleEnum;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.ocr.entity.OcrRecordEO;
|
||||
import com.jero.modules.ocr.enums.FileSourceEnum;
|
||||
import com.jero.modules.ocr.mapper.OcrRecordEOMapper;
|
||||
import com.jero.modules.ocr.service.IOcrRecordEOService;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.ISysDictItemService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: OCR识别转换记录表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-02-16
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class OcrRecordEOServiceImpl extends ServiceImpl<OcrRecordEOMapper, OcrRecordEO> implements IOcrRecordEOService {
|
||||
|
||||
@Autowired
|
||||
private OnlCgformFieldServiceImpl onlCgformFieldService;
|
||||
|
||||
@Autowired
|
||||
private ISysDictItemService sysDictItemService;
|
||||
|
||||
@Value("${OCR.ocrDownPath}")
|
||||
private String ocrDownPath;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param ocrRecordEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(OcrRecordEO ocrRecordEO) {
|
||||
Date now = new Date();
|
||||
ocrRecordEO.setCreateTime(now);
|
||||
ocrRecordEO.setUpdateTime(now);
|
||||
save(ocrRecordEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param ocrRecordEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(OcrRecordEO ocrRecordEO) {
|
||||
Date now = new Date();
|
||||
ocrRecordEO.setUpdateTime(now);
|
||||
saveOrUpdate(ocrRecordEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
//TODO 删除对应的本地文件
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
//TODO 删除对应的本地文件
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public OcrRecordEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<OcrRecordEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表表头中英文切换
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getHeader(String flag, String cut) {
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤列表字段(is_show_list-->列表是否显示0否 1是)
|
||||
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))).collect(Collectors.toList());
|
||||
}
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
if("file_name".equals(onlCgformField.getDbFieldName())){
|
||||
//跳转详情的标识
|
||||
map.put("click","true");
|
||||
}
|
||||
//单独处理发布日期和标准实施日期
|
||||
if ("update_time".equals(onlCgformField.getDbFieldName())) {
|
||||
map.put("sort", "true");//列表排序标识
|
||||
}
|
||||
|
||||
String dbFieldName = onlCgformField.getDbFieldName();
|
||||
if(LanguageEnum.CN.getValue().equals(cut) && "stand_name_en".equals(onlCgformField.getDbFieldName())) {
|
||||
continue;
|
||||
}
|
||||
if(LanguageEnum.EN.getValue().equals(cut) && "stand_name".equals(onlCgformField.getDbFieldName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
map.put("db_field_name", LineHumpUtil.lineToHump(dbFieldName));//字段
|
||||
if(LanguageEnum.CN.getValue().equals(cut)){
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
}else{
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
}
|
||||
list.add(map);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询条件中英文切换
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> queryCondition(String flag, String cut) {
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤出搜索条件()
|
||||
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsQuery()))).collect(Collectors.toList());
|
||||
}
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("field_show_type", onlCgformField.getFieldShowType());//类型(判断是下拉还是输入框,等等)
|
||||
map.put("dict_field", onlCgformField.getDictField()); //下拉类型的数据字典编码
|
||||
map.put("db_field_name", LineHumpUtil.lineToHump(onlCgformField.getDbFieldName()));//字段
|
||||
if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
} else {
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
}
|
||||
list.add(map);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单中英文切换
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getForm(String flag, String cut) {
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤出表单字段
|
||||
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowForm()))).collect(Collectors.toList());
|
||||
}
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("area", null);//展示区域。没用到
|
||||
map.put("field_show_type", onlCgformField.getFieldShowType());//类型(判断是下拉还是输入框,等等)
|
||||
map.put("field_must_input", onlCgformField.getFieldMustInput());//是否必填
|
||||
map.put("dict_field", onlCgformField.getDictField()); //下拉类型的数据字典编码
|
||||
map.put("db_field_name", LineHumpUtil.lineToHump(onlCgformField.getDbFieldName()));//字段
|
||||
if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
} else {
|
||||
if("stand_name_en".equals(onlCgformField.getDbFieldName())) { // 英文标题字段特殊处理
|
||||
map.put("db_field_txt", "English Title");
|
||||
} else {
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
}
|
||||
}
|
||||
if("文本状态".equals(onlCgformField.getDbFieldTxt())){
|
||||
// 查询文档库所有文件类型的字段名称
|
||||
List<OnlCgformField> documentLibraryFieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue());
|
||||
documentLibraryFieldList = documentLibraryFieldList.stream()
|
||||
.filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
|
||||
List<Map<String, String>> fieldFileList = new ArrayList<>();
|
||||
for (OnlCgformField field : documentLibraryFieldList) {
|
||||
Map<String, String> map1 = new HashMap<>();
|
||||
if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
map1.put("label",field.getDbFieldTxt());
|
||||
map1.put("value",field.getId());
|
||||
|
||||
} else {
|
||||
map1.put("label",field.getDbFieldEnName());
|
||||
map1.put("value",field.getId());
|
||||
|
||||
}
|
||||
fieldFileList.add(map1);
|
||||
}
|
||||
map.put("value_list",fieldFileList);
|
||||
}
|
||||
list.add(map);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataProcessing(String cut, List<OcrRecordEO> ocrRecordEOList) {
|
||||
// 查询文档拆分表中类型是下拉选的字段
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(ModuleEnum.OCR_RECORD.getValue());
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤列表字段(is_show_list-->列表是否显示0否 1是 且 有数据字典编码)
|
||||
fieldList = fieldList.stream()
|
||||
.filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))
|
||||
&& StringUtils.isNotBlank(e.getDictField()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
// 根据切换语言 查询下拉选字段的下拉值
|
||||
List<SysDictItem> dictItemListAll = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
// 查询数据字典值
|
||||
List<SysDictItem> dictItemList = sysDictItemService.selectItemsByDictCode(onlCgformField.getDictField());
|
||||
if(CollectionUtil.isNotEmpty(dictItemList)) {
|
||||
dictItemListAll.addAll(dictItemList);
|
||||
}
|
||||
}
|
||||
|
||||
// 处理数据中所有下拉字典值
|
||||
for (OcrRecordEO ocrRecordEO : ocrRecordEOList){
|
||||
String fileType = null;
|
||||
OnlCgformField fileTypeField = onlCgformFieldService.queryById(ocrRecordEO.getFileType());
|
||||
if (ObjectUtil.isNotEmpty(fileTypeField)) {
|
||||
if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
fileType = fileTypeField.getDbFieldTxt();
|
||||
} else {
|
||||
fileType = fileTypeField.getDbFieldEnName();
|
||||
}
|
||||
}
|
||||
if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
Map<String, String> cnMap = dictItemListAll.stream()
|
||||
.filter(e->e.getItemValue().equals(ocrRecordEO.getResultContent())
|
||||
|| e.getItemValue().equals(ocrRecordEO.getSyncState()))
|
||||
.collect(Collectors.toMap(SysDictItem::getItemValue, SysDictItem::getItemText)); // 优化
|
||||
ocrRecordEO.setResultContent(cnMap.get(ocrRecordEO.getResultContent()));
|
||||
ocrRecordEO.setSyncState(cnMap.get(ocrRecordEO.getSyncState()));
|
||||
} else {
|
||||
Map<String, String> enMap = dictItemListAll.stream()
|
||||
.filter(e->e.getItemValue().equals(ocrRecordEO.getResultContent())
|
||||
|| e.getItemValue().equals(ocrRecordEO.getSyncState()))
|
||||
.collect(Collectors.toMap(SysDictItem::getItemValue, SysDictItem::getEnName)); // 优化
|
||||
|
||||
ocrRecordEO.setResultContent(enMap.get(ocrRecordEO.getResultContent()));
|
||||
ocrRecordEO.setSyncState(enMap.get(ocrRecordEO.getSyncState()));
|
||||
}
|
||||
ocrRecordEO.setFileType(fileType);
|
||||
if(StringUtils.isNotEmpty(ocrRecordEO.getConnectId())) {
|
||||
ocrRecordEO.setFileSource(FileSourceEnum.IMPORT.getValue());
|
||||
}else{
|
||||
ocrRecordEO.setFileSource(FileSourceEnum.UPLOAD.getValue());
|
||||
}
|
||||
if(StringUtils.isNotEmpty(ocrRecordEO.getDocRealName())) {
|
||||
ocrRecordEO.setDocRealFile(ocrDownPath + ocrRecordEO.getDocRealName());
|
||||
}
|
||||
if(StringUtils.isNotEmpty(ocrRecordEO.getJsonRealName())) {
|
||||
ocrRecordEO.setJsonRealFile(ocrDownPath + ocrRecordEO.getJsonRealName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchUpdateByDocumentSerialNumber(String oldSerialNumber,String newSerialNumber,String newTitle,String newTitleEn) {
|
||||
LambdaQueryWrapper<OcrRecordEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(OcrRecordEO::getStandNumber, oldSerialNumber);
|
||||
List<OcrRecordEO> ocrRecordEOList = list(lambdaQueryWrapper);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(ocrRecordEOList)) {
|
||||
List<OcrRecordEO> updateOcrRecordEOList = new ArrayList<>();
|
||||
ocrRecordEOList.forEach(ocrRecordEO ->{
|
||||
OcrRecordEO updateEO = new OcrRecordEO();
|
||||
updateEO.setId(ocrRecordEO.getId());
|
||||
updateEO.setStandNumber(newSerialNumber);
|
||||
updateEO.setStandName(newTitle);
|
||||
updateEO.setStandNameEn(newTitleEn);
|
||||
|
||||
updateOcrRecordEOList.add(updateEO);
|
||||
});
|
||||
|
||||
updateBatchById(updateOcrRecordEOList);
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
package com.jero.modules.onlyoffice.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
//import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.modules.onlyoffice.entity.AttFileEO;
|
||||
import com.jero.modules.onlyoffice.entity.AttFileVo;
|
||||
import com.jero.modules.onlyoffice.mapper.AttFileEODao;
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
package com.jero.modules.phone.entity;
|
||||
|
||||
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.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 最近浏览表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2023-06-08
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("recent_browse")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="recent_browse对象", description="最近浏览表")
|
||||
public class RecentBrowse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysOrgCode;
|
||||
|
||||
/**浏览类型*/
|
||||
@Excel(name = "浏览类型", width = 15)
|
||||
@ApiModelProperty(value = "浏览类型")
|
||||
private String browseType;
|
||||
|
||||
/**浏览数据id*/
|
||||
@Excel(name = "浏览数据id", width = 15)
|
||||
@ApiModelProperty(value = "浏览数据id")
|
||||
private String browseDataId;
|
||||
|
||||
// 展示标题
|
||||
@TableField(exist = false)
|
||||
private String title;
|
||||
|
||||
// 浏览类型展示字段
|
||||
@TableField(exist = false)
|
||||
private String browseTypeName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String cut;
|
||||
|
||||
// 法规月报专用
|
||||
@TableField(exist = false)
|
||||
private String fileId;
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
package com.jero.modules.phone.enums;
|
||||
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* 浏览类型枚举类
|
||||
*/
|
||||
public enum BrowseTypeEnum {
|
||||
WDK("Document Library", "文档库", "Document Library"),
|
||||
ZSFX("Knowledge sharing", "知识分享", "Knowledge Sharing"),
|
||||
FGYB("Regulatory Monthly Report", "法规月报", "Regulatory Monthly Report"),
|
||||
;
|
||||
|
||||
|
||||
String cnName;
|
||||
String enName;
|
||||
String value;
|
||||
|
||||
private BrowseTypeEnum(String value, String cnName, String enName) {
|
||||
this.value = value;
|
||||
this.cnName = cnName;
|
||||
this.enName = enName;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public String getCnName() {
|
||||
return cnName;
|
||||
}
|
||||
|
||||
public String getEnName() {
|
||||
return enName;
|
||||
}
|
||||
|
||||
|
||||
public static String getTextByValue(String value, String cut) {
|
||||
BrowseTypeEnum[] values = values();
|
||||
for (BrowseTypeEnum taskStatusEnum : values) {
|
||||
if (taskStatusEnum.value.equals(value)) {
|
||||
if (StringUtils.equals(cut, LanguageEnum.CN.getValue())) {
|
||||
return taskStatusEnum.cnName;
|
||||
} else {
|
||||
return taskStatusEnum.enName;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package com.jero.modules.phone.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.phone.entity.RecentBrowse;
|
||||
|
||||
/**
|
||||
* @Description: 最近浏览表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2023-06-08
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface RecentBrowseMapper extends BaseMapper<RecentBrowse> {
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?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.phone.mapper.RecentBrowseMapper">
|
||||
<resultMap id="RecentBrowseResultMap" type="com.jero.modules.phone.entity.RecentBrowse">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="sys_org_code" property="sysOrgCode" />
|
||||
<result column="browse_type" property="browseType" />
|
||||
<result column="browse_data_id" property="browseDataId" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -1,14 +0,0 @@
|
||||
package com.jero.modules.phone.service;
|
||||
|
||||
import com.jero.common.api.vo.Result;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface ISearchCenterService {
|
||||
|
||||
// Result<Map<String, Object>> getDataCount();
|
||||
|
||||
// Result<Map<String, Object>> getWdkCollectAndSubscribeInfoByUser(Map<String,Object> params);
|
||||
|
||||
// Result<?> getWdkPage(Map<String, Object> params);
|
||||
}
|
||||
-349
@@ -1,349 +0,0 @@
|
||||
package com.jero.modules.phone.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.es.JeroElasticsearchTemplate;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.DateUtils;
|
||||
//import com.jero.modules.collection.entity.OnlCgformCollection;
|
||||
//import com.jero.modules.collection.service.IOnlCgformCollectionService;
|
||||
import com.jero.modules.document.enums.SearchEnum;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.enums.DictCodeEnum;
|
||||
import com.jero.modules.phone.service.ISearchCenterService;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class SearchCenterServiceImpl implements ISearchCenterService {
|
||||
|
||||
@Autowired
|
||||
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
|
||||
// @Autowired
|
||||
// private IOnlCgformCollectionService onlCgformCollectionService;
|
||||
@Autowired
|
||||
private JeroElasticsearchTemplate jeroElasticsearchTemplate;
|
||||
public static final String SEARCH_FLAG = "魑";//标识(es数据带此标识的代表全文和段落的数据,不带此标识的代表列表数据)
|
||||
@Autowired
|
||||
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||
|
||||
// @Override
|
||||
// public Result<Map<String, Object>> getDataCount() {
|
||||
// Map<String, Object> result = new HashMap<>();
|
||||
// Map<String, Object> params = new HashMap<>();
|
||||
// params.put("cut", LanguageEnum.CN.getValue());
|
||||
// params.put("pageNo", "1");
|
||||
// params.put("pageSize", "10");
|
||||
// IPage documentLibraryInfoPage = this.bussDocumentLibraryEOService.getInfoPage(params);
|
||||
// long documentLibraryCount = documentLibraryInfoPage.getTotal();
|
||||
//
|
||||
// result.put("documentLibraryCount", documentLibraryCount);
|
||||
// return Result.OK(result);
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public Result<Map<String, Object>> getWdkCollectAndSubscribeInfoByUser(Map<String,Object> params) {
|
||||
// LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
// Map<String, Object> result = new HashMap<>();
|
||||
//
|
||||
// String id = (String) params.get("id");
|
||||
// QueryWrapper<OnlCgformCollection> collectionQueryWrap = new QueryWrapper<>();
|
||||
// collectionQueryWrap.lambda().eq(OnlCgformCollection::getDocumentId, id);
|
||||
// collectionQueryWrap.lambda().eq(OnlCgformCollection::getCreateBy, currentUser.getUsername());
|
||||
// List<OnlCgformCollection> collectionList = this.onlCgformCollectionService.list(collectionQueryWrap);
|
||||
//
|
||||
// result.put("collectionList", collectionList);
|
||||
// return Result.OK(result);
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public Result<?> getWdkPage(Map<String, Object> params) {
|
||||
// boolean indexExistsFlag = true;
|
||||
// String cut = (String) params.get("cut");
|
||||
// Integer pageNo = Integer.parseInt(params.get("pageNo").toString());
|
||||
// Integer pageSize = Integer.parseInt(params.get("pageSize").toString());
|
||||
// if (StringUtils.equals(cut, LanguageEnum.CN.getValue())) {
|
||||
// indexExistsFlag = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_CN.getValue());
|
||||
// } else if (StringUtils.equals(cut, LanguageEnum.EN.getValue())) {
|
||||
// indexExistsFlag = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_EN.getValue());
|
||||
// }
|
||||
// if (!indexExistsFlag) {
|
||||
// Page page = new Page(pageNo, pageSize);
|
||||
// return Result.OK(page);
|
||||
// }
|
||||
//
|
||||
// // 定义需要查询的字段数组
|
||||
// List<String> fieldList = new ArrayList<>();
|
||||
// fieldList.add("serial_number");
|
||||
// if (StringUtils.equals(cut, LanguageEnum.EN.getValue())) {
|
||||
// fieldList.add("title_en");
|
||||
// } else if (StringUtils.equals(cut, LanguageEnum.CN.getValue())){
|
||||
// fieldList.add("title");
|
||||
// }
|
||||
// fieldList.add("content");
|
||||
// fieldList.add("flag");
|
||||
//
|
||||
// JSONArray queryMapJsonAll = new JSONArray();
|
||||
// JSONArray queryJsonMustNot = new JSONArray();
|
||||
//
|
||||
// JSONArray queryMapInputJson = new JSONArray();
|
||||
// Map<String, Object> mapHighlight = new HashMap<>();
|
||||
// Map<String, Object> mapHighlight1 = new HashMap<>();
|
||||
//
|
||||
// String selectValue = (String) params.get("selectValue");
|
||||
// if(StringUtils.isNotBlank(selectValue)){
|
||||
// Map<String,Object> map = new HashMap<>();
|
||||
// Map<String,Object> map1 = new HashMap<>();
|
||||
// Map<String,Object> map2 = new HashMap<>();
|
||||
// map.put("query",SEARCH_FLAG);
|
||||
// map1.put("flag",map);
|
||||
// map2.put("match",map1);
|
||||
// queryJsonMustNot.add(map2);
|
||||
// }else {
|
||||
// selectValue = SEARCH_FLAG;
|
||||
// }
|
||||
// if (StringUtils.isNotBlank(selectValue)) {
|
||||
// for (String field : fieldList) {
|
||||
// this.setQueryMapJson(queryMapInputJson, selectValue, field);
|
||||
// //高亮
|
||||
// if(!"flag".equals(field)){
|
||||
// this.wdkHighlight(mapHighlight, field);
|
||||
// } else {
|
||||
// // query_string查询
|
||||
// Map<String, Object> map25 = new HashMap<>();
|
||||
// Map<String, Object> map45 = new HashMap<>();
|
||||
// map25.put("query", selectValue);
|
||||
// map25.put("fields", fieldList.toArray());
|
||||
// map25.put("allow_leading_wildcard", false); //禁用了前置通配符
|
||||
// map45.put("query_string", map25);
|
||||
// queryMapInputJson.add(map45);
|
||||
// }
|
||||
// }
|
||||
// mapHighlight1.put("fields", mapHighlight);
|
||||
//
|
||||
// if (CollectionUtils.isNotEmpty(queryMapInputJson)) {
|
||||
// JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapInputJson);
|
||||
// queryMapJsonAll.add(jsonObject);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// //指定module_type_flag= WDK
|
||||
// JSONArray moduleTypeFlagQueryJsonArrMust = new JSONArray();
|
||||
// Map<String, Object> moduleTypeFlagValueMap = new HashMap<>();
|
||||
// Map<String, Object> moduleTypeFlagFieldMap = new HashMap<>();
|
||||
// Map<String, Object> moduleTypeFlagMatchMap = new HashMap<>();
|
||||
// moduleTypeFlagValueMap.put("query", "WDK");
|
||||
// moduleTypeFlagFieldMap.put("module_type_flag", moduleTypeFlagValueMap);
|
||||
// moduleTypeFlagMatchMap.put("match", moduleTypeFlagFieldMap);
|
||||
// moduleTypeFlagQueryJsonArrMust.add(moduleTypeFlagMatchMap);
|
||||
// JSONObject moduleTypeFlagQueryJson = jeroElasticsearchTemplate.buildBoolQuery(moduleTypeFlagQueryJsonArrMust, null, null);
|
||||
// queryMapJsonAll.add(moduleTypeFlagQueryJson);
|
||||
//
|
||||
// JSONObject querySort = new JSONObject();
|
||||
// if (StringUtils.isEmpty(selectValue) || StringUtils.equals(selectValue, SEARCH_FLAG)) {
|
||||
// Map<String, Object> createTime = new HashMap<>();
|
||||
// Map<String, Object> createTime1 = new HashMap<>();
|
||||
// createTime.put("order", "desc");
|
||||
// createTime1.put("create_time", createTime);
|
||||
// querySort.putAll(createTime1);
|
||||
// } else {
|
||||
// Map<String, Object> score = new HashMap<>();
|
||||
// Map<String, Object> score1 = new HashMap<>();
|
||||
// score.put("order", "desc");
|
||||
// score1.put("_score", score);
|
||||
// querySort.putAll(score1);
|
||||
// }
|
||||
//
|
||||
// IPage page = this.getWdkPage(
|
||||
// queryMapJsonAll,
|
||||
// mapHighlight1,
|
||||
// pageNo,
|
||||
// pageSize,
|
||||
// cut,
|
||||
// querySort,
|
||||
// queryJsonMustNot,
|
||||
// null
|
||||
// );
|
||||
// return Result.OK(page);
|
||||
// }
|
||||
|
||||
// @NotNull
|
||||
// private IPage getWdkPage(JSONArray queryMapJson,
|
||||
// Map<String,Object> highlightMap,
|
||||
// Integer pageNo,
|
||||
// Integer pageSize,
|
||||
// String cut,
|
||||
// JSONObject querySort,
|
||||
// JSONArray queryMustNot,
|
||||
// JSONArray queryShould) {
|
||||
// JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, queryMustNot, queryShould);
|
||||
// JSONArray jsonArraySort = new JSONArray();
|
||||
// jsonArraySort.add(querySort);
|
||||
//
|
||||
// //1. 条件,分页
|
||||
// JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(
|
||||
// null,
|
||||
// jsonObject,
|
||||
// highlightMap,
|
||||
// jsonArraySort,
|
||||
// pageNo - 1,
|
||||
// pageSize
|
||||
// );
|
||||
//
|
||||
// //2. 数据查询
|
||||
// JSONObject search = new JSONObject();
|
||||
// if (LanguageEnum.CN.getValue().equals(cut)) {
|
||||
// search = jeroElasticsearchTemplate.search(
|
||||
// SearchEnum.FULL_TEXT_SEARCH_CN.getValue(),
|
||||
// SearchEnum.FULL_TEXT_SEARCH_CN.getValue(),
|
||||
// queryObject
|
||||
// );
|
||||
// } else {
|
||||
// search = jeroElasticsearchTemplate.search(
|
||||
// SearchEnum.FULL_TEXT_SEARCH_EN.getValue(),
|
||||
// SearchEnum.FULL_TEXT_SEARCH_EN.getValue(),
|
||||
// queryObject
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// List<SysDictItem> stateSysDictItems = this.sysDictItemServiceImpl.selectItemsByDictCode(DictCodeEnum.STATE.getValue());
|
||||
//
|
||||
// List<Map<String, Object>> list = (List<Map<String, Object>>) (((Map) search.get("hits")).get("hits"));
|
||||
// List<Map<String, Object>> mapList = new ArrayList<>();
|
||||
// for (Map<String, Object> map : list) {
|
||||
// Map<String, Object> mapSource = (Map<String, Object>) map.get("_source");
|
||||
// Map<String, Object> mapHighlight = (Map<String, Object>) map.get("highlight");
|
||||
// if(ObjectUtils.isNotEmpty(mapHighlight)){
|
||||
// for (Map.Entry<String, Object> entry : mapHighlight.entrySet()) {
|
||||
// String key = entry.getKey();
|
||||
// List<String> value = (List<String>) entry.getValue();
|
||||
// String fieldConyent= "";
|
||||
// for (String s : value) {
|
||||
// fieldConyent += s;
|
||||
// }
|
||||
// mapSource.put(key,fieldConyent);
|
||||
// }
|
||||
// }
|
||||
// String state = (String) mapSource.get("state");
|
||||
// String state_dictText = "";
|
||||
// for (SysDictItem dictItem : stateSysDictItems) {
|
||||
// if (StringUtils.equals(dictItem.getItemValue(), state)) {
|
||||
// if (StringUtils.equals(cut, LanguageEnum.CN.getValue())) {
|
||||
// state_dictText = dictItem.getItemText();
|
||||
// } else {
|
||||
// state_dictText = dictItem.getEnName();
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// mapSource.put("state_dictText", state_dictText);
|
||||
//
|
||||
// String create_time_str = "";
|
||||
// if(ObjectUtils.isNotEmpty(mapSource.get("create_time"))){
|
||||
// create_time_str = DateUtils.formatTime((Long) mapSource.get("create_time"));
|
||||
// }
|
||||
// mapSource.put("create_time_str",create_time_str);
|
||||
// // 处理中英文切换的时候 展示的标题
|
||||
// if (StringUtils.equals(cut, LanguageEnum.EN.getValue())) {
|
||||
// mapSource.put("title",mapSource.get("title_en"));
|
||||
// }
|
||||
// mapList.add(mapSource);
|
||||
// }
|
||||
//
|
||||
// //处理分页
|
||||
// IPage page = new Page(pageNo, pageSize);
|
||||
// page.setTotal(Long.parseLong(String.valueOf(((Map) search.get("hits")).get("total"))));
|
||||
// page.setRecords(mapList);
|
||||
// return page;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 设置文档库高亮字段
|
||||
* @param mapHighlight
|
||||
* @param key
|
||||
*/
|
||||
// private void wdkHighlight(Map<String, Object> mapHighlight, String key) {
|
||||
// Map<String, Object> mapTemp = new HashMap<>();
|
||||
// List<String> list = new ArrayList<>();
|
||||
// list.add("<text class='highlight-class'>");
|
||||
// List<String> list1 = new ArrayList<>();
|
||||
// list1.add("</text>");
|
||||
// mapTemp.put("pre_tags", list);
|
||||
// mapTemp.put("post_tags", list1);
|
||||
// mapTemp.put("fragment_size", 320);
|
||||
// mapTemp.put("number_of_fragments", 1);
|
||||
// mapTemp.put("type", "plain");
|
||||
// mapHighlight.put(key, mapTemp);
|
||||
// }
|
||||
//
|
||||
// private void setQueryMapJson(JSONArray queryMapJson, String selectValue, String field) {
|
||||
// // 前缀匹配 缺点是前缀一定不能断开
|
||||
// // 情况举例:用户只记得前面那段字
|
||||
// Map<String, Object> map21 = new HashMap<>();
|
||||
// Map<String, Object> map31 = new HashMap<>();
|
||||
// Map<String, Object> map41 = new HashMap<>();
|
||||
// if ("title".equals(field)) {
|
||||
// map31.put("boost", 10);
|
||||
// } else if ("content".equals(field)) {
|
||||
// map31.put("boost", 0.01);
|
||||
// }
|
||||
// map31.put("value", selectValue);
|
||||
// map21.put(field + ".keyword", map31);
|
||||
// map41.put("prefix", map21);
|
||||
// queryMapJson.add(map41);
|
||||
//
|
||||
// // match_phrase_prefix 词组匹配查询,允许最后词组与文中的任意分词前缀匹配
|
||||
// Map<String, Object> map22 = new HashMap<>();
|
||||
// Map<String, Object> map32 = new HashMap<>();
|
||||
// Map<String, Object> map42 = new HashMap<>();
|
||||
// if ("title".equals(field)) {
|
||||
// map32.put("boost", 10);
|
||||
// } else if ("content".equals(field)) {
|
||||
// map32.put("boost", 0.01);
|
||||
// }
|
||||
// map32.put("query", selectValue);
|
||||
// map22.put(field, map32);
|
||||
// map42.put("match_phrase_prefix", map22);
|
||||
// queryMapJson.add(map42);
|
||||
//
|
||||
// // match分词匹配查询
|
||||
// // 情况举例:用户可能他知道开头的前缀几个字,知道中间的几个字
|
||||
// Map<String, Object> map23 = new HashMap<>();
|
||||
// Map<String, Object> map33 = new HashMap<>();
|
||||
// Map<String, Object> map43 = new HashMap<>();
|
||||
// if ("title".equals(field)) {
|
||||
// map33.put("boost", 10);
|
||||
// } else if ("content".equals(field)) {
|
||||
// map33.put("boost", 0.01);
|
||||
// }
|
||||
// map33.put("query", selectValue);
|
||||
// map23.put(field, map33);
|
||||
// map43.put("match", map23);
|
||||
// queryMapJson.add(map43);
|
||||
//
|
||||
// // wildcard模糊查询
|
||||
// // 情况举例:用户只记得中间那段字
|
||||
// Map<String, Object> map24 = new HashMap<>();
|
||||
// Map<String, Object> map44 = new HashMap<>();
|
||||
// map24.put(field, "*" + selectValue + "*");
|
||||
// map44.put("wildcard", map24);
|
||||
// queryMapJson.add(map44);
|
||||
// }
|
||||
}
|
||||
-539
@@ -1,539 +0,0 @@
|
||||
package com.jero.modules.project.entity;
|
||||
|
||||
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.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 项目库-法规清单表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-04-14
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_laws_inventory")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="project_laws_inventory对象", description="项目库-法规清单表")
|
||||
public class ProjectLawsInventoryEO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysOrgCode;
|
||||
|
||||
/**项目库id*/
|
||||
@ApiModelProperty(value = "项目库id")
|
||||
private String projectLibraryId;
|
||||
|
||||
/**编号*/
|
||||
@Excel(name = "*编号", width = 20)
|
||||
@ApiModelProperty(value = "编号")
|
||||
private String serialNumber;
|
||||
|
||||
/**标题*/
|
||||
@Excel(name = "标题", width = 20)
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
/**子标题*/
|
||||
@Excel(name = "子标题", width = 20)
|
||||
@ApiModelProperty(value = "子标题")
|
||||
private String subtitle;
|
||||
|
||||
/**清单确认状态*/
|
||||
@ApiModelProperty(value = "清单确认状态")
|
||||
private String inventoryAffirmStatus;
|
||||
|
||||
@TableField(exist = false)
|
||||
// @Excel(name = "清单确认状态", width = 20)
|
||||
@ApiModelProperty(value = "清单确认状态名称")
|
||||
private String inventoryAffirmStatusName;//清单确认状态名称
|
||||
|
||||
/**任务确认状态*/
|
||||
@ApiModelProperty(value = "任务确认状态")
|
||||
private String taskAffirmStatus;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "任务发布状态名称")
|
||||
// @Excel(name = "任务确认状态", width = 20)
|
||||
private String taskAffirmStatusName;//任务发布状态名称
|
||||
|
||||
/**适用地区*/
|
||||
@ApiModelProperty(value = "适用地区")
|
||||
//@Dict(dicCode ="region")
|
||||
// @Excel(name = "适用地区", width = 15, dicCode = "region")
|
||||
private String region;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String region_dictText;
|
||||
|
||||
/**对应标准*/
|
||||
// @Excel(name = "对应标准", width = 20)
|
||||
@ApiModelProperty(value = "对应标准")
|
||||
private String correspondingStandard;
|
||||
|
||||
/**实施类别*/
|
||||
// @Excel(name = "实施类别", width = 20,dicCode ="implement_type")
|
||||
@ApiModelProperty(value = "实施类别")
|
||||
//@Dict(dicCode ="implement_type")
|
||||
private String implementType;
|
||||
@TableField(exist = false)
|
||||
private String implementType_dictText;
|
||||
|
||||
/**新车型实施日期*/
|
||||
// @Excel(name = "新车型实施日期", width = 20, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "新车型实施日期")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date xin1Che1Xing2Shi2Shi1Ri4Qi1;
|
||||
@TableField(exist = false)
|
||||
private String xin1Che1Xing2Shi2Shi1Ri4Qi1String;
|
||||
|
||||
/**在产车实施日期*/
|
||||
// @Excel(name = "在产车实施日期", width = 20, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "在产车实施日期")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date implementTime;
|
||||
@TableField(exist = false)
|
||||
private String implementTimeString;
|
||||
|
||||
/**认证类型*/
|
||||
@Excel(name = "认证类型", width = 20,dicCode ="attestation_type")
|
||||
@ApiModelProperty(value = "认证类型")
|
||||
//@Dict(dicCode ="attestation_type")
|
||||
private String attestationType;
|
||||
@TableField(exist = false)
|
||||
private String attestationType_dictText;
|
||||
|
||||
/**认证级别*/
|
||||
@Excel(name = "*认证级别", width = 20,dicCode ="attestation_rank")
|
||||
@ApiModelProperty(value = "认证级别")
|
||||
//@Dict(dicCode ="attestation_rank")
|
||||
private String attestationRank;
|
||||
@TableField(exist = false)
|
||||
private String attestationRank_dictText;
|
||||
|
||||
//适用增补件
|
||||
@Excel(name = "适用增补件", width = 20)
|
||||
private String applicableSupplement;
|
||||
|
||||
/**WVTA ID*/
|
||||
// @Excel(name = "WVTA ID", width = 20)
|
||||
@ApiModelProperty(value = "WVTA ID")
|
||||
private String wvtaId;
|
||||
|
||||
/**责任领域*/
|
||||
@Excel(name = "*责任领域", width = 20,dicCode ="duty_territory")
|
||||
@ApiModelProperty(value = "责任领域")
|
||||
//@Dict(dicCode ="duty_territory")
|
||||
private String dutyTerritory;
|
||||
@TableField(exist = false)
|
||||
private String dutyTerritory_dictText;
|
||||
|
||||
/**责任部门*/
|
||||
@ApiModelProperty(value = "责任部门")
|
||||
private String dutyDepart;
|
||||
|
||||
/**法规工程师id*/
|
||||
@ApiModelProperty(value = "法规工程师id")
|
||||
private String regulationOwnerId;
|
||||
|
||||
@Excel(name = "法规工程师", width = 20)
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "法规工程师名称")
|
||||
private String regulationOwnerName;//法规工程师名称
|
||||
|
||||
/**认证工程师id*/
|
||||
@ApiModelProperty(value = "认证工程师id")
|
||||
private String homologationEngineerId;
|
||||
|
||||
// @Excel(name = "认证工程师", width = 20)
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "认证工程师名称")
|
||||
private String homologationEngineerName;//认证工程师名称
|
||||
|
||||
/**工程接口人id*/
|
||||
@ApiModelProperty(value = "工程接口人id")
|
||||
private String engineeringInterfacePerson;
|
||||
|
||||
@Excel(name = "工程接口人", width = 20)
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "工程接口人名称")
|
||||
private String engineeringInterfacePersonName;//工程接口人名称
|
||||
|
||||
/**备注*/
|
||||
@Excel(name = "备注", width = 20)
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**设计符合性确认-交付物类型*/
|
||||
@Excel(name = "交付物类型", width = 20,dicCode ="deliverable_template",groupName = "设计符合性确认")
|
||||
@ApiModelProperty(value = "设计符合性确认-交付物类型")
|
||||
//@Dict(dicCode ="deliverable_template")
|
||||
private String designDeliverableType;
|
||||
@TableField(exist = false)
|
||||
private String designDeliverableTypeName;
|
||||
@TableField(exist = false)
|
||||
private String designDeliverableType_dictText;
|
||||
|
||||
/**设计符合性确认-交付物模板*/
|
||||
@ApiModelProperty(value = "设计符合性确认-交付物模板")
|
||||
private String designDeliverableTemplate;
|
||||
|
||||
/**设计符合性确认-交付物模板名称*/
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "交付物模板", width = 20,groupName = "设计符合性确认")
|
||||
private String designDeliverableTemplateName;
|
||||
|
||||
/**设计符合性确认-发起人角色*/
|
||||
@ApiModelProperty(value = "设计符合性确认-发起人角色")
|
||||
//@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String designInitiator;
|
||||
@TableField(exist = false)
|
||||
private String designInitiator_dictText;
|
||||
|
||||
/**设计符合性确认-发起人id*/
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
@ApiModelProperty(value = "设计符合性确认-发起人id")
|
||||
private String designInitiatorId;
|
||||
|
||||
/**设计符合性确认-发起人名称*/
|
||||
// @Excel(name = "发起人", width = 20,groupName = "设计符合性确认")
|
||||
@TableField(exist = false)
|
||||
private String designInitiatorName;
|
||||
|
||||
/**设计符合性确认-责任人角色*/
|
||||
@ApiModelProperty(value = "设计符合性确认-责任人角色")
|
||||
//@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String designDuty;
|
||||
@TableField(exist = false)
|
||||
private String designDuty_dictText;
|
||||
|
||||
/**设计符合性确认-责任人id*/
|
||||
@ApiModelProperty(value = "设计符合性确认-责任人id")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String designDutyId;
|
||||
|
||||
/**设计符合性确认-责任人名称*/
|
||||
@Excel(name = "责任人", width = 20,groupName = "设计符合性确认")
|
||||
@TableField(exist = false)
|
||||
private String designDutyIdName;
|
||||
|
||||
/**设计符合性确认-截止时间*/
|
||||
@Excel(name = "截止时间", width = 20, format = "yyyy-MM-dd",groupName = "设计符合性确认")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "设计符合性确认-截止时间")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date designDueDate;
|
||||
@TableField(exist = false)
|
||||
private String designDueDateString;
|
||||
|
||||
//交付物说明
|
||||
@Excel(name = "交付物说明", width = 20,groupName = "设计符合性确认")
|
||||
private String designRemark;
|
||||
|
||||
/**prehomo确认-交付物类型*/
|
||||
// @Excel(name = "交付物类型", width = 20,dicCode ="deliverable_template",groupName = "Pre-homo确认")
|
||||
@ApiModelProperty(value = "prehomo确认-1")
|
||||
////@Dict(dicCode ="deliverable_template")
|
||||
private String prehomoDeliverableType;
|
||||
@TableField(exist = false)
|
||||
private String prehomoDeliverableType_dictText;
|
||||
@TableField(exist = false)
|
||||
private String prehomoDeliverableTypeName;
|
||||
|
||||
/**prehomo确认-交付物模板*/
|
||||
@ApiModelProperty(value = "prehomo确认-交付物模板")
|
||||
private String prehomoDeliverableTemplate;
|
||||
|
||||
/**prehomo确认-交付物模板名称*/
|
||||
@TableField(exist = false)
|
||||
// @Excel(name = "交付物模板", width = 20,groupName = "Pre-homo确认")
|
||||
private String prehomoDeliverableTemplateName;
|
||||
|
||||
/**prehomo确认-发起人角色*/
|
||||
@ApiModelProperty(value = "prehomo确认-发起人角色")
|
||||
//@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String prehomoInitiator;
|
||||
@TableField(exist = false)
|
||||
private String prehomoInitiator_dictText;
|
||||
|
||||
/**prehomo确认-发起人id*/
|
||||
@ApiModelProperty(value = "prehomo确认-发起人id")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String prehomoInitiatorId;
|
||||
|
||||
/**prehomo确认-发起人名称*/
|
||||
// @Excel(name = "发起人", width = 20,groupName = "Pre-homo确认")
|
||||
@TableField(exist = false)
|
||||
private String prehomoInitiatorName;
|
||||
|
||||
/**prehomo确认-责任人角色*/
|
||||
@ApiModelProperty(value = "prehomo确认-责任人角色")
|
||||
//@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String prehomoDuty;
|
||||
@TableField(exist = false)
|
||||
private String prehomoDuty_dictText;
|
||||
|
||||
/**prehomo确认-责任人id*/
|
||||
@ApiModelProperty(value = "prehomo确认-责任人id")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String prehomoDutyId;
|
||||
|
||||
/**prehomo确认-责任人名称*/
|
||||
// @Excel(name = "责任人", width = 20,groupName = "Pre-homo确认")
|
||||
@TableField(exist = false)
|
||||
private String prehomoDutyName;
|
||||
|
||||
/**prehomo确认-截止时间*/
|
||||
// @Excel(name = "截止时间", width = 20, format = "yyyy-MM-dd",groupName = "Pre-homo确认")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "prehomo确认-截止时间")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date prehomoDueDate;
|
||||
@TableField(exist = false)
|
||||
private String prehomoDueDateString;
|
||||
|
||||
//prehomo确认-交付物说明
|
||||
// @Excel(name = "交付物说明", width = 20,groupName = "Pre-homo确认")
|
||||
private String prehomoRemark;
|
||||
|
||||
/**验证符合性确认-交付物类型*/
|
||||
@Excel(name = "交付物类型", width = 20,dicCode ="deliverable_template",groupName = "验证符合性确认")
|
||||
@ApiModelProperty(value = "验证符合性确认-交付物类型")
|
||||
//@Dict(dicCode ="deliverable_template")
|
||||
private String verifyDeliverableType;
|
||||
@TableField(exist = false)
|
||||
private String verifyDeliverableType_dictText;
|
||||
@TableField(exist = false)
|
||||
private String verifyDeliverableTypeName;
|
||||
|
||||
/**验证符合性确认-交付物模板*/
|
||||
@ApiModelProperty(value = "验证符合性确认-交付物模板")
|
||||
private String verifyDeliverableTemplate;
|
||||
|
||||
/**验证符合性确认-交付物模板名称*/
|
||||
@Excel(name = "交付物模板", width = 20,groupName = "验证符合性确认")
|
||||
@TableField(exist = false)
|
||||
private String verifyDeliverableTemplateName;
|
||||
|
||||
/**验证符合性确认-发起人角色*/
|
||||
@ApiModelProperty(value = "验证符合性确认-发起人角色")
|
||||
//@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String verifyInitiator;
|
||||
@TableField(exist = false)
|
||||
private String verifyInitiator_dictText;
|
||||
|
||||
/**验证符合性确认-发起人id*/
|
||||
@ApiModelProperty(value = "验证符合性确认-发起人id")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String verifyInitiatorId;
|
||||
|
||||
/**验证符合性确认-发起人名称*/
|
||||
// @Excel(name = "发起人", width = 20,groupName = "验证符合性确认")
|
||||
@TableField(exist = false)
|
||||
private String verifyInitiatorName;
|
||||
|
||||
/**验证符合性确认-责任人角色*/
|
||||
@ApiModelProperty(value = "验证符合性确认-责任人角色")
|
||||
//@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String verifyDuty;
|
||||
@TableField(exist = false)
|
||||
private String verifyDuty_dictText;
|
||||
|
||||
/**验证符合性确认-责任人id*/
|
||||
@ApiModelProperty(value = "验证符合性确认-责任人id")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String verifyDutyId;
|
||||
|
||||
/**验证符合性确认-责任人名称*/
|
||||
@Excel(name = "责任人", width = 20,groupName = "验证符合性确认")
|
||||
@TableField(exist = false)
|
||||
private String verifyDutyIdName;
|
||||
|
||||
/**验证符合性确认-截止时间*/
|
||||
@Excel(name = "截止时间", width = 20, format = "yyyy-MM-dd",groupName = "验证符合性确认")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "验证符合性确认-截止时间")
|
||||
//@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date verifyDueDate;
|
||||
@TableField(exist = false)
|
||||
private String verifyDueDateString;
|
||||
|
||||
//验证备注
|
||||
@Excel(name = "交付物说明", width = 20,groupName = "验证符合性确认")
|
||||
private String verifyRemark;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "角色代码")
|
||||
private String roleCode;//角色代码
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "角色名称")
|
||||
private String roleName;//角色名称
|
||||
|
||||
|
||||
/**法规工程师提交状态 :0通过 1驳回 */
|
||||
@ApiModelProperty(value = "法规工程师提交状态")
|
||||
// @TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String regulationOwnerSubmitStatus;
|
||||
//这两个只要有一个是拒绝 那么该数据的清单确认状态就为拒绝
|
||||
/**认证工程师提交状态 :0通过 1驳回 */
|
||||
@ApiModelProperty(value = "认证工程师提交状态")
|
||||
// @TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String homologationEngineerSubmitStatus;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "文档库id")
|
||||
private String ids;//文档库id 多个之间用英文逗号拼接
|
||||
|
||||
/**清单确认-截止时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "清单确认-截止时间")
|
||||
private Date inventoryAffirmDueDate;
|
||||
|
||||
/**任务确认-截止时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "任务确认-截止时间")
|
||||
private Date taskAffirmDueDate;
|
||||
|
||||
/**发送消息标识 三天*/
|
||||
@ApiModelProperty(value = "发送消息标识 三天")
|
||||
private String sendMsgFlag;
|
||||
|
||||
/**发送消息标识 结束当天*/
|
||||
@ApiModelProperty(value = "发送消息标识 结束当天")
|
||||
private String sendMsgCurrentFlag;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "中英文切换标识")
|
||||
private String cut;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "虚拟清单iD")
|
||||
private String dummyInventoryBaseId;
|
||||
|
||||
//flag为空时第一次调取,flag不为空时,为二次确认
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "调取虚拟清单,虚拟清单中维护数据为空时,进行二次确认")
|
||||
private String flag;
|
||||
|
||||
@ApiModelProperty(value = "报告id")
|
||||
private String fileId;
|
||||
|
||||
@ApiModelProperty(value = "文档库id/标准id")
|
||||
private String standId;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "调取虚拟清单中文档ids")
|
||||
private String dummyids;//调取虚拟清单中文档ids
|
||||
|
||||
//排序(1->正序, 2->倒序)
|
||||
@TableField(exist = false)
|
||||
private String orderBy;
|
||||
|
||||
//排序字段
|
||||
@TableField(exist = false)
|
||||
private String orderByField;
|
||||
|
||||
@ApiModelProperty(value = "导出的excel的名称")
|
||||
@TableField(exist = false)
|
||||
private String excelName;
|
||||
|
||||
/**设计符合性确认-流程状态*/
|
||||
@ApiModelProperty(value = "设计符合性确认-流程状态")
|
||||
private String designFlowStatus;
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "流程状态", width = 20,groupName = "设计符合性确认")
|
||||
private String designFlowStatusName;
|
||||
|
||||
/**验证符合性确认-流程状态*/
|
||||
@ApiModelProperty(value = "验证符合性确认-流程状态")
|
||||
private String verifyFlowStatus;
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "流程状态", width = 20,groupName = "验证符合性确认")
|
||||
private String verifyFlowStatusName;
|
||||
|
||||
/**验证符合性确认-流程实例id*/
|
||||
@TableField(exist = false)
|
||||
private String verifyPId;
|
||||
|
||||
/**设计符合性确认-流程实例id*/
|
||||
@TableField(exist = false)
|
||||
private String designPId;
|
||||
|
||||
/**流程结束时间 最后的时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "流程结束时间 最后的时间")
|
||||
private Date processEndTime;
|
||||
|
||||
/**设计符合性确认-责任确认截止时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "设计符合性确认-责任确认截止时间")
|
||||
private Date designDutyDueDate;
|
||||
/**验证符合性确认-责任确认截止时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "验证符合性确认-责任确认截止时间")
|
||||
private Date verifyDutyDueDate;
|
||||
|
||||
/**流程类型*/
|
||||
@TableField(exist = false)
|
||||
private String flowType;
|
||||
|
||||
/**流程类型展示名称*/
|
||||
@TableField(exist = false)
|
||||
private String flowTypeName;
|
||||
|
||||
/**一级责任领域**/
|
||||
@TableField(exist = false)
|
||||
private String firstLevelDutyTerritory;
|
||||
}
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
package com.jero.modules.searchcenter.enums;
|
||||
|
||||
public enum ModuleTypeFlagEnum {
|
||||
DOCUMENT_LIBRARY("文档库","WDK"),
|
||||
LAWS_MONTHLY_REPORT("法规月报","FGYB"),
|
||||
PROBLEM_KNOWLEDGE_BASE_CLASSIFY("知识分享","WTZSK");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
private ModuleTypeFlagEnum(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.jero.modules.split.common;
|
||||
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
|
||||
import com.xkcoding.http.util.StringUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.tools.zip.ZipEntry;
|
||||
@@ -166,69 +165,6 @@ public class FileUnZip {
|
||||
return resultlist;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件名称读取固定目录下文件
|
||||
* 适用范围:filename内容 dir/file
|
||||
* gaoyan
|
||||
* @param filename
|
||||
*/
|
||||
public static List<File> readFileByFilenameDataList(String path,
|
||||
String filename,
|
||||
String cut,
|
||||
String errorMsg,
|
||||
List<String> msgList,
|
||||
String nameCn,
|
||||
String nameEn,
|
||||
ProjectLawsInventoryEO projectLawsInventoryEO) {
|
||||
//法规清单列表数据导入的时候,交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx
|
||||
filename = projectLawsInventoryEO.getSerialNumber()+"/"+filename;
|
||||
String filenameOne = "";
|
||||
String filenameTwo = "";
|
||||
if(filename.contains("/")){
|
||||
filenameOne = filename.split("/")[0];
|
||||
filenameTwo = filename.split("/")[1];
|
||||
}
|
||||
List<File> resultlist = new ArrayList<>();
|
||||
if (StringUtil.isNotEmpty(path)){
|
||||
File file = new File(path);
|
||||
if (file.isDirectory()) {
|
||||
File[] files = file.listFiles();
|
||||
for (File fi : files) {
|
||||
if(fi.isDirectory()){
|
||||
File[] filesTemp = fi.listFiles();
|
||||
for (File fileTemp : filesTemp) {
|
||||
// 对文件进行过滤
|
||||
if (fileTemp.getName().equals(filenameTwo) && fi.getName().equals(filenameOne) && StringUtils.isNotBlank(filenameOne)) {
|
||||
resultlist.add(fileTemp);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
// 对文件进行过滤
|
||||
if (fi.getName().equals(filenameTwo) && fi.getPath().contains(filenameOne) && StringUtils.isNotBlank(filenameOne)) {
|
||||
resultlist.add(fi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(resultlist.size() == 0){
|
||||
String name = "";
|
||||
if(filename.contains("/")){
|
||||
name = filenameTwo;
|
||||
}else{
|
||||
name = filename;
|
||||
}
|
||||
if(LanguageEnum.CN.getValue().equals(cut)){
|
||||
errorMsg += nameCn + name + "格式不正确或者压缩包中没有" + name + "文件,请参考模板下载中的说明";
|
||||
}else{
|
||||
errorMsg += nameEn + name + " Incorrect format or not present in compressed package " + name + " file please refer to the description in template download;";
|
||||
}
|
||||
if(msgList != null){
|
||||
msgList.add(errorMsg);
|
||||
}
|
||||
}
|
||||
return resultlist;
|
||||
}
|
||||
/**
|
||||
* 根据文件名称读取固定目录下文件
|
||||
* 适用范围:filename内容 dir/file
|
||||
|
||||
+1
-5
@@ -1,20 +1,16 @@
|
||||
package com.jero.modules.split.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import com.jero.common.util.LineHumpUtil;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.laws.common.constant.ResultCommon;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.oss.service.impl.OSSFileServiceImpl;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
import com.jero.modules.split.page.SarFileSplitInfoEOPage;
|
||||
import com.jero.modules.split.service.ISarFileSplitInfoService;
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import com.itextpdf.text.ListLabel;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.entity.*;
|
||||
|
||||
+1
-1
@@ -19,11 +19,11 @@ import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.common.ConvertHtml2Excel;
|
||||
|
||||
+1
-18
@@ -1,25 +1,8 @@
|
||||
package com.jero.modules.split.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.modules.document.utils.ReadPdfUtil;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
import com.jero.modules.split.entity.SarFileSplitItemsEO;
|
||||
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
|
||||
import com.jero.modules.split.entity.SarFileSplitMenuEO;
|
||||
import com.jero.modules.split.enums.SplitFileTypeTypeEnum;
|
||||
import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper;
|
||||
import com.jero.modules.split.service.IFileSplitItemsEOService;
|
||||
import com.jero.modules.split.service.ISarFileSplitItemsValEOService;
|
||||
import com.jero.modules.split.util.FileSplitUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
+1
-2
@@ -11,6 +11,7 @@ import com.jero.common.constant.enums.ModuleEnum;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.util.LineHumpUtil;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
@@ -20,8 +21,6 @@ import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
|
||||
Reference in New Issue
Block a user