Browse Source

无效证据历史

lwhhszx 2 years ago
parent
commit
88ea9b4fa2

+ 6 - 0
PAS/pom.xml

@@ -192,6 +192,12 @@
             <artifactId>joda-time</artifactId>
             <version>2.9.9</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4-runtime</artifactId>
+            <version>4.12.0</version>
+        </dependency>
     </dependencies>
 
 

+ 57 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/AsInvalidReasonHistoryDTO.java

@@ -0,0 +1,57 @@
+package cn.cslg.pas.common.model.dto;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import cn.cslg.pas.common.model.vo.SystemFile;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 无效应对报告历史
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-08-14
+ */
+
+/*数据库中的表对应的类
+ */
+ @Data
+public class AsInvalidReasonHistoryDTO {
+  private Integer id;
+   private String patentNo;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效专利
+     */
+
+    private String invalidedPatent;
+
+    /**
+     *无效时间
+     */
+
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+
+    private String invalidReason;
+
+    /**
+     * 是否审核员通过
+     */
+    private Integer ifApproved;
+
+ private List<SystemFile> files;
+
+}

+ 23 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/FMSDeleteFileDTO.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 调用FMS系统删除文件接口
+ * @Author xiexiang
+ * @Date 2023/8/14
+ */
+@Data
+public class FMSDeleteFileDTO {
+    /**
+     * 需删除的ids
+     */
+    private List<Integer> ids;
+
+    /**
+     * 删除类型
+     */
+    private Integer type;
+}

+ 32 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/SearchHistoryDTO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 无效应对报告历史
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-08-14
+ */
+
+/*数据库中的表对应的类
+ */
+ @Data
+public class SearchHistoryDTO  {
+ private String patentNo;
+ /**
+  * 每页条数
+  */
+ private Long size;
+
+ /**
+  * 当前页数
+  */
+ private Long current;
+
+
+
+
+}

+ 55 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AsInvalidReasonHistoryVO.java

@@ -0,0 +1,55 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 无效应对报告历史
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-08-14
+ */
+
+/*数据库中的表对应的类
+ */
+ @Data
+public class AsInvalidReasonHistoryVO {
+  private  Integer id;
+   private String patentNo;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效专利
+     */
+
+    private String invalidedPatent;
+
+    /**
+     *无效时间
+     */
+
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+
+    private String invalidReason;
+
+    /**
+     * 是否审核员通过
+     */
+    private Integer ifApproved;
+
+     private Date createTime;
+
+private List<SystemFile> files;
+
+}

+ 63 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/SystemFile.java

@@ -0,0 +1,63 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class SystemFile {
+    private Integer id;
+    /**
+     * 唯一标识id
+     */
+    private String GUID;
+
+    /**
+     * 存储位置
+     */
+    private Integer pType;
+
+    /**
+     * 文件路径
+     */
+    private String filePath;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 文件名称
+     */
+    private String suffix;
+    /**
+     * 原始名称
+     */
+    private String originalName;
+
+    /**
+     * 文件大小
+     */
+    private String fileLength;
+
+    /**
+     * 创建人id
+     */
+    private Integer createId;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 是否删除
+     */
+    private Integer isDelete;
+
+}

+ 70 - 0
PAS/src/main/java/cn/cslg/pas/controller/AsInvalidReasonHistoryController.java

@@ -0,0 +1,70 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.model.dto.SearchHistoryDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.AsInvalidReasonHistoryService;
+import cn.cslg.pas.service.ProjectFieldService;
+import cn.cslg.pas.service.ProjectFieldTreeService;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+@Tag(name = "无效证据历史")
+@RestController
+@RequestMapping(Constants.API_VERSION_V2 + "/invalidReasonHistory")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AsInvalidReasonHistoryController {
+private final AsInvalidReasonHistoryService asInvalidReasonHistoryService;
+    @PostMapping("/addOrUpdateHistory")
+    @Operation(summary = "添加无效证据历史")
+    public String addOrUpdateHistory(String history, List<MultipartFile> files) throws IOException {
+        if (history != null) {
+            AsInvalidReasonHistoryDTO historyDTO = JSONObject.parseObject(history, AsInvalidReasonHistoryDTO.class);
+            //新建报告并返回报告Id
+            return  asInvalidReasonHistoryService.addOrUpdateHistory(historyDTO, files);
+
+        } else {
+            return Response.error("网络异常");
+        }
+
+    }
+
+    @PostMapping ("/deleteHistory")
+    @Operation(summary = "删除无效证据历史")
+    public String deleteHistory(@RequestBody List<Integer> ids) throws IOException {
+            //新建报告并返回报告Id
+            return  asInvalidReasonHistoryService.deleteHistory(ids);
+    }
+
+    @PostMapping("/queryHistory")
+    @Operation(summary = "查询无效证据历史")
+    public String queryHistory(@RequestBody  SearchHistoryDTO searchHistoryDTO) throws IOException {
+            //新建报告并返回报告Id
+            return  asInvalidReasonHistoryService.queryHistory(searchHistoryDTO);
+
+    }
+
+    @PostMapping("/updateHistory")
+    @Operation(summary = "查询无效证据历史")
+    public String updateHistory(String history, List<MultipartFile> files) throws IOException {
+        if (history != null) {
+            AsInvalidReasonHistoryDTO historyDTO = JSONObject.parseObject(history, AsInvalidReasonHistoryDTO.class);
+            //新建报告并返回报告Id
+            return  asInvalidReasonHistoryService.updateHistory(historyDTO, files);
+
+        } else {
+            return Response.error("网络异常");
+        }
+
+    }
+}

+ 69 - 0
PAS/src/main/java/cn/cslg/pas/domain/AsInvalidReasonHistory.java

@@ -0,0 +1,69 @@
+package cn.cslg.pas.domain;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 无效应对报告历史
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-08-14
+ */
+@Data
+@TableName("as_invalid_reason_history")
+/*数据库中的表对应的类
+ */
+public class AsInvalidReasonHistory extends BaseEntity<AsInvalidReasonHistory> {
+    @TableField("patent_no")
+    private String patentNo;
+    /**
+     * 无效案号
+     */
+    @TableField("invalid_case_num")
+    private String invalidCaseNum;
+
+    /**
+     * 无效专利
+     */
+    @TableField("invalided_patent")
+    private String invalidedPatent;
+
+    /**
+     *无效时间
+     */
+    @TableField("invalid_time")
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+
+    @TableField("invalid_reason")
+    private String invalidReason;
+
+    /**
+     * 是否审核员通过
+     */
+    @TableField("if_approved")
+    private Integer ifApproved;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("create_id")
+    private Integer createId;
+
+}

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/domain/asso/AssoInvalidReasonHistoryFile.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.domain.asso;
+
+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.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 事件和专题库关联表
+ *
+ * @Author chenyu
+ * @Date 2023/4/3
+ */
+@TableName(value = "asso_invalid_reason_history_file")
+@Accessors(chain = true)
+@Data
+public class AssoInvalidReasonHistoryFile implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 无效理由id
+     */
+    @TableField(value = "history_id")
+    private Integer historyId;
+    /**
+     * 文件id
+     */
+    @TableField(value = "file_id")
+    private Integer fileId;
+
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/mapper/AsInvalidReasonHistoryMapper.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.AdminUser;
+import cn.cslg.pas.domain.AsInvalidReasonHistory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 无效证据历史表 Mapper 接口
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-08-14
+ */
+public interface AsInvalidReasonHistoryMapper extends BaseMapper<AsInvalidReasonHistory> {
+
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/mapper/asso/AssoInvalidReasonHistoryFileMapper.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.mapper.asso;
+
+
+import cn.cslg.pas.domain.asso.AssoInvalidReasonHistoryFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 无效证据历史文件关联 Mapper 接口
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2023-8-14
+ */
+public interface AssoInvalidReasonHistoryFileMapper extends BaseMapper<AssoInvalidReasonHistoryFile> {
+
+}

+ 214 - 0
PAS/src/main/java/cn/cslg/pas/service/AsInvalidReasonHistoryService.java

@@ -0,0 +1,214 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.dto.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.model.dto.FMSDeleteFileDTO;
+import cn.cslg.pas.common.model.dto.PatentDTO;
+import cn.cslg.pas.common.model.dto.SearchHistoryDTO;
+import cn.cslg.pas.common.model.vo.AsInvalidReasonHistoryVO;
+import cn.cslg.pas.common.model.vo.SystemFile;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
+import cn.cslg.pas.domain.AsInvalidReasonHistory;
+import cn.cslg.pas.domain.WebTask;
+import cn.cslg.pas.domain.asso.AssoInvalidReasonHistoryFile;
+import cn.cslg.pas.mapper.AsInvalidReasonHistoryMapper;
+import cn.cslg.pas.mapper.WebTaskMapper;
+import cn.cslg.pas.service.asso.AssoInvalidReasonHistoryFileService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author 李仁杰
+ * @description
+ * @createDate 2023-08-14 18:51:06
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AsInvalidReasonHistoryService extends ServiceImpl<AsInvalidReasonHistoryMapper, AsInvalidReasonHistory> {
+    private final FileManagerService fileManagerService;
+    private final AssoInvalidReasonHistoryFileService assoInvalidReasonHistoryFileService;
+    private final LoginUtils loginUtils;
+
+    /**
+     * 添加无效证据历史
+     *
+     * @param historyDTO
+     * @param files
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String addOrUpdateHistory(AsInvalidReasonHistoryDTO historyDTO, List<MultipartFile> files) throws IOException {
+        //添加或更新无效证据历史
+        AsInvalidReasonHistory history = new AsInvalidReasonHistory();
+        BeanUtils.copyProperties(historyDTO, history);
+        if (historyDTO.getId() == null) {
+            history.setCreateId(loginUtils.getId());
+        }
+        history.insertOrUpdate();
+        //当是更新时
+        if (historyDTO.getId() != null) {
+            //获得不需要删除的文件id
+            List<Integer> notInIds = new ArrayList<>();
+            if (historyDTO.getFiles() != null && historyDTO.getFiles().size() > 0) {
+                notInIds = historyDTO.getFiles().stream().map(SystemFile::getId).collect(Collectors.toList());
+            }
+            //根据无效历史id和ids删除历史和文件关联
+            LambdaQueryWrapper<AssoInvalidReasonHistoryFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoInvalidReasonHistoryFile::getHistoryId, historyDTO.getId());
+            if (notInIds.size() != 0) {
+                queryWrapper.notIn(AssoInvalidReasonHistoryFile::getFileId, notInIds);
+            }
+            //删除远程文件
+            List<AssoInvalidReasonHistoryFile> assoFiles = assoInvalidReasonHistoryFileService.list(queryWrapper);
+            List<Integer> deleteIds = assoFiles.stream().map(AssoInvalidReasonHistoryFile::getFileId).collect(Collectors.toList());
+           if(deleteIds.size()!=0){
+               FMSDeleteFileDTO fmsDeleteFileDTO = new FMSDeleteFileDTO();
+               fmsDeleteFileDTO.setIds(deleteIds);
+               fmsDeleteFileDTO.setType(2);
+               fileManagerService.deleteFileFromFMS(fmsDeleteFileDTO);
+           }
+            assoInvalidReasonHistoryFileService.remove(queryWrapper);
+        }
+        //上传附件到文件系统
+        if (files != null && files.size() > 0) {
+            String res = fileManagerService.uploadFile(files, 1);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            List<Integer> fileIds = JSONArray.parseArray(jsonObject.get("data").toString(), Integer.class);
+            //保存和对象关联
+            List<AssoInvalidReasonHistoryFile> assoFiles = new ArrayList<>();
+            fileIds.forEach(item -> {
+                AssoInvalidReasonHistoryFile assoFile = new AssoInvalidReasonHistoryFile();
+                assoFile.setFileId(item);
+                assoFile.setHistoryId(history.getId());
+                assoFiles.add(assoFile);
+            });
+            //批量保存
+            assoInvalidReasonHistoryFileService.saveBatch(assoFiles);
+        }
+        return Response.success("保存成功");
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public String deleteHistory(List<Integer> ids) throws IOException {
+        //校验ids
+        if (ids == null || ids.size() == 0) {
+            return Response.error("请至少选择一个无效历史进行删除");
+        }
+        //根据ids从文件和无效历史关联表里获得文件id
+        LambdaQueryWrapper<AssoInvalidReasonHistoryFile> fileWrapper = new LambdaQueryWrapper<>();
+        fileWrapper.in(AssoInvalidReasonHistoryFile::getHistoryId, ids);
+        List<AssoInvalidReasonHistoryFile> files = assoInvalidReasonHistoryFileService.list(fileWrapper);
+        //提取出文件id
+        List<Integer> fileIds = files.stream().map(AssoInvalidReasonHistoryFile::getFileId).collect(Collectors.toList());
+        //根据文件id删除文件
+        FMSDeleteFileDTO fmsDeleteFileDTO = new FMSDeleteFileDTO();
+        fmsDeleteFileDTO.setIds(fileIds);
+        fmsDeleteFileDTO.setType(2);
+        fileManagerService.deleteFileFromFMS(fmsDeleteFileDTO);
+        //删除文件无效历史关联
+        assoInvalidReasonHistoryFileService.remove(fileWrapper);
+        //删除无效历史
+        this.removeByIds(ids);
+        return Response.success();
+    }
+
+    //查询无效历史
+    @Transactional(rollbackFor = Exception.class)
+    public String queryHistory(SearchHistoryDTO searchHistoryDTO) throws IOException {
+        IPage<AsInvalidReasonHistoryVO> pageList = new Page<>();
+        //校验专利号
+        if (searchHistoryDTO == null || searchHistoryDTO.getPatentNo() == null) {
+            return Response.error("无专利号");
+        }
+        String patentNo = searchHistoryDTO.getPatentNo();
+        Long size = searchHistoryDTO.getSize();
+        Long current = searchHistoryDTO.getCurrent();
+        //根据ids从文件和无效历史关联表里获得文件id
+        LambdaQueryWrapper<AsInvalidReasonHistory> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AsInvalidReasonHistory::getPatentNo, patentNo);
+        wrapper.orderByDesc(AsInvalidReasonHistory::getCreateTime);
+        //分页
+        List<AsInvalidReasonHistory> histories = this.page(new Page<>(current, size), wrapper).getRecords();
+        List<AsInvalidReasonHistoryVO> vos = this.historyData(histories);
+        Long count = this.count(wrapper);
+        pageList.setRecords(vos);
+        pageList.setCurrent(current);
+        pageList.setTotal(count);
+        pageList.setSize(size);
+        return Response.success(pageList);
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public String updateHistory(AsInvalidReasonHistoryDTO historyDTO, List<MultipartFile> files) throws IOException {
+
+        return Response.success();
+    }
+
+    /**
+     * 装载数据
+     *
+     * @param histories
+     * @return
+     */
+    public List<AsInvalidReasonHistoryVO> historyData(List<AsInvalidReasonHistory> histories) throws IOException {
+        List<AsInvalidReasonHistoryVO> vos = new ArrayList<>();
+        if (histories == null || histories.size() == 0) {
+            return vos;
+        }
+        //查询出所有的无效证据id
+        List<Integer> ids = histories.stream().map(AsInvalidReasonHistory::getId).collect(Collectors.toList());
+        //根据无效历史id查询关联的文件id
+        LambdaQueryWrapper<AssoInvalidReasonHistoryFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(AssoInvalidReasonHistoryFile::getHistoryId, ids);
+        List<AssoInvalidReasonHistoryFile> files = assoInvalidReasonHistoryFileService.list(wrapper);
+        List<Integer> fileIds = files.stream().map(AssoInvalidReasonHistoryFile::getFileId).collect(Collectors.toList());
+        List<SystemFile> systemFiles = new ArrayList<>();
+        if (fileIds.size() > 0) {
+            String res = fileManagerService.getSystemFileFromFMS(fileIds);
+            systemFiles = JSONArray.parseArray(res, SystemFile.class);
+        }
+        //遍历装载
+        for (AsInvalidReasonHistory history : histories) {
+            AsInvalidReasonHistoryVO vo = new AsInvalidReasonHistoryVO();
+            BeanUtils.copyProperties(history, vo);
+//获得当前无效证据的文件id列表
+            List<Integer> partFileIds = files.stream().filter(item -> item.getHistoryId().equals(history.getId())).map(AssoInvalidReasonHistoryFile::getFileId).collect(Collectors.toList());
+            //装载附件列表
+            List<SystemFile> partSystemFiles = new ArrayList<>();
+            if (partFileIds.size() > 0) {
+                partSystemFiles = systemFiles.stream().filter(item -> partFileIds.contains(item.getId())).collect(Collectors.toList());
+                partSystemFiles.forEach(item->{
+                    String[] suffix =item.getFileName().split("\\.");
+                    if(suffix.length>0) {
+                        item.setSuffix(suffix[suffix.length - 1]);
+                    }
+
+
+                });
+                vo.setFiles(partSystemFiles);
+            }
+            vos.add(vo);
+        }
+        return vos;
+    }
+}
+
+
+

+ 110 - 0
PAS/src/main/java/cn/cslg/pas/service/FileManagerService.java

@@ -0,0 +1,110 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.dto.FMSDeleteFileDTO;
+import com.google.gson.Gson;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import static cn.hutool.core.io.FileUtil.getMimeType;
+
+/**
+ * Okhttp调用FMS上传文件接口
+ * @Author xiexiang
+ * @Date 2023/8/10
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class FileManagerService {
+    @Value("${authorUrl}")
+    private String PCSUrl;
+    @Value("${OPSUrl}")
+    private String OPSUrl;
+    @Value("${PASUrl}")
+    private String PASUrl;
+    @Value("${RMSUrl}")
+    private String RMSUrl;
+    @Value("${FMSUrl}")
+    private String FMSUrl;
+
+    public String uploadFile(List<MultipartFile> multipartFiles, Integer sourceId) throws IOException {
+        List<File> files = new ArrayList<>();
+        for(MultipartFile multipartFile:multipartFiles){
+            File file = new File(multipartFile.getOriginalFilename());
+            FileCopyUtils.copy(multipartFile.getBytes(),file);
+            files.add(file);
+        }
+        MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        for(File file:files){
+            //根据文件名获取文件的MIME类型
+            String mimeType = getMimeType(file.getPath());
+            multipartBodyBuilder.addFormDataPart("files",file.getName(),RequestBody.create(MediaType.parse(mimeType), file));
+        }
+        RequestBody requestBody =multipartBodyBuilder
+                .addFormDataPart("sourceId", String.valueOf(sourceId))
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(FMSUrl + "/fileManager/uploadSystemFile")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 调用文件系统查询接口
+     * @return
+     * @throws IOException
+     */
+    public String getSystemFileFromFMS(List<Integer> fileIds) throws IOException {
+        String param = new Gson().toJson(fileIds);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(FMSUrl + "/fileManager/getFileData")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 调用文件系统删除接口
+     * @return
+     * @throws IOException
+     */
+    public String deleteFileFromFMS(FMSDeleteFileDTO fmsDeleteFileDTO) throws IOException {
+        String param = new Gson().toJson(fmsDeleteFileDTO);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(FMSUrl + "/fileManager/deleteSystemFile")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+}

+ 26 - 0
PAS/src/main/java/cn/cslg/pas/service/asso/AssoInvalidReasonHistoryFileService.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.service.asso;
+
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.domain.WebTask;
+import cn.cslg.pas.domain.asso.AssoInvalidReasonHistoryFile;
+import cn.cslg.pas.mapper.WebTaskMapper;
+import cn.cslg.pas.mapper.asso.AssoInvalidReasonHistoryFileMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 李仁杰
+* @description
+* @createDate 2023-08-14 18:51:06
+*/
+@Service
+public class AssoInvalidReasonHistoryFileService extends ServiceImpl<AssoInvalidReasonHistoryFileMapper,AssoInvalidReasonHistoryFile>
+
+   {
+
+}
+
+
+
+