diff --git a/adc-da-base/pom.xml b/adc-da-base/pom.xml index cbf24270..538935fe 100644 --- a/adc-da-base/pom.xml +++ b/adc-da-base/pom.xml @@ -37,6 +37,12 @@ UserAgentUtils 1.21 + + com.itextpdf + itextpdf + 5.5.13 + compile + diff --git a/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java b/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java index 304e9f35..d33481f1 100644 --- a/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java +++ b/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java @@ -1,5 +1,13 @@ package com.adc.da.util; +import com.itextpdf.text.BaseColor; +import com.itextpdf.text.Element; +import com.itextpdf.text.Rectangle; +import com.itextpdf.text.pdf.*; + +import java.io.FileOutputStream; +import java.lang.reflect.Field; + /** * @Description:水印 * @Author: super_liu @@ -15,7 +23,7 @@ public class WaterMarkUtil { */ public static boolean waterMark(String inputFile, String outputFile, String waterMarkName) { -/* try { + try { PdfReader reader = new PdfReader(inputFile); Field f = PdfReader.class.getDeclaredField("encrypted"); f.setAccessible(true); @@ -65,8 +73,7 @@ public class WaterMarkUtil { } catch (Exception e) { e.printStackTrace(); return false; - }*/ -return false; + } } } diff --git a/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java b/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java new file mode 100644 index 00000000..778b921c --- /dev/null +++ b/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java @@ -0,0 +1,22 @@ +package com.adc.da.main.file; + +import org.springframework.boot.web.servlet.MultipartConfigFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.unit.DataSize; + +import javax.servlet.MultipartConfigElement; + +@Configuration +public class FileUploadConfiuration { + @Bean + public MultipartConfigElement multipartConfigElement() { + MultipartConfigFactory factory = new MultipartConfigFactory(); + //单个文件大小200mb + factory.setMaxFileSize(DataSize.ofMegabytes(200L)); + //设置总上传数据大小10GB + factory.setMaxRequestSize(DataSize.ofGigabytes(10L)); + + return factory.createMultipartConfig(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java index 335a7986..de959ae0 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java @@ -3,6 +3,7 @@ package com.adc.da.slrs.sarResource.dao; import com.adc.da.slrs.sarResource.entity.TsResource; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.HashMap; import java.util.List; /** @@ -19,4 +20,6 @@ public interface TsResourceDao extends BaseMapper { List selectMenuByRole(TsResource sarMenuEO); + int insertTsRoleResource(HashMap map); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java index 3713fbf3..c3f3a777 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java @@ -7,6 +7,7 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.slrs.sarResource.dao.TsResourceDao; import com.adc.da.slrs.sarResource.entity.TsResource; import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.util.UUIDUtils; import com.adc.da.utils.treetool.Tree; import com.adc.da.utils.treetool.TreeNode; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -17,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; /** @@ -145,6 +147,7 @@ public class TsResourceServiceImpl extends ServiceImpl TsResources=dao.selectList(tsResourceQueryWrapper); for(TsResource TsResource:TsResources){ TsResource.setChildren(recursionGetChildren((TsResource))); @@ -166,6 +169,12 @@ public class TsResourceServiceImpl extends ServiceImpl map = new HashMap<>(); + map.put("resourceId",TsResource.getId()); + map.put("roleId",1); + dao.insertTsRoleResource(map); + return Result.success(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java index fa5cf2f1..2275753d 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java @@ -22,6 +22,7 @@ import io.swagger.annotations.Api; import com.adc.da.base.web.BaseController; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -59,8 +60,22 @@ public class SarStandAttrDetailsController extends BaseController getInlandStandList = InitStandAttrUtil.standInlandAttrFieldList; resultMap.put(SarTypeEnum.INLAND_STAND.getValue(),getInlandStandList); + + List getForeignStandList = InitStandAttrUtil.standForeignAttrFieldList; + //新增字段 +// Iterator iterator = getInlandStandList.iterator(); +// while (iterator.hasNext()){ +// SarStandAttrDetails next = iterator.next(); +// +// if (next.getAttrName().matches("能源类型|适用产品线|适用认证|责任工程师|关联文件")){ +// getForeignStandList.add(next); +// } +// +// } resultMap.put(SarTypeEnum.FOREIGN_STAND.getValue(),getForeignStandList); + + // 政策属性字段 List getInlandLawsList = InitStandAttrUtil.lawsInlandAttrFieldList; resultMap.put(SarTypeEnum.INLAND_LAWS.getValue(),getInlandLawsList); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java index 0af77f7f..df3ee156 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -185,16 +185,24 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl getSarStandardsInfoPage(SarStandardsInfoEOPage page) throws Exception { //查询当前登录人角色拥有权限的菜单 - List getMenuIdList=tsUserService.getResourceId(new TsResource()); -// List getMenuIdList = sarMenuEOService.queryRoleMenuIdList(page.getStandType() + "_STAND", null); - if (getMenuIdList != null && !getMenuIdList.isEmpty()) { - page.setMenuRoleList(getMenuIdList); - } else { - page.setMenuRoleList(null); - } - List ids = iTsResourceService.getChildMenuList(page.getMenuId()); - if (ids != null && !ids.isEmpty()) { - page.setMenuAllChildrenIdList(ids); + if(page.getMenuId() != null ){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ + List getMenuIdList = tsUserService.getResourceId(new TsResource()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } Integer rowCount = dao.getSarStandardsInfoCount(page); page.getPager().setRowCount(rowCount); diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java index 1888d4e7..e0966339 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java @@ -30,8 +30,9 @@ public class FieldConvertUtil { public static String exportBaseFieldNames = "标准体系,是否纳入认证清单,标准性质,标准类别,标准编号,标准年份,中文名称,英文名称," + "文本状态,发布日期"; // 导出基础表字段 //删除 实施日期 2021-05-28 - public static String exportBaseFieldNamesForeign = "重要度,标准类别,标准编号,标准年份/系列,中文名称,英文名称," + - "标准状态,发布日期,文本说明"; // 导出基础表字段 + public static String exportBaseFieldNamesForeign = "标准类别,标准编号,标准年份,中文名称,英文名称," + + "文本状态,发布日期,文本说明,是否纳入认证清单,体系类别,标签,适用产品线,适用认证,能源类型,责任工程师," + + "关联文件,发布稿,增补件,勘误件,草案"; // 导出基础表字段 public static String exportAttrFieldNamesInland = "归口管理部门,发布机构,工作组信息,我司参与深度,适用车辆类型,要求类型," + "标签,发布稿(必读),增补件(必读),报批稿,送审稿,征求意见稿,草案,相关资料,新车型实施日期(文本),在产车实施日期(文本)," + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml index a09cbd84..09f9859f 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml @@ -15,6 +15,8 @@ + + parent_id, menu_name, sor_divide, id, modify_time, creation_time, valid_flag, display_seq, parent_ids, remarks @@ -69,6 +71,12 @@ + + + INSERT INTO ts_role_resource + VALUES(#{roleId},#{resourceId} ) + + + + com.lowagie + itext + 2.1.7 + + + com.lowagie + itextasian + 2.1.7 + + + com.itextpdf + itextpdf + 5.5.9 + + + com.itextpdf + itext-asian + 5.2.0 + diff --git a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java index 456e39c7..c5cc4baa 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java @@ -1,13 +1,17 @@ package com.adc.da.att.controller; +import com.adc.da.att.dao.UserDao; import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.entity.TsUser; import com.adc.da.att.service.IAttFileEOService; import com.adc.da.att.vo.AttFileVo; import com.adc.da.file.store.IFileStore; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.entity.UserEO; import com.adc.da.util.MD5Util; import com.adc.da.util.UUIDUtils; +import com.adc.da.util.WaterMarkUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -46,6 +50,9 @@ public class AttFileEOController { @Autowired private IFileStore iFileStore; + @Autowired + private UserDao userDao; + @Value("${file.path}") private String filePath;//文件存储路径 @@ -249,7 +256,7 @@ public class AttFileEOController { @ApiOperation(value = "|File|下载文件加水印") @GetMapping("/downloadFileForSarWaterMark") // @RequiresPermissions("sys:file:downloadFileForSar") - public void downloadFileForSarWaterMark(String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { + public void downloadFileForSarWaterMark(String userId,String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); InputStream is = null; OutputStream os = null; @@ -265,24 +272,39 @@ public class AttFileEOController { } String waterFilePath = newFilePath + attFileEO.getOldFileName(); // 添加水印 - String waterContent = ""; -// String userId = LoginUserUtil.getUserId(); -// String userMsg = ""; -// UserEO userEO = userEOService.selectByPrimaryKey(userId); -// if (userEO != null) { -// userMsg = userEO.getUname() + ","; -// if (StringUtils.isNotEmpty(userEO.getWorkNum())) { -// userMsg += userEO.getWorkNum() + ","; -// } -// } - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置日期格式 - String date = df.format(new Date()); -// waterContent = userMsg + date; + String userMsg = ""; + String date=""; + TsUser tsUser = userDao.selectById(userId); + if (tsUser != null) { + userMsg = tsUser.getUname() + ","; + if (StringUtils.isNotEmpty(tsUser.getWorkNum())) { + userMsg += tsUser.getWorkNum() + ","; + } + }else { + //没有用户信息时 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置日期格式 + date = df.format(new Date()); + } + + String waterContent = userMsg + date; //2020年9月5日 去掉水印处理 -// WaterMarkUtil.waterMark(oldFilePath,waterFilePath,waterContent); + //2021年7月25日要求下载生成水印 + WaterMarkUtil.waterMark(oldFilePath,waterFilePath,waterContent); response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); response.setContentType("application/octet-stream"); - File file = new File(filePath+attFileEO.getFilePath()+attFileEO.getFileName()); + + String downloadFilePath=""; + String fileName=attFileEO.getFileName(); + String suffix=fileName.substring(fileName.lastIndexOf(".")+1); + //只能在pdf中添加水印, + //非pdf文件直接下载原文件 + if (suffix.equals("pdf")){ + downloadFilePath=waterFilePath; + }else { + downloadFilePath=oldFilePath; + } + + File file = new File(downloadFilePath); is = new FileInputStream(file); os = response.getOutputStream(); IOUtils.copy(is, os); diff --git a/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java b/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java new file mode 100644 index 00000000..b7f6d6df --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java @@ -0,0 +1,8 @@ +package com.adc.da.att.dao; + +import com.adc.da.att.entity.TsUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface UserDao extends BaseMapper { + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java b/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java new file mode 100644 index 00000000..c088351b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java @@ -0,0 +1,24 @@ +package com.adc.da.att.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TsUser extends BaseEntity implements Serializable { + @TableId + private String usid; + @TableField + private String uname; + @TableField + private String workNum; + + +}