From b720a7f6525686de9283136f192c91f9ad7e9dac Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Tue, 23 May 2023 17:58:42 +0800 Subject: [PATCH 01/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/adc/da/report/dao/mysql/ReportFileDao.java | 8 ++++++++ .../main/java/com/adc/da/report/eo/ReportFile.java | 14 ++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java new file mode 100644 index 0000000..6b74e34 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -0,0 +1,8 @@ +package com.adc.da.report.dao.mysql; + +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface ReportFileDao extends BaseMapper { + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java new file mode 100644 index 0000000..5a950c5 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -0,0 +1,14 @@ +package com.adc.da.report.eo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +@Data +public class ReportFile { + + @TableField("report_id") + private String reportId; + + @TableField("file_id") + private String fileId; +} From 71ab3a0fd8e90d1e73034b4d62b3df4db6978c1d Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 10:54:58 +0800 Subject: [PATCH 02/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 14 +++ .../adc/da/report/service/IFileService.java | 5 ++ .../report/service/impl/IFileServiceImpl.java | 87 ++++++++++++++++++- 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index e6e230a..c7ecd61 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -395,6 +396,19 @@ public class ReportManageConroller { } + /** + * 批量上传文件 + * @param files + * @return + * @throws IOException + */ + @ApiOperation(value = "批量上传文件") + @PostMapping("/batchUploadFile") + public ResponseMessage>> batchUploadFile(@RequestParam("files") @ApiParam(value="上传文件",required=true) MultipartFile[] files) throws IOException { + List> uploadFile = fileService.batchUploadFile(files); + return Result.success(uploadFile); + } + /** * 上传图片 * @param file diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index c220c44..adec625 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -2,6 +2,10 @@ package com.adc.da.report.service; import com.adc.da.report.eo.FileEntity; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; /** * @Author doudxw @@ -22,4 +26,5 @@ public interface IFileService { */ FileEntity getFile(String fileId); + List> batchUploadFile(MultipartFile[] files); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index 7a5eba7..976d901 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -3,19 +3,47 @@ package com.adc.da.report.service.impl; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.eo.FileEntity; import com.adc.da.report.service.IFileService; -import javax.annotation.Resource; +import com.adc.da.report.util.LocalFileUtil; +import com.adc.da.report.util.OSSClientUtil; +import com.adc.da.report.util.ObsBootUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.*; /** * @Author doudxw * @Date 2021/11/8 15:00 */ @Service +@Slf4j public class IFileServiceImpl implements IFileService { @Resource private FileDao fileDao; + @Value("${uploadFile}") + private String uploadFile; + + @Value("${picPath}") + private String picPath; + @Value("${uploadType}") + private String uploadType; + + @Autowired + private ObsBootUtil obsBootUtil; + + @Autowired + private LocalFileUtil localFileUtil; + + @Resource + private OSSClientUtil ossClientUtil; /** * 添加文件 @@ -36,4 +64,61 @@ public class IFileServiceImpl implements IFileService { FileEntity fileEntity = fileDao.selectById(fileId); return fileEntity; } + + @Override + @Transactional + public List> batchUploadFile(MultipartFile[] files) { + List> resultList = new ArrayList<>(); + for (MultipartFile file : files) { + Map resultMap = new HashMap(); + //上传路径 + //此路径映射到localhost + String path = uploadFile; + String realName = file.getOriginalFilename(); + Date now = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String date = dateFormat.format(now); + Random r = new Random(); + String num = ""; + for (int i = 0; i < 3; i++) { + int s = r.nextInt(10); + num += String.valueOf(s); + } + + //获取上传文件名 + String fileName = file.getOriginalFilename(); + String contentType = file.getContentType(); + String ext = fileName.substring(fileName.lastIndexOf(".") + 1); + fileName = fileName.substring(0, fileName.lastIndexOf("."))+date + num + "." + ext; + log.info("fileName>>" + fileName); + try{ + String result=""; + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)){ + result = obsBootUtil.upload(file, fileName); + }else if ("alioss".equals(uploadType)) { + result = ossClientUtil.uploadFile2OSS(file.getInputStream(),fileName); + }else if ("local".equals(uploadType)) { + localFileUtil.saveFile(file.getInputStream(), fileName); + } + resultMap.put("key", date + num); + resultMap.put("value", path + "//" + fileName); + resultMap.put("name", realName); + resultList.add(resultMap); + } + catch (Exception e){ + log.error(e.getMessage(),e); + } + FileEntity entity = new FileEntity(); + entity.setContentType(contentType); + entity.setCreateTime(new Date()); + entity.setFileName(realName); + entity.setFileType(ext); + entity.setFileSize(String.valueOf(file.getSize())); + entity.setFileId(date + num); + entity.setSavePath(fileName); + this.addFile(entity); + } + return resultList; + } } From 7477a16a47418dec9a04848096be91a3920878e9 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 14:50:54 +0800 Subject: [PATCH 03/17] =?UTF-8?q?feat:=E7=AB=99=E5=86=85=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/adc/da/report/TestMessage.java | 46 ++++++++ .../da/report/constant/MessageConstants.java | 23 ++++ .../da/report/constant/MessageTypeEnum.java | 40 +++++++ .../report/controller/MessageController.java | 49 ++++++++ .../adc/da/report/dao/mysql/MessageDao.java | 30 +++++ .../da/report/dao/mysql/UserMessageDao.java | 18 +++ .../com/adc/da/report/eo/MessageEntity.java | 70 ++++++++++++ .../adc/da/report/eo/UserMessageEntity.java | 56 +++++++++ .../da/report/service/IMessageService.java | 36 ++++++ .../report/service/IUserMessageService.java | 13 +++ .../service/impl/IMessageServiceImpl.java | 108 ++++++++++++++++++ .../service/impl/IUserMessageServiceImpl.java | 22 ++++ .../com/adc/da/report/vo/MessageQueryVo.java | 41 +++++++ .../java/com/adc/da/report/vo/MessageVo.java | 79 +++++++++++++ .../mybatis/mapper/mysql/MessageDao.xml | 48 ++++++++ 15 files changed, 679 insertions(+) create mode 100644 adc-da-main/src/test/java/com/adc/da/report/TestMessage.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml diff --git a/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java new file mode 100644 index 0000000..7a79029 --- /dev/null +++ b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java @@ -0,0 +1,46 @@ +package com.adc.da.report; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.service.IMessageService; +import com.adc.da.util.utils.UUID; +import io.github.swagger2markup.GroupBy; +import io.github.swagger2markup.Language; +import io.github.swagger2markup.Swagger2MarkupConfig; +import io.github.swagger2markup.Swagger2MarkupConverter; +import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder; +import io.github.swagger2markup.markup.builder.MarkupLanguage; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.net.URL; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +public class TestMessage { + + @Resource + private IMessageService messageService; + + @Test + public void testMessagePublish() { + MessageEntity messageEntity = new MessageEntity(); + messageEntity.setMessageTitle("测试批量发送标题") + .setMessageType(MessageTypeEnum.SYSTEM_MESSAGE.getValue()) + .setId(UUID.randomUUID10()) + .setContent("测试测试最后一次") + .setDelFlag(0) + .setCreateUser("ZGGJP3N7FT") + .setCreateDate(new Date()); + List userIds = new ArrayList<>(); + userIds.add("ZGGJP3N7FT"); + messageService.publishMessage(messageEntity, false, userIds); + } +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java new file mode 100644 index 0000000..7902caf --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java @@ -0,0 +1,23 @@ +package com.adc.da.report.constant; + +import io.swagger.models.auth.In; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 15:17 + * @Description: + */ +public class MessageConstants { + + /** + * 消息状态 未读 + */ + public static final Integer UNREAD = 0; + + + /** + * 消息状态 已读 + */ + public static final Integer READ = 1; + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java new file mode 100644 index 0000000..b8cda0e --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java @@ -0,0 +1,40 @@ +package com.adc.da.report.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * @author: CaiHaohan + * @Date: 2023/5/24 10:44 + * @Description: + */ +public enum MessageTypeEnum { + + /** + * 系统消息 + */ + SYSTEM_MESSAGE(0, "系统消息"); + + /** + * 对应值 + */ + private Integer code; + + /** + * 描述 + */ + private String desc; + + MessageTypeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getValue() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java new file mode 100644 index 0000000..79c80a7 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java @@ -0,0 +1,49 @@ +package com.adc.da.report.controller; + +import com.adc.da.report.service.IMessageService; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.adc.da.util.http.ResponseMessage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * @Author caihaohan + * @Date 2021/11/9 13:46 + */ +@Slf4j +@Api(tags = "站内信") +@RestController +@RequestMapping("/${restPath}/message") +public class MessageController { + + + @Resource + private IMessageService messageEntityService; + + /** + * 站内信消息列表 + * @return + */ + @ApiOperation("站内信消息列表") + @GetMapping("/list") + public ResponseMessage list(@Valid MessageQueryVo messageQueryVo) { + return messageEntityService.listByCurrentUser(messageQueryVo); + } + + /** + * 全部已读 + * @return + */ + @ApiOperation("全部已读接口") + @GetMapping("/allRead") + public ResponseMessage allRead() { + return messageEntityService.allRead(); + } + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java new file mode 100644 index 0000000..c0ad01a --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java @@ -0,0 +1,30 @@ +package com.adc.da.report.dao.mysql; + +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Mapper +* @createDate 2023-05-23 11:22:15 +* @Entity com.adc.da.report.eo.MessageEntityEntity +*/ +public interface MessageDao extends BaseMapper { + + /** + * 根据当前用户展示站内信列表 + * @param page + * @param messageVo + * @param userId + * @return + */ + IPage listByUser(IPage page, @Param("vo") MessageQueryVo messageVo, @Param("userId") String userId); +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java new file mode 100644 index 0000000..fc37a79 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java @@ -0,0 +1,18 @@ +package com.adc.da.report.dao.mysql; + +import com.adc.da.report.eo.UserMessageEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Mapper +* @createDate 2023-05-23 11:30:04 +* @Entity com.adc.da.report.eo.UserMessage +*/ +public interface UserMessageDao extends BaseMapper { + +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java new file mode 100644 index 0000000..cce9217 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java @@ -0,0 +1,70 @@ +package com.adc.da.report.eo; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * + * @author Caihaohan + * @TableName ts_message + */ +@TableName(value ="ts_message") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class MessageEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id") + private String id; + + /** + * 标题 + */ + @TableField(value = "message_title") + private String messageTitle; + + /** + * 内容 + */ + @TableField(value = "content") + private String content; + + /** + * 消息类型 + */ + @TableField(value = "message_type") + private Integer messageType; + + /** + * 发布人 + */ + @TableField(value = "createUser") + private String createUser; + + /** + * 发布时间 + */ + @TableField(value = "createDate") + private Date createDate; + + /** + * 删除标记(0未删除 1已删除) + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1314298673425876932L; +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java new file mode 100644 index 0000000..76131e3 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java @@ -0,0 +1,56 @@ +package com.adc.da.report.eo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * + * @author ThinkBook + * @TableName ts_user_message + */ +@TableName(value ="ts_user_message") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class UserMessageEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id") + private String id; + + /** + * 用户id + */ + @TableField(value = "user_id") + private String userId; + + /** + * 站内信id + */ + @TableField(value = "message_id") + private String messageId; + + /** + * 阅读状态(0代表未读,1代表已读) + */ + @TableField(value = "read_type") + private Integer readType; + + /** + * 删除标记(0未删除 1已删除) + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java new file mode 100644 index 0000000..fe1016c --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java @@ -0,0 +1,36 @@ +package com.adc.da.report.service; + +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.util.http.ResponseMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Service +* @createDate 2023-05-23 11:22:15 +*/ +public interface IMessageService extends IService { + + /** + * 返回当前用户的消息列表 + * @return + */ + ResponseMessage listByCurrentUser(MessageQueryVo messageVo); + + /** + * 全部已读接口 + * @return + */ + ResponseMessage allRead(); + + /** + * 发布站内信(当用户数过多的时候谨慎使用发送给全部用户) + * @param message + * @param toAllUser + * @param userIds + */ + void publishMessage(MessageEntity message, boolean toAllUser, List userIds); +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java new file mode 100644 index 0000000..53500ef --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java @@ -0,0 +1,13 @@ +package com.adc.da.report.service; + +import com.adc.da.report.eo.UserMessageEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Service +* @createDate 2023-05-23 11:30:04 +*/ +public interface IUserMessageService extends IService { + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java new file mode 100644 index 0000000..a8987b9 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java @@ -0,0 +1,108 @@ +package com.adc.da.report.service.impl; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.report.constant.MessageConstants; +import com.adc.da.report.constant.MessageTypeEnum; +import com.adc.da.report.constant.ReportConstants; +import com.adc.da.report.dao.mysql.UserMessageDao; +import com.adc.da.report.eo.UserMessageEntity; +import com.adc.da.report.service.IUserMessageService; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.adc.da.sys.dao.mysql.UserEODao; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.iservice.IUserEoService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.service.IMessageService; +import com.adc.da.report.dao.mysql.MessageDao; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Service实现 +* @createDate 2023-05-23 11:22:15 +*/ +@Service +public class IMessageServiceImpl extends ServiceImpl + implements IMessageService { + + @Resource + private MessageDao messageDao; + + @Resource + private IUserMessageService userMessageService; + + @Resource + private UserEODao userEODao; + + @Override + public ResponseMessage listByCurrentUser(MessageQueryVo messageVo) { + IPage page = new Page<>(); + page.setCurrent(messageVo.getPageNo()); + page.setSize(messageVo.getPageSize()); + IPage list = messageDao.listByUser(page, messageVo, UserUtils.getUserId()); + return Result.success(list); + } + + @Override + public ResponseMessage allRead() { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(UserMessageEntity::getReadType, MessageConstants.UNREAD); + wrapper.eq(UserMessageEntity::getUserId, UserUtils.getUserId()); + wrapper.set(UserMessageEntity::getReadType, MessageConstants.READ); + userMessageService.update(wrapper); + return Result.success("全部已读"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void publishMessage(MessageEntity message, boolean toAllUser, List userIds) { + List userEoIds = new ArrayList<>(); + if (toAllUser) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserEO::getDelFlag, 0); + List userEOS = userEODao.selectList(lambdaQueryWrapper); + if (userEOS != null) { + userEoIds = userEOS.stream().map(UserEO::getUsid).collect(Collectors.toList()); + } + } else { + userEoIds = userIds; + if (userEoIds.isEmpty()) { + throw new AdcDaBaseException("无指定发送的用户,无法发送站内信"); + } + } + //保存消息信息 + save(message); + List userMessageEntities = new ArrayList<>(); + userEoIds.forEach(userId -> { + UserMessageEntity userMessageEntity = new UserMessageEntity(); + userMessageEntity.setId(UUID.randomUUID10()) + .setUserId(userId) + .setMessageId(message.getId()) + .setReadType(MessageConstants.UNREAD) + .setDelFlag(0); + userMessageEntities.add(userMessageEntity); + }); + userMessageService.saveBatch(userMessageEntities); + } +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java new file mode 100644 index 0000000..1d02f07 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java @@ -0,0 +1,22 @@ +package com.adc.da.report.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.report.eo.UserMessageEntity; +import com.adc.da.report.service.IUserMessageService; +import com.adc.da.report.dao.mysql.UserMessageDao; +import org.springframework.stereotype.Service; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Service实现 +* @createDate 2023-05-23 11:30:04 +*/ +@Service +public class IUserMessageServiceImpl extends ServiceImpl + implements IUserMessageService { + +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java new file mode 100644 index 0000000..29052a0 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java @@ -0,0 +1,41 @@ +package com.adc.da.report.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 14:14 + * @Description: + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class MessageQueryVo { + + /** + * 标题 + */ + private String messageTitle; + + /** + * 发布人姓名 + */ + private String createUserName; + + /** + * 页数 + */ + @Min(1) + private int pageNo; + + /** + * 每页数量 + */ + @NotNull + private int pageSize; +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java new file mode 100644 index 0000000..0f0b3d8 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java @@ -0,0 +1,79 @@ +package com.adc.da.report.vo; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 11:54 + * @Description: + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class MessageVo { + + /** + * 关系表的id + */ + private String id; + + /** + * 标题 + */ + private String messageTitle; + + /** + * 内容 + */ + private String content; + + /** + * 消息类型 + */ + private Integer messageType; + + /** + * 消息类型 + */ + private String messageTypeDesc; + + /** + * 发布时间 + */ + private Date createDate; + + /** + * 创建用户id + */ + private String createUser; + + /** + * 消息id + */ + private String messageId; + + /** + * 阅读状态(0未读 1已读) + */ + private Integer readType; + + public void setMessageType(Integer messageType) { + this.messageType = messageType; + switch (messageType) { + case 0: + this.messageTypeDesc = MessageTypeEnum.SYSTEM_MESSAGE.getDesc(); + break; + default: + this.messageTypeDesc = "未知"; + } + } +} diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml new file mode 100644 index 0000000..abe682f --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + id,content,message_type, + createDate,del_flag + + + From 34e0852d400214e6303f712f4ee3515fcaf9028e Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 15:29:44 +0800 Subject: [PATCH 04/17] =?UTF-8?q?feat:=E9=A2=84=E8=A7=88-=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/constant/ReportConstants.java | 9 ++ .../java/com/adc/da/report/eo/ReportFile.java | 14 ++ .../service/impl/IReportServiceImpl.java | 141 ++++++++++-------- .../java/com/adc/da/report/vo/FileVo.java | 21 +++ .../com/adc/da/report/vo/ReportDetailVo.java | 13 +- .../mapper/mysql/ReportManageMapper.xml | 4 - 6 files changed, 129 insertions(+), 73 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java index 3801efc..fc25652 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java @@ -23,6 +23,15 @@ public class ReportConstants { */ public static final String NO_USER_PRIVACY_INVOLVED = "不涉及用户隐私"; + /** + * 流程中 + */ + public static final Integer IN_PROCESS = 1; + + /** + * 不在流程中 + */ + public static final Integer NOT_IN_PROCESS = 2; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 5a950c5..4315fa4 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,14 +1,28 @@ package com.adc.da.report.eo; +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 lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; @Data +@TableName("ts_report_file") +@Accessors(chain = true) public class ReportFile { + @TableId(value = "id",type = IdType.INPUT) + private String id; + @TableField("report_id") private String reportId; @TableField("file_id") private String fileId; + + @TableField("state") + private String state; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d356c1f..187b11d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -6,14 +6,12 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.ChangeUploaderVo; -import com.adc.da.report.vo.ReportDetailVo; -import com.adc.da.report.vo.ReportQueryVo; -import com.adc.da.report.vo.ReportVo; +import com.adc.da.report.vo.*; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -22,6 +20,7 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -128,6 +127,9 @@ public class IReportServiceImpl extends ServiceImpl @Resource private MenuEOService menuEOService; + @Resource + private ReportFileDao reportFileDao; + @Override public void addOrUpdate(ReportEntity reportEntity) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -529,38 +531,38 @@ public class IReportServiceImpl extends ServiceImpl }); } - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -612,38 +614,38 @@ public class IReportServiceImpl extends ServiceImpl } }); - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -716,6 +718,21 @@ public class IReportServiceImpl extends ServiceImpl @Override public ResponseMessage reportDetail(String reportId) { ReportDetailVo reportDetailVo = reportDao.reportDetail(reportId); + //设置文件信息 + LambdaQueryWrapper reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportDetailVo.getId()); + reportFileLambdaQueryWrapper.eq(ReportFile::getState, ReportConstants.NOT_IN_PROCESS); + List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); + List fileIds = new ArrayList<>(); + if (reportFiles != null) { + fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(fileIds)) { + List fileEntities = fileDao.selectBatchIds(fileIds); + List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); + reportDetailVo.setFileList(fileVos); + } + //设置部门名称 String department = reportDetailVo.getDepartment(); if (StrUtil.isNotBlank(department)) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java new file mode 100644 index 0000000..8ef3be2 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java @@ -0,0 +1,21 @@ +package com.adc.da.report.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FileVo { + + /** + * 文件主键id + */ + private String fileId; + + /** + * 文件名 + */ + private String fileName; +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index 5843c73..712f15a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -44,6 +44,7 @@ public class ReportDetailVo { */ private String departmentId; + private String department; /** * 部门 @@ -65,13 +66,6 @@ public class ReportDetailVo { */ private String privacyLevel; - /** - * 文件id - */ - private String fileId; - - private String fileName; - /** * 创建人id */ @@ -111,4 +105,9 @@ public class ReportDetailVo { * 保密到期日期 */ private Date secrecyLast; + + /** + * 文件列表 + */ + private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index cb7feca..b6c6103 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -100,7 +100,6 @@ eo.maincontent AS mainContent, eo.DEPARTMENT AS department, eo.`YEAR` AS `year`, - eo.fileid AS fileId, eo.confidentialLevel AS confidentialLevel, eo.privacyLevel AS privacyLevel, eo.createUserId AS createUserId, @@ -284,15 +283,12 @@ rm.maincontent AS maincontent, rm.department AS department, rm.`year` AS `year`, - rm.fileId AS fileId, - f.file_name as fileName, rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, rm.secrecy_last AS secrecyLast FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_file as f on rm.fileId=f.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 From b0a47208c292f54dd59b20d28a547788594a54b0 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 16:50:07 +0800 Subject: [PATCH 05/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 64 ++++------------- .../da/report/dao/mysql/ReportFileDao.java | 4 ++ .../com/adc/da/report/eo/ReportEntity.java | 5 +- .../java/com/adc/da/report/eo/ReportFile.java | 40 +++++++++++ .../adc/da/report/eo/TtReportManageAct.java | 8 ++- .../adc/da/report/service/IFileService.java | 2 + .../da/report/service/IReportFileService.java | 11 +++ .../adc/da/report/service/IReportService.java | 4 ++ .../report/service/impl/IFileServiceImpl.java | 54 ++++++++++++++ .../service/impl/IReportFileServiceImpl.java | 16 +++++ .../service/impl/IReportServiceImpl.java | 52 ++++++++++---- .../impl/ITtReportManageActServiceImpl.java | 25 +++++++ .../com/adc/da/report/vo/ReportDetailVo.java | 6 ++ .../java/com/adc/da/report/vo/ReportVo.java | 15 ++-- .../mybatis/mapper/mysql/ReportFileMapper.xml | 28 ++++++++ .../mapper/mysql/ReportManageMapper.xml | 72 +++++++++++++++---- .../mapper/mysql/TtReportManageActMapper.xml | 30 +++++--- .../service/ActivitDefineService.java | 37 +++++++++- 18 files changed, 372 insertions(+), 101 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index c7ecd61..88676fd 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -5,10 +5,7 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.annotation.ReportLog; import com.adc.da.report.dao.mysql.ReportDao; import com.adc.da.report.dao.mysql.ReportLogBookDao; -import com.adc.da.report.eo.FileEntity; -import com.adc.da.report.eo.LogEntity; -import com.adc.da.report.eo.ReportEntity; -import com.adc.da.report.eo.ReportLogBook; +import com.adc.da.report.eo.*; import com.adc.da.report.service.IFileService; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportService; @@ -345,53 +342,7 @@ public class ReportManageConroller { @ApiOperation(value = "详情||上传文件") @PostMapping("/uploadFile") public ResponseMessage> uploadFile(MultipartFile file) throws IOException { - Map resultMap = new HashMap(); - //上传路径 - //此路径映射到localhost - String path = uploadFile; - String realName = file.getOriginalFilename(); - Date now = new Date(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - String date = dateFormat.format(now); - Random r = new Random(); - String num = ""; - for (int i = 0; i < 3; i++) { - int s = r.nextInt(10); - num += String.valueOf(s); - } - - //获取上传文件名 - String fileName = file.getOriginalFilename(); - String contentType = file.getContentType(); - String ext = fileName.substring(fileName.lastIndexOf(".") + 1); - fileName = fileName.substring(0, fileName.lastIndexOf("."))+date + num + "." + ext; - log.info("fileName>>" + fileName); - try{ - String result=""; - // 上传方式:阿里云:alioss 华为云:hwobs - if ("hwobs".equals(uploadType)){ - result = obsBootUtil.upload(file, fileName); - }else if ("alioss".equals(uploadType)) { - result = ossClientUtil.uploadFile2OSS(file.getInputStream(),fileName); - }else if ("local".equals(uploadType)) { - localFileUtil.saveFile(file.getInputStream(), fileName); - } - resultMap.put("key", date + num); - resultMap.put("value", path + "//" + fileName); - resultMap.put("name", realName); - } - catch (Exception e){ - log.error(e.getMessage(),e); - } - FileEntity entity = new FileEntity(); - entity.setContentType(contentType); - entity.setCreateTime(new Date()); - entity.setFileName(realName); - entity.setFileType(ext); - entity.setFileSize(String.valueOf(file.getSize())); - entity.setFileId(date + num); - entity.setSavePath(fileName); - fileService.addFile(entity); + Map resultMap = fileService.uploadFile(file); return Result.success(resultMap); } @@ -621,4 +572,15 @@ public class ReportManageConroller { return Result.success(act); } + /** + * 删除文件 + * @return + * @throws ParseException + */ + @ApiOperation("删除文件") + @PostMapping("/delFile") + public ResponseMessage delFile(@RequestBody ReportFile reportFile) throws Exception { + reportService.delFile(reportFile); + return Result.success(); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 6b74e34..709a416 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -2,7 +2,11 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.ReportFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; public interface ReportFileDao extends BaseMapper { + void delByReportId(@Param("pageVO") ReportFile reportFile); + + void actEndDelReport(@Param("pageVO")ReportFile reportFile1); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java index 222990a..f444238 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java @@ -68,7 +68,7 @@ public class ReportEntity { /** * 文件id */ - @TableField("fileId") + @TableField(exist = false) private String fileId; /** @@ -109,4 +109,7 @@ public class ReportEntity { @TableField(exist = false) private List> labelList; + + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 5a950c5..bbe33a9 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,14 +1,54 @@ package com.adc.da.report.eo; +import com.adc.da.login.util.UserUtils; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.util.List; + @Data +@TableName("TS_REPORT_FILE") public class ReportFile { + @TableField("id") + private String Id; + @TableField("report_id") private String reportId; @TableField("file_id") private String fileId; + + /** + * 状态 1 流程中 ,2 非流程中 + */ + @TableField("state") + private Integer state; + + @TableField("user_id") + private String userId; + + + + @TableField(exist = false) + private List rfIdList; + + @TableField(exist = false) + private String fileName; + + + + public ReportFile(String reportId){ + this.reportId = reportId; + } + public ReportFile(String reportId,Integer state){ + this.reportId = reportId; + this.state = state; + this.userId = UserUtils.getUserId(); + } + + public ReportFile(){ + + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java index e6fa1af..5402925 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java @@ -128,10 +128,16 @@ public class TtReportManageAct { @TableField("secrecy_last") private Date secrecyLast; - @TableField("file_name") + @TableField(exist = false) + private String rfId; + + @TableField(exist = false) private String fileName; @TableField(exist = false) private List labelList; + @TableField(exist = false) + private List fileList; + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index adec625..7c875de 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -27,4 +27,6 @@ public interface IFileService { FileEntity getFile(String fileId); List> batchUploadFile(MultipartFile[] files); + + Map uploadFile(MultipartFile file); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java new file mode 100644 index 0000000..260a802 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java @@ -0,0 +1,11 @@ +package com.adc.da.report.service; + + +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface IReportFileService extends IService { + + + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index 1a50caa..46ad7c7 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -1,6 +1,7 @@ package com.adc.da.report.service; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.vo.ChangeUploaderVo; import com.adc.da.report.vo.ReportQueryVo; import com.adc.da.report.vo.ReportVo; @@ -95,4 +96,7 @@ public interface IReportService { * @return */ ResponseMessage changeUploader(ChangeUploaderVo changeUploaderVo); + + void delFile(ReportFile reportFile); + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index 976d901..4ad2e85 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -6,6 +6,7 @@ import com.adc.da.report.service.IFileService; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -121,4 +122,57 @@ public class IFileServiceImpl implements IFileService { } return resultList; } + + @Override + @Synchronized + public Map uploadFile(MultipartFile file) { + Map resultMap = new HashMap(); + //上传路径 + //此路径映射到localhost + String path = uploadFile; + String realName = file.getOriginalFilename(); + Date now = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String date = dateFormat.format(now); + Random r = new Random(); + String num = ""; + for (int i = 0; i < 3; i++) { + int s = r.nextInt(10); + num += String.valueOf(s); + } + + //获取上传文件名 + String fileName = file.getOriginalFilename(); + String contentType = file.getContentType(); + String ext = fileName.substring(fileName.lastIndexOf(".") + 1); + fileName = fileName.substring(0, fileName.lastIndexOf("."))+date + num + "." + ext; + log.info("fileName>>" + fileName); + try{ + String result=""; + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)){ + result = obsBootUtil.upload(file, fileName); + }else if ("alioss".equals(uploadType)) { + result = ossClientUtil.uploadFile2OSS(file.getInputStream(),fileName); + }else if ("local".equals(uploadType)) { + localFileUtil.saveFile(file.getInputStream(), fileName); + } + resultMap.put("id", date + num); + resultMap.put("value", path + "//" + fileName); + resultMap.put("name", realName); + } + catch (Exception e){ + log.error(e.getMessage(),e); + } + FileEntity entity = new FileEntity(); + entity.setContentType(contentType); + entity.setCreateTime(new Date()); + entity.setFileName(realName); + entity.setFileType(ext); + entity.setFileSize(String.valueOf(file.getSize())); + entity.setFileId(date + num); + entity.setSavePath(fileName); + this.addFile(entity); + return resultMap; + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java new file mode 100644 index 0000000..e57861b --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java @@ -0,0 +1,16 @@ +package com.adc.da.report.service.impl; + +import com.adc.da.report.dao.mysql.ReportFileDao; +import com.adc.da.report.eo.ReportFile; +import com.adc.da.report.service.IReportFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + + +@Service +@Slf4j +public class IReportFileServiceImpl extends ServiceImpl + implements IReportFileService { + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d356c1f..6ecb9ec 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -6,6 +6,7 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; @@ -128,6 +129,12 @@ public class IReportServiceImpl extends ServiceImpl @Resource private MenuEOService menuEOService; + @Autowired + private IReportFileService iReportFileService; + + @Autowired + private ReportFileDao reportFileDao; + @Override public void addOrUpdate(ReportEntity reportEntity) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -143,6 +150,16 @@ public class IReportServiceImpl extends ServiceImpl reportDao.insert(reportEntity); } String reportId = reportEntity.getId(); + //文件 + reportFileDao.delByReportId(new ReportFile(reportId,2)); + List reportFiles = new ArrayList<>(); + for (String s : reportEntity.getFileList()) { + ReportFile reportFile = new ReportFile(); + reportFile.setReportId(reportId); + reportFile.setFileId(s); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); //插入报表标签关系表 //修改报表标签关系表(先删后增) iReportLabelService.deleteReportLabelByReportId(new String[]{reportId}); @@ -156,13 +173,13 @@ public class IReportServiceImpl extends ServiceImpl labelList.add(reportLabelEntity); } iReportLabelService.saveBatch(labelList); - //插入报表内容表 - try { - iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); - log.info("抽取报告内容"); - } catch (IOException e) { - log.error("获取报告内容失败", e); - } + } + //插入报表内容表 + try { + iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); + log.info("抽取报告内容"); + } catch (IOException e) { + log.error("获取报告内容失败", e); } } @@ -181,6 +198,11 @@ public class IReportServiceImpl extends ServiceImpl return Result.success("修改成功"); } + @Override + public void delFile(ReportFile reportFile) { + reportFileDao.deleteBatchIds(reportFile.getRfIdList()); + } + /** * 新增或编辑报告 * @@ -267,8 +289,6 @@ public class IReportServiceImpl extends ServiceImpl reportLabelDao.insert(reportLabelEntity); }); - //TODO 插入报表内容表(先删后增) - //删除power_apply表中的对应权限 iPowerApplyService.deleteByReportId(entity.getId()); @@ -530,7 +550,9 @@ public class IReportServiceImpl extends ServiceImpl } list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + // TODO FILE c.getFileList +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + FileEntity fileEntity = new FileEntity(); if (StringUtils.isEmpty(fileEntity.getFileType())) { c.setFileType(null); } @@ -556,7 +578,8 @@ public class IReportServiceImpl extends ServiceImpl //文件大小 c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); + // TODO FILE +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); @@ -613,7 +636,9 @@ public class IReportServiceImpl extends ServiceImpl }); list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + // TODO FILE c.getFileList +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + FileEntity fileEntity = new FileEntity() ; if (StringUtils.isEmpty(fileEntity.getFileType())) { c.setFileType(null); } @@ -639,7 +664,8 @@ public class IReportServiceImpl extends ServiceImpl //文件大小 c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); + //TODO FILE +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index d6e9916..b11fc47 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -5,12 +5,15 @@ import cn.hutool.core.bean.BeanUtil; import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.LogEntity; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportContentService; +import com.adc.da.report.service.IReportFileService; import com.adc.da.report.service.ITtReportManageActService; import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.TtReportManageActPageVO; @@ -29,6 +32,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.UUID; /** * @author bu @@ -51,7 +55,11 @@ public class ITtReportManageActServiceImpl extends ServiceImpl @@ -152,6 +160,23 @@ public class ITtReportManageActServiceImpl extends ServiceImpl reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(2); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); + try { iReportContentService.insertReportContent(ttReportManageAct.getDataId(), ttReportManageAct.getFileId()); log.info("抽取报告内容"); diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index 5843c73..b84b0fa 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -1,5 +1,7 @@ package com.adc.da.report.vo; +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -111,4 +113,8 @@ public class ReportDetailVo { * 保密到期日期 */ private Date secrecyLast; + + + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java index 48cfc2a..ea02cfb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java @@ -1,5 +1,7 @@ package com.adc.da.report.vo; +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.util.List; @@ -46,16 +48,6 @@ public class ReportVo { */ private String year; - /** - * 文件id - */ - private String fileId; - - /** - * 文件名称 - */ - private String fileName; - /** * 文件类型 */ @@ -135,5 +127,6 @@ public class ReportVo { private Integer isAct; private String prcType; - + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml new file mode 100644 index 0000000..19241a8 --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -0,0 +1,28 @@ + + + + + delete from ts_report_file + + report_id = #{pageVO.reportId} + and ( state = 2 or (state = 1 AND user_id = #{pageVO.userId} ) ) + + + + + + delete from ts_report_file + + + AND report_id = #{pageVO.reportId} + + + AND user_id = #{pageVO.userId} + + + AND state = #{pageVO.state} + + + + + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index cb7feca..f0dde0a 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -1,15 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - id, name, keycontent, maincontent, department, year, fileId, confidentialLevel, privacyLevel, + id, name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag,secrecy_last - #{Vo.id},#{Vo.name},#{Vo.keycontent},#{Vo.maincontent},#{Vo.department},#{Vo.year},#{Vo.fileId}, + #{Vo.id},#{Vo.name},#{Vo.keycontent},#{Vo.maincontent},#{Vo.department},#{Vo.year}, #{Vo.confidentialLevel},#{Vo.privacyLevel}, #{Vo.createUserId}, #{Vo.createDate},#{Vo.updateDate},#{Vo.del_flag}, @@ -19,7 +65,7 @@ insert into TT_REPORT_MANAGE () value ( - #{Vo.dataId},#{Vo.name},#{Vo.keyContent},#{Vo.mainContent},#{Vo.department},#{Vo.year},#{Vo.fileId}, + #{Vo.dataId},#{Vo.name},#{Vo.keyContent},#{Vo.mainContent},#{Vo.department},#{Vo.year}, #{Vo.confidentialLevel},#{Vo.privacyLevel}, #{Vo.createUserId}, #{Vo.createDate},#{Vo.updateDate},#{Vo.delFlag}, @@ -45,7 +91,6 @@ eo.maincontent, eo.DEPARTMENT, eo.YEAR, - eo.fileid, eo.confidentialLevel, eo.privacyLevel, eo.createUserId, @@ -91,7 +136,7 @@ - SELECT eo.id AS id, @@ -100,7 +145,6 @@ eo.maincontent AS mainContent, eo.DEPARTMENT AS department, eo.`YEAR` AS `year`, - eo.fileid AS fileId, eo.confidentialLevel AS confidentialLevel, eo.privacyLevel AS privacyLevel, eo.createUserId AS createUserId, @@ -113,6 +157,8 @@ IF(bpn.id is null,1, IF(bpn.SUBMIT_STATUS = 1 and bpn.CREAT_USER = #{pageVO.usid} ,0,1) ) as isAct + , + f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId FROM TT_REPORT_MANAGE eo LEFT JOIN ts_report_content rc ON eo.id = rc.report_id @@ -122,6 +168,8 @@ LEFT JOIN (SELECT report_id, COUNT(id) AS download FROM report_log_book WHERE type = 2 GROUP BY report_id) AS downloadCount ON eo.id = downloadCount.report_id LEFT JOIN ts_report_user_rating AS trur ON eo.id = trur.report_id LEFT JOIN bus_process_name as bpn on bpn.data_id = eo.id and bpn.prc_type != '5' + LEFT JOIN ts_report_file rf on rf.report_id = eo.id and rf.state = 2 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE eo.DEL_FLAG = 0 @@ -175,7 +223,6 @@ t.year, t.name, t.keycontent, - t.fileId, t.createDate, t.department, t.maincontent, @@ -274,7 +321,7 @@ - SELECT rm.id AS id, rm.name AS `name`, @@ -284,18 +331,19 @@ rm.maincontent AS maincontent, rm.department AS department, rm.`year` AS `year`, - rm.fileId AS fileId, - f.file_name as fileName, rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, - rm.secrecy_last AS secrecyLast + rm.secrecy_last AS secrecyLast, + f.id as fileId, f.file_name as fileName ,rf.id as rfId FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_file as f on rm.fileId=f.file_id + LEFT JOIN ts_report_file rf on rf.report_id = rm.id on rf.state = 2 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml index 3047e60..d0fdc99 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml @@ -15,7 +15,6 @@ - @@ -23,7 +22,11 @@ - + + + + + @@ -34,9 +37,9 @@ id, - task_id, prc_id, data_id,report_id ,name, keycontent, maincontent, department, year, fileId, confidentialLevel, + task_id, prc_id, data_id,report_id ,name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + ,secrecy_last @@ -71,9 +74,6 @@ AND year LIKE CONCAT(CONCAT('%',#{pageVO.year}),'%') - - AND fileId LIKE CONCAT(CONCAT('%',#{pageVO.fileId}),'%') - AND confidentialLevel LIKE CONCAT(CONCAT('%',#{pageVO.confidentialLevel}),'%') @@ -135,10 +135,14 @@ a.id, task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year, fileId, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + year,f.id as fileId, f.file_name as fileName ,rf.id as rfId, confidentialLevel, privacyLevel, createUserId, + createDate, + updateDate, del_flag + ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id + LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id data_id = #{dataId} @@ -148,10 +152,14 @@ a.id, task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year, fileId, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + year,f.id as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, + createDate, + updateDate, del_flag + ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id + LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id prc_id = #{prcId} diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java index 611751d..82f785d 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java @@ -1,12 +1,16 @@ package com.adc.da.wkflow.business_activiti.service; +import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyActDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.PowerApplyAct; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.ReportLabelEntity; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.IPowerApplyActService; +import com.adc.da.report.service.IReportFileService; import com.adc.da.report.service.IReportLabelService; import com.adc.da.report.service.ITtReportManageActService; import com.adc.da.util.exception.AdcDaBaseException; @@ -19,7 +23,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; @Service public class ActivitDefineService { @@ -42,7 +49,11 @@ public class ActivitDefineService { private ReportLabelDao reportLabelDao; @Autowired private IReportLabelService iReportLabelService; + @Autowired + private IReportFileService iReportFileService; + @Autowired + private ReportFileDao reportFileDao; //保存data数据 public String saveOrUpdateDate(String prcType, String dataJson,String taskId,String prcId,String reportId) { if (StringUtils.isBlank(reportId)){ @@ -115,6 +126,18 @@ public class ActivitDefineService { } iReportLabelService.saveBatch(labelList); } + // 文件 + reportFileDao.delByReportId(new ReportFile(reportId,1)); + List reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(1); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); }else if ("5".equals(prcType)){ // 编辑 TtReportManageAct ttReportManageAct = JSONObject.parseObject(dataJson, TtReportManageAct.class); @@ -138,6 +161,18 @@ public class ActivitDefineService { } iReportLabelService.saveBatch(labelList); } + // 文件 + reportFileDao.delByReportId(new ReportFile(reportId,1)); + List reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(1); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); }else { throw new AdcDaBaseException("没有流程类型"+prcType); } From 777e1ab48133c0f3f6ab1db24a1f80a6926679bc Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 17:15:29 +0800 Subject: [PATCH 06/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/adc/da/report/eo/ReportFile.java | 4 +-- .../adc/da/report/eo/TtReportManageAct.java | 2 +- .../service/impl/IReportServiceImpl.java | 17 +++++++------ .../com/adc/da/report/vo/ReportDetailVo.java | 4 --- .../mapper/mysql/ReportManageMapper.xml | 25 +++++++++++++++++++ 5 files changed, 37 insertions(+), 15 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index fbe47ae..9472755 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,13 +1,11 @@ package com.adc.da.report.eo; +import com.adc.da.login.util.UserUtils; 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 lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.util.List; diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java index 5402925..b225e12 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java @@ -94,7 +94,7 @@ public class TtReportManageAct { /** * 文件id */ - @TableField("fileId") + @TableField(exist = false) private String fileId; diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 4fdda8f..6515a44 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -11,7 +11,10 @@ import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.*; +import com.adc.da.report.vo.ChangeUploaderVo; +import com.adc.da.report.vo.ReportDetailVo; +import com.adc.da.report.vo.ReportQueryVo; +import com.adc.da.report.vo.ReportVo; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -20,7 +23,6 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; -import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -743,11 +745,12 @@ public class IReportServiceImpl extends ServiceImpl if (reportFiles != null) { fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); } - if (CollectionUtils.isNotEmpty(fileIds)) { - List fileEntities = fileDao.selectBatchIds(fileIds); - List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); - reportDetailVo.setFileList(fileVos); - } + //TODO FILE +// if (CollectionUtils.isNotEmpty(fileIds)) { +// List fileEntities = fileDao.selectBatchIds(fileIds); +// List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); +// reportDetailVo.setFileList(fileVos); +// } //设置部门名称 String department = reportDetailVo.getDepartment(); diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index f1a1d27..fe01296 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -111,8 +111,4 @@ public class ReportDetailVo { @TableField(exist = false) private List fileList; - /** - * 文件列表 - */ - private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index 7c14f02..f0dde0a 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -23,6 +23,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, From 1f2c158a69f690c642c39fc707716bed207e7ac6 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 17:46:39 +0800 Subject: [PATCH 07/17] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AD=97=E6=AE=B5=20=E9=A2=84=E8=A7=88-?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/service/impl/IReportServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 6515a44..08ad463 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -23,6 +23,7 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -745,12 +746,12 @@ public class IReportServiceImpl extends ServiceImpl if (reportFiles != null) { fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); } - //TODO FILE -// if (CollectionUtils.isNotEmpty(fileIds)) { -// List fileEntities = fileDao.selectBatchIds(fileIds); -// List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); -// reportDetailVo.setFileList(fileVos); -// } + + if (CollectionUtils.isNotEmpty(fileIds)) { + List fileEntities = fileDao.selectBatchIds(fileIds); + List fileVos = BeanCopyUtils.copyBeanList(fileEntities, ReportFile.class); + reportDetailVo.setFileList(fileVos); + } //设置部门名称 String department = reportDetailVo.getDepartment(); From 6349af539b3eaa7cf524d256ef5447749a14c101 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 17:48:04 +0800 Subject: [PATCH 08/17] =?UTF-8?q?ci:=E5=88=A0=E6=8E=89=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=AE=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 88676fd..ae62141 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -296,31 +296,6 @@ public class ReportManageConroller { return Result.success(); } - // TODO 测试完不需要的代码请删掉,然后再把这个TODO也删掉 - /** - * 测试 - */ - @ApiOperation("testtest") - @GetMapping("/test") - @Deprecated - public void ttt() { - stringRedisTemplate.boundValueOps("1121212").set("1212"); - - } - - // TODO 测试完不需要的代码请删掉,然后再把这个TODO也删掉 - @ApiOperation("testPath") - @GetMapping("/testPath") - @Deprecated - public ResponseMessage testPath() throws URISyntaxException { - HashMap pathMap = new HashMap<>(); - String jarPath = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath(); - String property = System.getProperty("user.dir"); - pathMap.put("jarpath", jarPath); - pathMap.put("propertyPath", property); - return Result.success(pathMap); - } - /** * 获取文件名 * @param fileId From f33fdc468a61927142c5901787403dbcc579403c Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 18:02:16 +0800 Subject: [PATCH 09/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/mysql/TtReportManageActMapper.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml index d0fdc99..a272517 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml @@ -133,15 +133,15 @@ SELECT a.id, - task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, + task_id, prc_id, data_id,a.report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year,f.id as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, + year,f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, createDate, - updateDate, del_flag + updateDate, a.del_flag ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id - LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_report_file rf on rf.report_id = a.data_id and rf.state = 1 LEFT JOIN ts_file f on f.FILE_ID = rf.file_id prc_id = #{prcId} From 5d9c442cc2c5b3bf5154ebb07283fe8823a33ff1 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 10:15:42 +0800 Subject: [PATCH 10/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=20=E4=B8=8A=E4=BC=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/dao/mysql/ReportFileDao.java | 4 +++- .../java/com/adc/da/report/eo/ReportFile.java | 4 ---- .../service/impl/IReportServiceImpl.java | 1 + .../impl/ITtReportManageActServiceImpl.java | 19 ++----------------- .../mybatis/mapper/mysql/ReportFileMapper.xml | 11 ++++++----- .../service/ActivitDefineService.java | 3 --- 6 files changed, 12 insertions(+), 30 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 709a416..571b189 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -8,5 +8,7 @@ public interface ReportFileDao extends BaseMapper { void delByReportId(@Param("pageVO") ReportFile reportFile); - void actEndDelReport(@Param("pageVO")ReportFile reportFile1); + void actEndDelReport(@Param("reportId")String reportId); + + void updateState(@Param("reportId")String dataId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 9472755..b2d049c 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,6 +1,5 @@ package com.adc.da.report.eo; -import com.adc.da.login.util.UserUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -28,8 +27,6 @@ public class ReportFile { @TableField("state") private Integer state; - @TableField("user_id") - private String userId; @@ -47,7 +44,6 @@ public class ReportFile { public ReportFile(String reportId,Integer state){ this.reportId = reportId; this.state = state; - this.userId = UserUtils.getUserId(); } public ReportFile(){ diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 08ad463..ee0a49c 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -177,6 +177,7 @@ public class IReportServiceImpl extends ServiceImpl } //插入报表内容表 try { + //TODO FILE iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); log.info("抽取报告内容"); } catch (IOException e) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index b11fc47..9790b9b 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -9,7 +9,6 @@ import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.LogEntity; import com.adc.da.report.eo.ReportEntity; -import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportContentService; @@ -32,7 +31,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.UUID; /** * @author bu @@ -162,21 +160,8 @@ public class ITtReportManageActServiceImpl extends ServiceImpl reportFiles = new ArrayList<>(); - for (ReportFile reportFile : ttReportManageAct.getFileList()) { - reportFile.setId(UUID.randomUUID().toString().replace("-","")); - reportFile.setReportId(ttReportManageAct.getDataId()); -// reportFile.setFileId(s); - reportFile.setState(2); - reportFile.setUserId(UserUtils.getUserId()); - reportFiles.add(reportFile); - } - iReportFileService.saveBatch(reportFiles); - + reportFileDao.actEndDelReport(ttReportManageAct.getDataId()); + reportFileDao.updateState(ttReportManageAct.getDataId()); try { iReportContentService.insertReportContent(ttReportManageAct.getDataId(), ttReportManageAct.getFileId()); log.info("抽取报告内容"); diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml index 19241a8..7632b59 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -1,11 +1,15 @@ + + update ts_report_file set state = 2 + where report_id = #{reportId} + delete from ts_report_file - report_id = #{pageVO.reportId} - and ( state = 2 or (state = 1 AND user_id = #{pageVO.userId} ) ) + report_id = #{reportId} + and state = 2 @@ -16,9 +20,6 @@ AND report_id = #{pageVO.reportId} - - AND user_id = #{pageVO.userId} - AND state = #{pageVO.state} diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java index 82f785d..0b5fe46 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java @@ -1,6 +1,5 @@ package com.adc.da.wkflow.business_activiti.service; -import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyActDao; import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; @@ -134,7 +133,6 @@ public class ActivitDefineService { reportFile.setReportId(ttReportManageAct.getDataId()); // reportFile.setFileId(s); reportFile.setState(1); - reportFile.setUserId(UserUtils.getUserId()); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); @@ -169,7 +167,6 @@ public class ActivitDefineService { reportFile.setReportId(ttReportManageAct.getDataId()); // reportFile.setFileId(s); reportFile.setState(1); - reportFile.setUserId(UserUtils.getUserId()); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); From dc2a8b69fee3cd3631500088ecaf545357c40fda Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 10:44:02 +0800 Subject: [PATCH 11/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=20=E8=AF=A6=E6=83=85=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/adc/da/report/service/impl/IReportServiceImpl.java | 2 ++ .../resources/mybatis/mapper/mysql/ReportManageMapper.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index ee0a49c..67238fb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -156,8 +156,10 @@ public class IReportServiceImpl extends ServiceImpl List reportFiles = new ArrayList<>(); for (String s : reportEntity.getFileList()) { ReportFile reportFile = new ReportFile(); + reportFile.setId(UUID.randomUUID().replace("-","")); reportFile.setReportId(reportId); reportFile.setFileId(s); + reportFile.setState(2); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index f0dde0a..f7efaeb 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -334,11 +334,11 @@ rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, rm.secrecy_last AS secrecyLast, - f.id as fileId, f.file_name as fileName ,rf.id as rfId + f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_report_file rf on rf.report_id = rm.id on rf.state = 2 + LEFT JOIN ts_report_file rf on rf.report_id = rm.id and rf.state = 2 LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 From 6aed66b1caef6e348b59f932a5085e96c321312c Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 10:52:21 +0800 Subject: [PATCH 12/17] =?UTF-8?q?feat:=E4=B8=8A=E4=BC=A0=E6=97=B6=E6=8A=BD?= =?UTF-8?q?=E5=8F=96=E6=8A=A5=E5=91=8A=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/IReportContentService.java | 4 +- .../impl/IReportContentServiceImpl.java | 62 ++++++++++++------- .../service/impl/IReportServiceImpl.java | 3 +- .../impl/ITtReportManageActServiceImpl.java | 2 +- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java index 37ce02d..a592798 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java @@ -3,7 +3,6 @@ package com.adc.da.report.service; import com.adc.da.report.eo.ReportContentEntity; import com.baomidou.mybatisplus.extension.service.IService; -import java.io.FileNotFoundException; import java.io.IOException; /** @@ -18,7 +17,6 @@ public interface IReportContentService extends IService { * 插入报告内容表 * * @param reportId 报告id - * @param fileId 文件id */ - void insertReportContent(String reportId, String fileId) throws IOException; + void insertReportContent(String reportId) throws IOException; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java index bd326c1..c77fbfd 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java @@ -1,19 +1,22 @@ package com.adc.da.report.service.impl; import com.adc.da.report.dao.mysql.FileDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.eo.FileEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.util.FileContentUtil; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import com.adc.da.util.utils.CollectionUtils; import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.adc.da.report.eo.ReportContentEntity; import com.adc.da.report.service.IReportContentService; import com.adc.da.report.dao.mysql.ReportContentDao; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,6 +25,9 @@ import javax.annotation.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * @author Caihaohan @@ -51,36 +57,50 @@ public class IReportContentServiceImpl extends ServiceImpl reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportId); + List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); + List fileIds = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(reportFiles)) { + fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); + } + StringBuilder content = new StringBuilder(); + for (String fileId : fileIds) { + //获取文件 + FileEntity fileEntity = fileDao.selectById(fileId); + String path = uploadFile + fileEntity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(fileEntity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(fileEntity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(fileEntity.getSavePath(), outputStream); + } + File file = new File(path); + //解析出内容 + content.append(FileContentUtil.readFileContent(file)); + + //将文件删除 + outputStream.close(); + FileUtil.deleteFile(path); } - File file = new File(path); - //解析出内容 - String content = FileContentUtil.readFileContent(file); //将内容存入 ReportContentEntity reportContent = query().eq("report_id", reportId).one(); if (reportContent == null) { - ReportContentEntity reportContentEntity = new ReportContentEntity(UUID.randomUUID10(), reportId, content); + ReportContentEntity reportContentEntity = new ReportContentEntity(UUID.randomUUID10(), reportId, content.toString()); save(reportContentEntity); } else { - reportContent.setReportContent(content); + reportContent.setReportContent(content.toString()); saveOrUpdate(reportContent); } - //将文件删除 - outputStream.close(); - FileUtil.deleteFile(path); } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index ee0a49c..a739bfe 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -177,8 +177,7 @@ public class IReportServiceImpl extends ServiceImpl } //插入报表内容表 try { - //TODO FILE - iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); + iReportContentService.insertReportContent(reportId); log.info("抽取报告内容"); } catch (IOException e) { log.error("获取报告内容失败", e); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index 9790b9b..68011c9 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -163,7 +163,7 @@ public class ITtReportManageActServiceImpl extends ServiceImpl Date: Thu, 25 May 2023 11:12:43 +0800 Subject: [PATCH 13/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/adc/da/report/eo/ReportEntity.java | 2 +- .../da/report/service/impl/IReportContentServiceImpl.java | 1 + .../com/adc/da/report/service/impl/IReportServiceImpl.java | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java index f444238..8dea718 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java @@ -111,5 +111,5 @@ public class ReportEntity { private List> labelList; @TableField(exist = false) - private List fileList; + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java index c77fbfd..3fde68d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java @@ -65,6 +65,7 @@ public class IReportContentServiceImpl extends ServiceImpl reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportId); + reportFileLambdaQueryWrapper.eq(ReportFile::getState, 2); List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); List fileIds = new ArrayList<>(); if (CollectionUtils.isNotEmpty(reportFiles)) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d7c8575..527fd78 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -154,11 +154,10 @@ public class IReportServiceImpl extends ServiceImpl //文件 reportFileDao.delByReportId(new ReportFile(reportId,2)); List reportFiles = new ArrayList<>(); - for (String s : reportEntity.getFileList()) { - ReportFile reportFile = new ReportFile(); + for (ReportFile reportFile : reportEntity.getFileList()) { reportFile.setId(UUID.randomUUID().replace("-","")); reportFile.setReportId(reportId); - reportFile.setFileId(s); +// reportFile.setFileId(s); reportFile.setState(2); reportFiles.add(reportFile); } From 8d3b39e9e3cadb7d425893ac178983fe19ed320c Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 14:37:48 +0800 Subject: [PATCH 14/17] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=B7=B2=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/dao/mysql/ReportFileDao.java | 4 ++++ .../mybatis/mapper/mysql/ReportFileMapper.xml | 12 +++++++++++ .../task/TodoTaskController.java | 21 +++++++++++++++---- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 571b189..13b42d8 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -4,6 +4,8 @@ import com.adc.da.report.eo.ReportFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface ReportFileDao extends BaseMapper { void delByReportId(@Param("pageVO") ReportFile reportFile); @@ -11,4 +13,6 @@ public interface ReportFileDao extends BaseMapper { void actEndDelReport(@Param("reportId")String reportId); void updateState(@Param("reportId")String dataId); + + List selectByReport(@Param("pageVO")ReportFile reportFile); } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml index 7632b59..03ad851 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -26,4 +26,16 @@ + diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java index 6a7cef1..41bbe1b 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java @@ -2,11 +2,9 @@ package com.adc.da.wkflow.business_activiti.task; import cn.hutool.core.util.StrUtil; import com.adc.da.login.util.UserUtils; -import com.adc.da.report.dao.mysql.PowerApplyActDao; -import com.adc.da.report.dao.mysql.ReportDao; -import com.adc.da.report.dao.mysql.TreeLabelDao; -import com.adc.da.report.dao.mysql.TtReportManageActDao; +import com.adc.da.report.dao.mysql.*; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.vo.PowerApplyActPageVO; import com.adc.da.sys.service.iservice.IUserEoService; @@ -87,6 +85,9 @@ public class TodoTaskController { @Autowired private TtReportManageActDao ttReportManageActDao; + @Autowired + private ReportFileDao reportFileDao; + @Autowired private ReportDao reportDao; @@ -619,6 +620,12 @@ public class TodoTaskController { }else { ttReportManageAct = ttReportManageActDao.selectByPrcId(pId); } + // 为空说明流程已经结束 + if (ttReportManageAct.getFileList().size() == 0){ + List reportFiles = + reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); + ttReportManageAct.setFileList(reportFiles); + } List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); ttReportManageAct.setLabelList(labelList); String string = JSONArray.toJSONString(ttReportManageAct); @@ -633,6 +640,12 @@ public class TodoTaskController { }else { ttReportManageAct = ttReportManageActDao.selectByPrcId(pId); } + // 为空说明流程已经结束 + if (ttReportManageAct.getFileList().size() == 0){ + List reportFiles = + reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); + ttReportManageAct.setFileList(reportFiles); + } List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); ttReportManageAct.setLabelList(labelList); String string = JSONArray.toJSONString(ttReportManageAct); From 04a3d4237a4fb811da9e6009ba9c926bf7dbc408 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 14:57:50 +0800 Subject: [PATCH 15/17] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=8A=BD=E5=8F=96?= =?UTF-8?q?=E7=A9=BA=E6=96=87=E4=BB=B6=E5=86=85=E5=AE=B9=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adc/da/report/util/FileContentUtil.java | 95 ++++++++++--------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java index 1ba8074..cff0fa3 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java @@ -5,11 +5,11 @@ import java.io.FileInputStream; import java.io.IOException; import com.adc.da.report.constant.ReportConstants; +import lombok.extern.slf4j.Slf4j; import org.apache.poi.hslf.usermodel.HSLFShape; import org.apache.poi.hslf.usermodel.HSLFSlide; import org.apache.poi.hslf.usermodel.HSLFTextShape; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xslf.usermodel.XMLSlideShow; @@ -22,7 +22,6 @@ import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.hslf.usermodel.HSLFSlideShow; -import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; @@ -31,6 +30,7 @@ import org.apache.pdfbox.text.PDFTextStripper; * * @author caihaohan */ +@Slf4j public class FileContentUtil { public static String readFileContent(File file) throws IOException { @@ -39,55 +39,58 @@ public class FileContentUtil { StringBuilder content = new StringBuilder(); FileInputStream fis = new FileInputStream(file); - - switch (fileExtension) { - case ReportConstants.FILE_EXTENSIONS_XLS: - HSSFWorkbook workbookXls = new HSSFWorkbook(fis); - content = new StringBuilder(readExcelContent(workbookXls)); - break; - case ReportConstants.FILE_EXTENSIONS_XLSX: - XSSFWorkbook workbookXlsx = new XSSFWorkbook(fis); - content = new StringBuilder(readExcelContent(workbookXlsx)); - break; - case ReportConstants.FILE_EXTENSIONS_DOC: - HWPFDocument documentDoc = new HWPFDocument(fis); - WordExtractor extractorDoc = new WordExtractor(documentDoc); - content = new StringBuilder(extractorDoc.getText()); - break; - case ReportConstants.FILE_EXTENSIONS_DOCX: - XWPFDocument documentDocx = new XWPFDocument(fis); - XWPFWordExtractor extractorDocx = new XWPFWordExtractor(documentDocx); - content = new StringBuilder(extractorDocx.getText()); - break; - case ReportConstants.FILE_EXTENSIONS_PPT: - HSLFSlideShow ppt = new HSLFSlideShow(fis); - for (HSLFSlide slide : ppt.getSlides()) { - for (HSLFShape shape : slide.getShapes()) { - if (shape instanceof HSLFTextShape) { - HSLFTextShape textShape = (HSLFTextShape) shape; - content.append(textShape.getText()).append("\n"); + try { + switch (fileExtension) { + case ReportConstants.FILE_EXTENSIONS_XLS: + HSSFWorkbook workbookXls = new HSSFWorkbook(fis); + content = new StringBuilder(readExcelContent(workbookXls)); + break; + case ReportConstants.FILE_EXTENSIONS_XLSX: + XSSFWorkbook workbookXlsx = new XSSFWorkbook(fis); + content = new StringBuilder(readExcelContent(workbookXlsx)); + break; + case ReportConstants.FILE_EXTENSIONS_DOC: + HWPFDocument documentDoc = new HWPFDocument(fis); + WordExtractor extractorDoc = new WordExtractor(documentDoc); + content = new StringBuilder(extractorDoc.getText()); + break; + case ReportConstants.FILE_EXTENSIONS_DOCX: + XWPFDocument documentDocx = new XWPFDocument(fis); + XWPFWordExtractor extractorDocx = new XWPFWordExtractor(documentDocx); + content = new StringBuilder(extractorDocx.getText()); + break; + case ReportConstants.FILE_EXTENSIONS_PPT: + HSLFSlideShow ppt = new HSLFSlideShow(fis); + for (HSLFSlide slide : ppt.getSlides()) { + for (HSLFShape shape : slide.getShapes()) { + if (shape instanceof HSLFTextShape) { + HSLFTextShape textShape = (HSLFTextShape) shape; + content.append(textShape.getText()).append("\n"); + } } } - } - break; - case ReportConstants.FILE_EXTENSIONS_PPTX: - XMLSlideShow pptx = new XMLSlideShow(fis); - for (XSLFSlide slide : pptx.getSlides()) { - for (XSLFShape shape : slide.getShapes()) { - if (shape instanceof XSLFTextShape) { - XSLFTextShape textShape = (XSLFTextShape) shape; - content.append(textShape.getText()).append("\n"); + break; + case ReportConstants.FILE_EXTENSIONS_PPTX: + XMLSlideShow pptx = new XMLSlideShow(fis); + for (XSLFSlide slide : pptx.getSlides()) { + for (XSLFShape shape : slide.getShapes()) { + if (shape instanceof XSLFTextShape) { + XSLFTextShape textShape = (XSLFTextShape) shape; + content.append(textShape.getText()).append("\n"); + } } } - } - break; - case ReportConstants.FILE_EXTENSIONS_PDF: - PDDocument document = PDDocument.load(fis); - PDFTextStripper stripper = new PDFTextStripper(); - content = new StringBuilder(stripper.getText(document)); - default: + break; + case ReportConstants.FILE_EXTENSIONS_PDF: + PDDocument document = PDDocument.load(fis); + PDFTextStripper stripper = new PDFTextStripper(); + content = new StringBuilder(stripper.getText(document)); + default: + } + } catch (Exception e) { + fis.close(); + log.info("文件内容抽取失败,原因可能是上传的文件为空文件"); } - fis.close(); return content.toString(); } From 5c886b5f02602c064a89a40dbcbaefaa4ea306e1 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 14:59:14 +0800 Subject: [PATCH 16/17] =?UTF-8?q?feat:=E6=96=B0=E7=89=88=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=A2=84=E8=A7=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/controller/ReportManageConroller.java | 11 ++++++----- .../com/adc/da/report/service/IReportService.java | 5 +++-- .../da/report/service/impl/IReportServiceImpl.java | 10 +++++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index ae62141..a13e4da 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -243,19 +243,20 @@ public class ReportManageConroller { /** * 获取报告预览 - * @param id + * @param reportId + * @param fileId * @return */ @ApiOperation("获取报告预览") - @GetMapping("/getReportHtml/{id}") - public ResponseMessage getReportHtml(@PathVariable("id") String id) { - String html = reportService.reportHtml(id); + @GetMapping("/getReportHtml") + public ResponseMessage getReportHtml(@RequestParam String reportId, @RequestParam String fileId) { + String html = reportService.reportHtml(reportId, fileId); Map map = new HashMap<>(); map.put("content", html); ReportLogBook reportLog = new ReportLogBook(); reportLog.setId(UUID.randomUUID().toString().replaceAll("-","")); - reportLog.setReportId(id); + reportLog.setReportId(reportId); reportLog.setType(1); reportLog.setUpdateTime(new Date()); reportLog.setUserId(UserUtils.getUserId()); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index 46ad7c7..54a41fb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -42,10 +42,11 @@ public interface IReportService { /** * 获取报告htmlString - * @param id + * @param reportId + * @param fileId * @return */ - String reportHtml(String id); + String reportHtml(String reportId, String fileId); IPage addReportPage(ReportQueryVo vo) throws Exception; diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 527fd78..255a4bb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -422,18 +422,18 @@ public class IReportServiceImpl extends ServiceImpl /** * 报告html * - * @param id + * @param reportId + * @param fileId * @return */ @Override - public String reportHtml(String id) { + public String reportHtml(String reportId, String fileId) { try { - ReportEntity entity = reportDao.selectById(id); - String key = entity.getId() + "-" + entity.getFileId(); + String key = reportId + fileId; String html = stringRedisTemplate.boundValueOps(key).get(); //没有的话就生成 if (StrUtil.isBlank(html)) { - html = createHtmlString(entity.getFileId()); + html = createHtmlString(fileId); log.info("执行完成html" + html); From 4f4650d3c1343611b05cb17024c5e4d9e7b146df Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 15:01:56 +0800 Subject: [PATCH 17/17] =?UTF-8?q?feat:=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8E=8B=E7=BC=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 201 +++++++++++------- .../com/adc/da/report/dao/mysql/FileDao.java | 3 + .../adc/da/report/service/IFileService.java | 14 ++ .../report/service/impl/IFileServiceImpl.java | 26 +++ .../com/adc/da/report/util/LocalFileUtil.java | 36 ++++ .../com/adc/da/report/util/WaterMarkUtil.java | 86 ++++---- .../mybatis/mapper/mysql/FileDao.xml | 20 ++ 7 files changed, 276 insertions(+), 110 deletions(-) create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index a13e4da..fe6358e 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -19,6 +19,7 @@ import com.adc.da.report.vo.ReportVo; import com.adc.da.util.exception.AdcDaBaseException; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; +import com.adc.da.util.utils.CollectionUtils; import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -39,11 +40,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.*; -import java.net.URISyntaxException; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.zip.ZipOutputStream; import static com.adc.da.report.constant.ReportConstants.FILE_EXTENSIONS_PDF; @@ -407,105 +408,157 @@ public class ReportManageConroller { } - -// /** -// * 下载文件 -// * @param response -// * @param fileId -// * @throws IOException -// */ -// @ApiOperation(value = "|下载文件") -// @GetMapping("/download") -// public void downloadPic(HttpServletResponse response, String fileId) throws IOException { -// -// try { -// FileEntity entity = fileService.getFile(fileId); -// String fileName = entity.getFileName(); -// String filename = URLEncoder.encode(fileName, "UTF-8"); -// response.setHeader("Content-Disposition", "attachment;filename=" + filename); -// response.setContentType("application/x-download"); -//// File file = new File(uploadFile, entity.getSavePath()); -// // 上传方式:阿里云:alioss 华为云:hwobs -// if ("hwobs".equals(uploadType)){ -// obsBootUtil.downFile(entity.getSavePath(), response); -// }else if ("alioss".equals(uploadType)){ -// ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); -// }else if ("local".equals(uploadType)){ -// localFileUtil.downFile(entity.getSavePath(), response); -// } -// if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { -// String text = "text"; -// PdfUtil.addWatermarkToPdf(response, text); -// } -// } catch (Exception ex) { -// log.info(ex.getMessage(),ex); -// } -// } - /** * 下载文件 * @param response - * @param fileId + * @param fileIds * @throws IOException */ @ApiOperation(value = "|下载文件") @GetMapping("/download") - public void downloadPic(HttpServletResponse response, String fileId,String repostId) throws IOException { + public void download(HttpServletResponse response, String[] fileIds, String reportId) throws IOException { + List fileIdList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(fileIds)) { + fileIdList = Arrays.asList(fileIds); + } - if (StrUtil.isNotBlank(repostId)) { + if (StrUtil.isBlank(reportId)) { + throw new AdcDaBaseException("缺少报告id"); + } + + if (StrUtil.isNotBlank(reportId)) { //校验权限 - if (!reportService.isAllowDownload(UserUtils.getUserId(), repostId)) { + if (!reportService.isAllowDownload(UserUtils.getUserId(), reportId)) { throw new AdcDaBaseException("无此报告下载权限"); } } - try { - FileEntity entity = fileService.getFile(fileId); - String fileName = entity.getFileName(); - String filename = URLEncoder.encode(fileName, "UTF-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + filename); - response.setContentType("application/x-download"); + response.setContentType("application/x-download"); + //待下载的文件id List + List downLoadFileIds; - //PDF文件需要加水印 - if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { - String path = uploadFile + entity.getSavePath(); - FileOutputStream outputStream = new FileOutputStream(path); - // 上传方式:阿里云:alioss 华为云:hwobs - if ("hwobs".equals(uploadType)) { - obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); - } else if ("alioss".equals(uploadType)) { - ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); - } else if ("local".equals(uploadType)) { - localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); - } - //给文件添加水印 - waterMarkUtil.addWatermarkToPdf(new FileInputStream(path), response); + //判断是从列表页面下载 还是预览页面下载 + if (CollectionUtils.isEmpty(fileIdList)) { + //列表点击下载按钮 + downLoadFileIds = fileService.getDownloadFileIds(reportId); + if (CollectionUtils.isEmpty(downLoadFileIds)) { + log.info("无法下载,原因可能是无可下载文件(xls/xlsx文件无法下载)"); + String zipFileName = "empty.zip"; // 压缩文件名 + try { + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName); - } else { - // 上传方式:阿里云:alioss 华为云:hwobs 本地:local - if ("hwobs".equals(uploadType)){ - obsBootUtil.downFile(entity.getSavePath(), response); - }else if ("alioss".equals(uploadType)){ - ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); - }else if ("local".equals(uploadType)){ - localFileUtil.downFile(entity.getSavePath(), response); + // 创建空的ZipOutputStream + ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + zipOutputStream.close(); + return; + } catch (IOException e) { + e.printStackTrace(); } } - - } catch (Exception ex) { - log.info(ex.getMessage(),ex); + } else { + //检测是否要下载Excel文件 + if (fileService.hasExcelFileId(fileIdList)) { + throw new AdcDaBaseException("不可以下载Excel文件"); + } + //预览点击下载按钮 + downLoadFileIds = fileIdList; } - if (StringUtils.isNotEmpty(repostId)){ + + //如果只下载一个文件,则不压缩 + if (downLoadFileIds.size() == 1) { + String fileId = downLoadFileIds.get(0); + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + // 获取编码后的文件名 + String encodedFileName = URLEncoder.encode(fileName, "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName); + + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //给文件添加水印 + waterMarkUtil.addWatermarkToPdfAndWriteToResponse(new FileInputStream(path), response); + outputStream.close(); + } else { + // 上传方式:阿里云:alioss 华为云:hwobs 本地:local + if ("hwobs".equals(uploadType)){ + obsBootUtil.downFile(entity.getSavePath(), response); + }else if ("alioss".equals(uploadType)){ + ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); + }else if ("local".equals(uploadType)){ + localFileUtil.downFile(entity.getSavePath(), response); + } + } + + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } else { + List filePaths = new ArrayList<>(); + String reportName = reportDao.selectById(reportId).getName() + ".zip"; + // 获取编码后的文件名 + String encodedFileName = URLEncoder.encode(reportName, "UTF-8"); + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); + + for (String fileId : downLoadFileIds) { + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + filePaths.add(path); + + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + waterMarkUtil.savePdfToFile(new FileInputStream(path), path); + } + outputStream.close(); + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } + //将文件压缩 写入Response + localFileUtil.compressFiles(filePaths, response); + } + + if (StringUtils.isNotEmpty(reportId)){ ReportLogBook reportLog = new ReportLogBook(); reportLog.setId(UUID.randomUUID().toString().replaceAll("-","")); - reportLog.setReportId(repostId); + reportLog.setReportId(reportId); reportLog.setType(2); reportLog.setUpdateTime(new Date()); reportLog.setUserId(UserUtils.getUserId()); reportLogBookDao.insert(reportLog); //报告日志管理 - ReportEntity reportEntity = reportDao.selectById(repostId); + ReportEntity reportEntity = reportDao.selectById(reportId); reportLog(reportEntity.getName(),"下载"); } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java index 74087c8..5a71440 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java @@ -3,9 +3,12 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.FileEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @Author doudxw * @Date 2021/6/28 15:19 */ public interface FileDao extends BaseMapper { + List getDownloadFileIds(String reportId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index 7c875de..b5e104e 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -28,5 +28,19 @@ public interface IFileService { List> batchUploadFile(MultipartFile[] files); + /** + * 判断传进来的fileIds里有没有Excel的fileId + * @param fileIds + * @return + */ + boolean hasExcelFileId(List fileIds); + + /** + * 根据报告id返回所有可以下载的文件id + * @param reportId + * @return + */ + List getDownloadFileIds(String reportId); + Map uploadFile(MultipartFile file); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index 4ad2e85..b78e80d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -1,11 +1,14 @@ package com.adc.da.report.service.impl; +import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.eo.FileEntity; import com.adc.da.report.service.IFileService; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import com.adc.da.util.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -175,4 +178,27 @@ public class IFileServiceImpl implements IFileService { this.addFile(entity); return resultMap; } + + @Override + public boolean hasExcelFileId(List fileIds) { + boolean hasExcelFileId = false; + LambdaQueryWrapper fileEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + fileEntityLambdaQueryWrapper.in(FileEntity::getFileId, fileIds); + List fileEntities = fileDao.selectList(fileEntityLambdaQueryWrapper); + if (CollectionUtils.isNotEmpty(fileEntities)) { + for (FileEntity fileEntity : fileEntities) { + if (ReportConstants.FILE_EXTENSIONS_XLS.equals(fileEntity.getFileType()) || + ReportConstants.FILE_EXTENSIONS_XLSX.equals(fileEntity.getFileType())) { + hasExcelFileId = true; + break; + } + } + } + return hasExcelFileId; + } + + @Override + public List getDownloadFileIds(String reportId) { + return fileDao.getDownloadFileIds(reportId); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java index 6204671..b4adc83 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java @@ -10,6 +10,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * @author Caihaohan @@ -24,6 +27,39 @@ public class LocalFileUtil { @Value("${localFilePath}") private String localFilePath; + public void compressFiles(List filePaths, HttpServletResponse response) { + try { + // 创建输出流 + OutputStream outputStream = response.getOutputStream(); + ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); + + byte[] buffer = new byte[1024]; + + for (String filePath : filePaths) { + File sourceFile = new File(filePath); + + ZipEntry zipEntry = new ZipEntry(sourceFile.getName()); + zipOutputStream.putNextEntry(zipEntry); + + FileInputStream fileInputStream = new FileInputStream(sourceFile); + + int len; + while ((len = fileInputStream.read(buffer)) > 0) { + zipOutputStream.write(buffer, 0, len); + } + + fileInputStream.close(); + zipOutputStream.closeEntry(); + } + + zipOutputStream.close(); + + System.out.println("文件成功压缩成ZIP格式并写入 HttpServletResponse!"); + } catch (IOException e) { + e.printStackTrace(); + } + } + public void saveFile(InputStream fileInputStream, String fileName) throws IOException { String path = localFilePath + fileName; FileOutputStream fileOutputStream = new FileOutputStream(path); diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java index 48350ae..72606e1 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java @@ -21,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.time.LocalDate; @@ -52,49 +53,62 @@ public class WaterMarkUtil { return configValue + " " + userName + " " + formattedDate; } - public void addWatermarkToPdf(FileInputStream inputStream, HttpServletResponse response) throws IOException { + public PDDocument addWatermarkToPdf(FileInputStream inputStream) throws IOException { String watermarkText = getWaterMarkConfig(); - // 加载PDF文档 - try (PDDocument document = PDDocument.load(inputStream)) { - // 设置水印字体、字体大小、颜色和透明度 - ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf"); - PDType0Font font = PDType0Font.load(document, fontResource.getInputStream()); - float fontSize = 13.0f; - Color color = new Color(100, 100, 100, 0); - PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); - graphicsState.setNonStrokingAlphaConstant(0.4f); - graphicsState.setStrokingAlphaConstant(0.4f); + PDDocument document = PDDocument.load(inputStream); - // 遍历每一页并添加水印 - for (PDPage page : document.getPages()) { - // 获取页面尺寸以计算水印位置 - PDRectangle pageSize = page.getMediaBox(); - float xStep = pageSize.getWidth() / 4; - float yStep = pageSize.getHeight() / 4; - float rotationInRadians = (float) Math.toRadians(20); + // 设置水印字体、字体大小、颜色和透明度 + ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf"); + PDType0Font font = PDType0Font.load(document, fontResource.getInputStream()); + float fontSize = 13.0f; + Color color = new Color(100, 100, 100, 0); + PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); + graphicsState.setNonStrokingAlphaConstant(0.4f); + graphicsState.setStrokingAlphaConstant(0.4f); - for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageSize.getWidth(); xPosition += xStep) { - for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageSize.getHeight(); yPosition += yStep) { - // 创建内容流并设置图形状态参数 - try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) { - contentStream.setGraphicsStateParameters(graphicsState); - contentStream.setFont(font, fontSize); - contentStream.setNonStrokingColor(color); - contentStream.beginText(); - contentStream.setRenderingMode(RenderingMode.FILL); - // 设置水印文本的旋转和位置 - contentStream.setTextMatrix(Matrix.getRotateInstance(rotationInRadians, xPosition, yPosition)); - contentStream.showText(watermarkText); - contentStream.endText(); - } + // 遍历每一页并添加水印 + for (PDPage page : document.getPages()) { + // 获取页面尺寸以计算水印位置 + PDRectangle pageSize = page.getMediaBox(); + float xStep = pageSize.getWidth() / 4; + float yStep = pageSize.getHeight() / 4; + float rotationInRadians = (float) Math.toRadians(20); + + for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageSize.getWidth(); xPosition += xStep) { + for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageSize.getHeight(); yPosition += yStep) { + // 创建内容流并设置图形状态参数 + try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) { + contentStream.setGraphicsStateParameters(graphicsState); + contentStream.setFont(font, fontSize); + contentStream.setNonStrokingColor(color); + contentStream.beginText(); + contentStream.setRenderingMode(RenderingMode.FILL); + // 设置水印文本的旋转和位置 + contentStream.setTextMatrix(Matrix.getRotateInstance(rotationInRadians, xPosition, yPosition)); + contentStream.showText(watermarkText); + contentStream.endText(); } } } + } + return document; + } - // 将处理后的PDF写入HTTP响应 - try (OutputStream outputStream = response.getOutputStream()) { - document.save(outputStream); - } + + public void savePdfToFile(FileInputStream inputStream, String outputPath) throws IOException { + PDDocument pdDocument = addWatermarkToPdf(inputStream); + try (FileOutputStream outputStream = new FileOutputStream(outputPath)) { + pdDocument.save(outputStream); } } + + + public void addWatermarkToPdfAndWriteToResponse(FileInputStream inputStream, HttpServletResponse response) throws IOException { + PDDocument document = addWatermarkToPdf(inputStream); + try (OutputStream outputStream = response.getOutputStream()) { + document.save(outputStream); + } + document.close(); + } + } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml new file mode 100644 index 0000000..30a81a8 --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml @@ -0,0 +1,20 @@ + + + + + +