Merge branch 'develop_master' into FOTON
This commit is contained in:
@@ -4,7 +4,12 @@ import com.itextpdf.text.BaseColor;
|
||||
import com.itextpdf.text.Element;
|
||||
import com.itextpdf.text.Rectangle;
|
||||
import com.itextpdf.text.pdf.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
@@ -15,6 +20,8 @@ import java.lang.reflect.Field;
|
||||
*/
|
||||
public class WaterMarkUtil {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(WaterMarkUtil.class);
|
||||
|
||||
/**
|
||||
* @param inputFile 你的PDF文件地址
|
||||
* @param outputFile 添加水印后生成PDF存放的地址
|
||||
@@ -78,4 +85,83 @@ public class WaterMarkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static boolean waterMarkNew(String inputFile, String outputFile, String waterMarkName) {
|
||||
try {
|
||||
logger.debug("水印追加文件:"+inputFile+" "+outputFile);
|
||||
FileInputStream is = new FileInputStream(inputFile);
|
||||
PdfReader reader = new PdfReader(is);
|
||||
Field f = PdfReader.class.getDeclaredField("encrypted");
|
||||
f.setAccessible(true);
|
||||
f.set(reader, Boolean.FALSE);
|
||||
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));
|
||||
|
||||
// 获取总页数 +1, 下面从1开始遍历
|
||||
int total = reader.getNumberOfPages() + 1;
|
||||
//这里的字体设置比较关键,这个设置是支持中文的写法
|
||||
BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体
|
||||
|
||||
// 间隔
|
||||
int interval = 5;
|
||||
// 获取水印文字的高度和宽度
|
||||
int textH = 0, textW = 0;
|
||||
JLabel label = new JLabel();
|
||||
label.setText(waterMarkName);
|
||||
FontMetrics metrics = label.getFontMetrics(label.getFont());
|
||||
textH = metrics.getHeight();
|
||||
textW = metrics.stringWidth(label.getText());
|
||||
|
||||
// 设置水印透明度
|
||||
PdfGState gs = new PdfGState();
|
||||
gs.setFillOpacity(0.2f);
|
||||
gs.setStrokeOpacity(0.2f);
|
||||
|
||||
Rectangle pageSizeWithRotation = null;
|
||||
PdfContentByte content = null;
|
||||
for (int i = 1; i < total; i++) {
|
||||
// 在内容上方加水印
|
||||
content = stamper.getOverContent(i);
|
||||
// 在内容下方加水印
|
||||
// content = stamper.getUnderContent(i);
|
||||
content.saveState();
|
||||
content.setGState(gs);
|
||||
|
||||
// 设置字体和字体大小
|
||||
content.beginText();
|
||||
content.setFontAndSize(base, 19);
|
||||
|
||||
// 获取每一页的高度、宽度
|
||||
pageSizeWithRotation = reader.getPageSizeWithRotation(i);
|
||||
float pageHeight = pageSizeWithRotation.getHeight();
|
||||
float pageWidth = pageSizeWithRotation.getWidth();
|
||||
int parityNum = 0;
|
||||
// 根据纸张大小多次添加, 水印文字成30度角倾斜
|
||||
for (int height = interval + textH; height < pageHeight; height = height + textH * 6) {
|
||||
parityNum ++;
|
||||
for (int width = interval + textW; width < pageWidth + textW; width = width + textW * 2) {
|
||||
if(parityNum%2==0){
|
||||
width= width + 50;
|
||||
height = height +50;
|
||||
content.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 30);
|
||||
}else{
|
||||
content.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 30);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
content.endText();
|
||||
}
|
||||
|
||||
// 关流
|
||||
stamper.close();
|
||||
reader.close();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage(),e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,6 +51,12 @@ public interface TsPositionDao extends BaseMapper<TsPosition> {
|
||||
*/
|
||||
List<TsRole> getRole(String positionId);
|
||||
|
||||
/**
|
||||
* 根据用户ID获取岗位信息
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<TsPosition> getPositionDataByUserId(@Param("userId") String userId);
|
||||
/**
|
||||
* 查询岗位以及绑定的角色信息
|
||||
* @param tsPosition:岗位信息
|
||||
|
||||
@@ -40,6 +40,12 @@ public interface ITsPositionService extends IService<TsPosition> {
|
||||
*/
|
||||
List<TsRole> getRole(String positionId);
|
||||
|
||||
/**
|
||||
* 根据用户ID获取岗位信息
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<TsPosition> getPositionDataByUserId(String userId);
|
||||
/**
|
||||
* 添加岗位
|
||||
* @param tsPosition:岗位信息
|
||||
|
||||
+10
@@ -108,6 +108,16 @@ public class TsPositionServiceImpl extends ServiceImpl<TsPositionDao, TsPosition
|
||||
return tsPositionDao.getRole(positionId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户ID获取岗位信息
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<TsPosition> getPositionDataByUserId(String userId) {
|
||||
return tsPositionDao.getPositionDataByUserId(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加岗位
|
||||
* @param tsPosition:岗位信息
|
||||
|
||||
@@ -26,6 +26,10 @@ public interface TsUserDao extends BaseMapper<TsUser> {
|
||||
@Select("select position_id from ts_user_position where user_id=#{userId}")
|
||||
List<String> selectPositionIds(String userId);
|
||||
|
||||
@Update("UPDATE ts_user SET SYS_POSITION_IDS =#{positionIds} WHERE USID = #{userId}")
|
||||
void updateUserPositionIds(@Param("userId") String userId,@Param("positionIds")String positionIds);
|
||||
|
||||
|
||||
/**
|
||||
* 添加岗位
|
||||
* @param userId:用户ID
|
||||
|
||||
@@ -138,6 +138,10 @@ public class TsUser extends BaseEntity {
|
||||
@TableField("SSO_ID")
|
||||
private String ssoId;
|
||||
|
||||
@ApiModelProperty(value = "系统设置岗位ID集合")
|
||||
@TableField("SYS_POSITION_IDS")
|
||||
private String sysPositionIds;
|
||||
|
||||
@ApiModelProperty(value = "岗位")
|
||||
@TableField(exist = false)
|
||||
private List<TsPosition> positions;
|
||||
|
||||
+66
-42
@@ -28,6 +28,7 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -135,8 +136,16 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
if(tsUser==null){
|
||||
return Result.error("该用户不存在");
|
||||
}
|
||||
//此处更新user表中的岗位字段
|
||||
List<String> positionIds = userPositionVO.getPositionIds();
|
||||
positionIds.removeIf(s -> null==s||""==s);
|
||||
String optionsIdStr = StringUtils.join(positionIds, ",");
|
||||
if(StringUtils.isBlank(optionsIdStr)){
|
||||
optionsIdStr = null;
|
||||
}
|
||||
tsUserDao.updateUserPositionIds(userPositionVO.getUserId(),optionsIdStr);
|
||||
List<String> oldPositionIds=tsUserDao.selectPositionIds(userPositionVO.getUserId());
|
||||
Map<String,List<String>> ids= ListUtil.difList(userPositionVO.getPositionIds(),oldPositionIds);
|
||||
Map<String,List<String>> ids= ListUtil.difList(positionIds,oldPositionIds);
|
||||
List<String> insertIds=ids.get("insert");
|
||||
List<String> deleteIds=ids.get("delete");
|
||||
if(insertIds!=null&&insertIds.size()>0){
|
||||
@@ -163,7 +172,13 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
public ResponseMessage<Object> setPositionBatch(UserPositionBatchVO userPositionVO2) {
|
||||
|
||||
boolean flag=true;
|
||||
|
||||
//此处更新user表中的岗位字段
|
||||
List<String> positionIds = userPositionVO2.getPositionIds();
|
||||
positionIds.removeIf(s -> null==s||""==s);
|
||||
String optionsIdStr = StringUtils.join(positionIds, ",");
|
||||
if(StringUtils.isBlank(optionsIdStr)){
|
||||
optionsIdStr = null;
|
||||
}
|
||||
for (String s:userPositionVO2.getUserId()) {
|
||||
UserPositionVO userPositionVO=new UserPositionVO();
|
||||
userPositionVO.setUserId(s);
|
||||
@@ -171,9 +186,11 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
TsUser tsUser=tsUserDao.selectById(userPositionVO.getUserId());
|
||||
if(tsUser==null){
|
||||
flag=false;
|
||||
continue;
|
||||
}
|
||||
tsUserDao.updateUserPositionIds(userPositionVO.getUserId(),optionsIdStr);
|
||||
List<String> oldPositionIds=tsUserDao.selectPositionIds(userPositionVO.getUserId());
|
||||
Map<String,List<String>> ids= ListUtil.difList(userPositionVO.getPositionIds(),oldPositionIds);
|
||||
Map<String,List<String>> ids= ListUtil.difList(positionIds,oldPositionIds);
|
||||
List<String> insertIds=ids.get("insert");
|
||||
List<String> deleteIds=ids.get("delete");
|
||||
if(insertIds!=null&&insertIds.size()>0){
|
||||
@@ -210,6 +227,13 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
List<String> middle=new ArrayList<>();
|
||||
middle.addAll(orgIds);
|
||||
boolean Orgflag=true;
|
||||
//此处更新user表中的岗位字段
|
||||
List<String> positionIds = userPositionVO2.getPositionIds();
|
||||
positionIds.removeIf(s -> null==s||""==s);
|
||||
String optionsIdStr = StringUtils.join(positionIds, ",");
|
||||
if(StringUtils.isBlank(optionsIdStr)){
|
||||
optionsIdStr = null;
|
||||
}
|
||||
while (Orgflag){
|
||||
QueryWrapper<TsInstitution> queryWrapper=new QueryWrapper<>();
|
||||
queryWrapper.in("parent_id",middle);
|
||||
@@ -234,25 +258,23 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
|
||||
for (TsUser user : allUsers) {
|
||||
String userId = user.getUserId();
|
||||
UserPositionVO userPositionVO=new UserPositionVO();
|
||||
userPositionVO.setUserId(userId);
|
||||
userPositionVO.setPositionIds(userPositionVO2.getPositionIds());
|
||||
TsUser tsUser=tsUserDao.selectById(userPositionVO.getUserId());
|
||||
TsUser tsUser=tsUserDao.selectById(userId);
|
||||
if(tsUser==null){
|
||||
continue;
|
||||
}
|
||||
List<String> oldPositionIds=tsUserDao.selectPositionIds(userPositionVO.getUserId());
|
||||
Map<String,List<String>> ids= ListUtil.difList(userPositionVO.getPositionIds(),oldPositionIds);
|
||||
tsUserDao.updateUserPositionIds(userId,optionsIdStr);
|
||||
List<String> oldPositionIds=tsUserDao.selectPositionIds(userId);
|
||||
Map<String,List<String>> ids= ListUtil.difList(positionIds,oldPositionIds);
|
||||
List<String> insertIds=ids.get("insert");
|
||||
List<String> deleteIds=ids.get("delete");
|
||||
if(insertIds!=null&&insertIds.size()>0){
|
||||
for(String positionId:insertIds){
|
||||
tsUserDao.addPosition(userPositionVO.getUserId(),positionId);
|
||||
tsUserDao.addPosition(userId,positionId);
|
||||
}
|
||||
}
|
||||
if(deleteIds!=null&&deleteIds.size()>0){
|
||||
for(String positionId:deleteIds){
|
||||
tsUserDao.delPosition(userPositionVO.getUserId(),positionId);
|
||||
tsUserDao.delPosition(userId,positionId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -459,42 +481,44 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
|
||||
@Override
|
||||
public IPage<TsUser> getAllUsers(TsUser tsUser) {
|
||||
List<String> ids=new ArrayList<>();
|
||||
QueryWrapper<TsInstitution> queryWrapper=new QueryWrapper<>();
|
||||
queryWrapper.like("parent_id",tsUser.getInstitutionId());
|
||||
List<TsInstitution> tsmiddle=tsInstitutionService.list(queryWrapper);
|
||||
if(tsmiddle!=null && !tsmiddle.isEmpty()){
|
||||
tsmiddle.forEach(tsInstitution -> {
|
||||
ids.add(tsInstitution.getId());
|
||||
});
|
||||
ids.add(tsUser.getInstitutionId());
|
||||
List<String> middle=new ArrayList<>();
|
||||
middle.addAll(ids);
|
||||
boolean flag=true;
|
||||
while (flag){
|
||||
QueryWrapper<TsInstitution> queryWrapper=new QueryWrapper<>();
|
||||
queryWrapper.in("parent_id",middle);
|
||||
List<TsInstitution> tsmiddle=tsInstitutionService.list(queryWrapper);
|
||||
if (tsmiddle.size()>0){
|
||||
tsmiddle.forEach(tsInstitution -> {
|
||||
middle.add(tsInstitution.getId());
|
||||
});
|
||||
middle.removeAll(ids);
|
||||
ids.addAll(middle);
|
||||
}else {
|
||||
tsmiddle.forEach(tsInstitution -> {
|
||||
middle.add(tsInstitution.getId());
|
||||
});
|
||||
middle.removeAll(ids);
|
||||
ids.addAll(middle);
|
||||
flag=false;
|
||||
}
|
||||
}
|
||||
// List<String> middle=new ArrayList<>();
|
||||
// middle.addAll(ids);
|
||||
// boolean flag=true;
|
||||
// while (flag){
|
||||
// QueryWrapper<TsInstitution> queryWrapper=new QueryWrapper<>();
|
||||
// queryWrapper.in("parent_id",middle);
|
||||
// List<TsInstitution> tsmiddle=tsInstitutionService.list(queryWrapper);
|
||||
// if (tsmiddle.size()>0){
|
||||
// tsmiddle.forEach(tsInstitution -> {
|
||||
// middle.add(tsInstitution.getId());
|
||||
// });
|
||||
// middle.removeAll(ids);
|
||||
// ids.addAll(middle);
|
||||
// }else {
|
||||
// tsmiddle.forEach(tsInstitution -> {
|
||||
// middle.add(tsInstitution.getId());
|
||||
// });
|
||||
// middle.removeAll(ids);
|
||||
// ids.addAll(middle);
|
||||
// flag=false;
|
||||
// }
|
||||
// }
|
||||
// ids.removeIf(s -> null==s);
|
||||
ids.removeIf(s -> null==s);
|
||||
List<TsUser> tsUsers = tsUserDao.userUnderInstitution((tsUser.getCurrent() - 1) * tsUser.getSize(), tsUser.getSize(), tsUser, ids);
|
||||
if(tsUsers!=null && !tsUsers.isEmpty()){
|
||||
for (TsUser user:tsUsers) {
|
||||
List<TsPosition> positionList = tsPositionService.getPositionDataByUserId(user.getUserId());
|
||||
user.setPositions(positionList);
|
||||
}
|
||||
}
|
||||
|
||||
Page<TsUser> tsUserPage = new Page<>();
|
||||
tsUserPage.setCurrent(tsUser.getCurrent());
|
||||
tsUserPage.setSize(tsUser.getSize());
|
||||
tsUserPage.setRecords(tsUserDao.userUnderInstitution((tsUser.getCurrent()-1)*tsUser.getSize(),tsUser.getSize(),tsUser,ids));
|
||||
tsUserPage.setRecords(tsUsers);
|
||||
tsUserPage.setTotal(tsUserDao.userUnderInstitutionCount(tsUser,ids));
|
||||
|
||||
return tsUserPage;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<result property="uname" column="UNAME"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="getRole" resultType="com.adc.da.slrs.sarRole.entity.TsRole">
|
||||
select * from ts_role r
|
||||
left join ts_position_role ps
|
||||
@@ -24,6 +25,12 @@
|
||||
where ps.position_id=#{positionId}
|
||||
</select>
|
||||
|
||||
<select id="getPositionDataByUserId" resultType="com.adc.da.slrs.sarPosition.entity.TsPosition">
|
||||
SELECT id,name FROM ts_position
|
||||
LEFT JOIN ts_user_position ON ts_position.id = ts_user_position.position_id
|
||||
WHERE ts_user_position.user_id =#{userId}
|
||||
</select>
|
||||
|
||||
<select id="selectPositionAndRole" resultMap="PositionAndRole">
|
||||
select p.*,r.id rid,r.name r_name ,tu.UNAME as UNAME from ts_position p
|
||||
left join ts_position_role pr
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<result property="unlockFlag" column="unlock_flag"/>
|
||||
<result property="userType" column="user_type"/>
|
||||
<result property="ssoId" column="sso_id"/>
|
||||
<result property="sysPositionIds" column="sys_position_ids"/>
|
||||
<collection property="positions" ofType="com.adc.da.slrs.sarPosition.entity.TsPosition">
|
||||
<result property="id" column="p_id"/>
|
||||
<result property="name" column="p_name"/>
|
||||
@@ -51,12 +52,8 @@
|
||||
<select id="getUserUnderInstitutionAll" resultMap="UserPosition">
|
||||
select u.USID,u.ACCOUNT,u.PASSWORD,u.OPER_USER,u.UNAME,u.SEX,u.USER_SOURCE,u.PHONE,u.EMAIL,u.INSTITUTION_NAME,u.INSTITUTION_ID
|
||||
,u.POSITION_NAME,u.STATE,u.POSITION_ID,u.WORK_NUM,u.EXT_INFO,u.CREATION_TIME,u.MODIFY_TIME,u.VALID_FLAG
|
||||
,u.DISABLE_FLAG,u.UNLOCK_FLAG,u.USER_TYPE,u.SSO_ID,
|
||||
p.id p_id,p.name p_name from ts_user u
|
||||
left join ts_user_position up
|
||||
on u.usid=up.user_id
|
||||
left join ts_position p
|
||||
on up.position_id=p.id
|
||||
,u.DISABLE_FLAG,u.UNLOCK_FLAG,u.USER_TYPE,u.SSO_ID,u.SYS_POSITION_IDS
|
||||
from ts_user u
|
||||
where 1=1
|
||||
<if test=" null != ids and ids.size()> 0">
|
||||
and INSTITUTION_ID in
|
||||
@@ -76,12 +73,7 @@
|
||||
<select id="userUnderInstitution" parameterType="com.adc.da.slrs.sarUser.entity.TsUser" resultMap="UserPosition">
|
||||
select u.USID,u.ACCOUNT,u.PASSWORD,u.OPER_USER,u.UNAME,u.SEX,u.USER_SOURCE,u.PHONE,u.EMAIL,u.INSTITUTION_NAME,u.INSTITUTION_ID
|
||||
,u.POSITION_NAME,u.STATE,u.POSITION_ID,u.WORK_NUM,u.EXT_INFO,u.CREATION_TIME,u.MODIFY_TIME,u.VALID_FLAG
|
||||
,u.DISABLE_FLAG,u.UNLOCK_FLAG,u.USER_TYPE,u.SSO_ID,
|
||||
p.id p_id,p.name p_name from ts_user u
|
||||
left join ts_user_position up
|
||||
on u.usid=up.user_id
|
||||
left join ts_position p
|
||||
on up.position_id=p.id
|
||||
,u.DISABLE_FLAG,u.UNLOCK_FLAG,u.USER_TYPE,u.SSO_ID,u.SYS_POSITION_IDS from ts_user u
|
||||
where 1=1
|
||||
<if test="TsUser.uname != null and TsUser.uname != '' ">
|
||||
and (u.uname like concat('%',#{TsUser.uname},'%') or u.ACCOUNT like concat(#{TsUser.uname},'%'))
|
||||
@@ -90,21 +82,17 @@
|
||||
and u.email like concat('%',#{TsUser.email},'%')
|
||||
</if>
|
||||
<if test=" null != ids and ids.size()> 0">
|
||||
and INSTITUTION_ID in
|
||||
and u.INSTITUTION_ID in
|
||||
<foreach item="id" collection="ids" open="(" separator="," close=")" index="index">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY p.id is null,p.create_time
|
||||
ORDER BY u.SYS_POSITION_IDS is null,u.USID
|
||||
limit #{start},#{end}
|
||||
</select>
|
||||
|
||||
<select id="userUnderInstitutionCount" resultType="java.lang.Integer">
|
||||
select count(u.USID) from ts_user u
|
||||
left join ts_user_position up
|
||||
on u.usid=up.user_id
|
||||
left join ts_position p
|
||||
on up.position_id=p.id
|
||||
where 1=1
|
||||
<if test="TsUser.uname != null and TsUser.uname != '' ">
|
||||
and u.uname like concat('%',#{TsUser.uname},'%')
|
||||
@@ -113,7 +101,7 @@
|
||||
and u.email like concat('%',#{TsUser.email},'%')
|
||||
</if>
|
||||
<if test=" null != ids and ids.size()> 0">
|
||||
and INSTITUTION_ID in
|
||||
and u.INSTITUTION_ID in
|
||||
<foreach item="id" collection="ids" open="(" separator="," close=")" index="index">
|
||||
#{id}
|
||||
</foreach>
|
||||
@@ -122,10 +110,6 @@
|
||||
|
||||
<select id="getUserAndPositionCount" parameterType="com.adc.da.slrs.sarUser.entity.TsUser" resultType="java.lang.Integer">
|
||||
select count(u.USID) from ts_user u
|
||||
left join ts_user_position up
|
||||
on u.usid=up.user_id
|
||||
left join ts_position p
|
||||
on up.position_id=p.id
|
||||
where 1=1
|
||||
<if test="TsUser.institutionId != null and TsUser.institutionId != '' ">
|
||||
and u.institution_id=#{TsUser.institutionId}
|
||||
|
||||
@@ -441,7 +441,7 @@ public class AttFileEOController {
|
||||
String waterContent = userMsg;
|
||||
//2020年9月5日 去掉水印处理
|
||||
//2021年7月25日要求下载生成水印
|
||||
WaterMarkUtil.waterMark(oldFilePath,waterFilePath,waterContent);
|
||||
WaterMarkUtil.waterMarkNew(oldFilePath,waterFilePath,waterContent);
|
||||
response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\"");
|
||||
response.setContentType("application/octet-stream");
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `ts_user` ADD COLUMN `SYS_POSITION_IDS` varchar(2000) NULL COMMENT '设置的岗位ID集合' AFTER `SSO_ID`;
|
||||
Reference in New Issue
Block a user