guozx 3 жил өмнө
parent
commit
92e87d4e39

+ 147 - 0
application-facade/src/main/java/com/factory/controller/web/FileBlobController.java

@@ -0,0 +1,147 @@
+package com.factory.controller.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.pm.OnsiteTitleBlob;
+import com.factory.web.service.FileService;
+import com.factory.web.service.impl.DownLoadParam;
+import com.factory.web.service.impl.FileEntry;
+import com.factory.web.service.impl.FileResultInfo;
+import com.factory.web.service.impl.FileServiceImpl;
+import com.factory.web.service.pm.OnsiteTitleBlobService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+
+@Api(tags = "本特勒 - 附件上传下载")
+@RestController
+@RequestMapping("/benteler/fileupload")
+public class FileBlobController {
+
+    @Autowired
+    private FileService fileService;
+    @Autowired
+    private OnsiteTitleBlobService blobService;
+
+
+    @PostMapping("/addFile")
+    @ApiOperation(value = "上传附件-附件参数名称file")
+    public ResponseBean addFile(@RequestParam("file") MultipartFile file) throws IOException {
+        FileEntry fileEntry = FileEntry.builder().file(file.getBytes())
+                .fileNm(file.getOriginalFilename()).build();
+        fileService.save(fileEntry);
+        FileResultInfo result = FileResultInfo.builder().id(fileEntry.getId()).fileNm(fileEntry.getFileNm()).build();
+        return ResponseBeanBuilder.ok(result);
+    }
+
+
+    @GetMapping("/downloadFile")
+    @ApiOperation(value = "按id下载附件测试")
+    public void downFile(@RequestParam("id") long id, HttpServletResponse response) throws IOException {
+        download(id, response);
+    }
+
+    @GetMapping("/downloadFileForPlan")
+    @ApiOperation(value = "按计划id下载附件纠错")
+    public void downloadFileForPlan(DownLoadParam param, HttpServletResponse response) throws IOException {
+
+        long id = -1;
+        if (param.getType() == 2) {
+            OnsiteTitleBlob blob = blobService.queryBlobForPlanId(param.getPlanId());
+            if (blob != null) {
+                blob.setTitleContentStr(new String(blob.getTitleContent(), StandardCharsets.UTF_8));
+                JSONObject jsonObject = JSONObject.parseObject(blob.getTitleContentStr());
+                String uploadAttachmentId = jsonObject.getString("uploadAttachmentId");
+                if (uploadAttachmentId != null) {
+                    id = Long.parseLong(uploadAttachmentId);
+                }
+            }
+        } else {
+
+        }
+
+        download(id, response);
+    }
+
+    private void download(long id, HttpServletResponse response) {
+        FileEntry file = fileService.getById(id);
+        byte[] buff = null;
+        if (file != null) {
+            String[] suffix = file.getFileNm().split("\\.");
+            String fileType = suffix[suffix.length - 1];
+            if ("jpg,jepg,jpeg,gif,png".contains(fileType)) {//图片类型
+                response.setContentType("image/" + fileType);
+            } else if ("pdf".contains(fileType)) {//pdf类型
+                response.setContentType("application/pdf");
+            } else if ("xls".contains(fileType)) {//pdf类型
+                response.setContentType("application/vnd.ms-excel");
+            } else if ("xlsx".contains(fileType)) {//pdf类型
+                response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            } else {//自动判断下载文件类型
+                response.setContentType("application/octet-stream");
+                String fileName = System.currentTimeMillis() + "." + suffix[suffix.length - 1];
+                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
+            }
+            buff = file.getFile();
+        } else {
+            response.setContentType("text/plain");
+            buff = new String("no file").getBytes(StandardCharsets.UTF_8);
+        }
+        OutputStream outputStream = null;
+        try {
+            outputStream = response.getOutputStream();
+            outputStream.write(buff);
+            outputStream.flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @GetMapping("/addIniPlan")
+    public void addIniPlan(HttpServletRequest request) {
+
+        String data = "\n" +
+                "{\n" +
+                "    \"uploadAttachmentId\" : 17,\n" +
+                "    \"test\":11111111\n" +
+                "}";
+        OnsiteTitleBlob testEntry = OnsiteTitleBlob.builder().bentelerPlanId(Long.parseLong("1"))
+                .titleContent(data.getBytes(StandardCharsets.UTF_8)).build();
+        blobService.save(testEntry);
+        System.out.println("11111111111111111111111111111111111111111");
+    }
+
+//    @GetMapping("/getIniPlan")
+//    public void getIniPlan(HttpServletRequest request) {
+//        Long versionId = Long.valueOf(2);
+//        FileEntry pp= testService.getById(versionId);
+//        pp.setTitleContentStr(new String(pp.getTitleContent(),StandardCharsets.UTF_8));
+//        System.out.println(pp.getTitleContentStr());
+//    }
+
+
+}

+ 0 - 43
application-facade/src/main/java/com/factory/controller/web/TestBlobController.java

@@ -1,43 +0,0 @@
-package com.factory.controller.web;
-
-import com.factory.web.service.impl.TestEntry;
-import com.factory.web.service.impl.TestServiceImpl;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import java.nio.charset.StandardCharsets;
-
-
-@Api(tags = "本特勒 - blob测试")
-@RestController
-@RequestMapping("/benteler/testblob")
-public class TestBlobController {
-
-    @Autowired
-    private TestServiceImpl testService;
-
-
-    @GetMapping("/addIniPlan")
-    @ApiOperation(value = "testItem")
-    public void addIniPlan(HttpServletRequest request) {
-       TestEntry testEntry=TestEntry.builder().bentelerPlanId(Long.parseLong("1"))
-               .titleContent("test.asgajsd".getBytes(StandardCharsets.UTF_8)).build();
-        testService.save(testEntry);
-        System.out.println("11111111111111111111111111111111111111111");
-    }
-
-    @GetMapping("/getIniPlan")
-    public void getIniPlan(HttpServletRequest request) {
-        Long versionId = Long.valueOf(2);
-        TestEntry pp= testService.getById(versionId);
-        pp.setTitleContentStr(new String(pp.getTitleContent(),StandardCharsets.UTF_8));
-        System.out.println(pp.getTitleContentStr());
-    }
-
-
-}

+ 12 - 0
application-facade/src/main/java/com/factory/web/mapper/FileMapper.java

@@ -0,0 +1,12 @@
+package com.factory.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.factory.web.service.impl.FileEntry;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface FileMapper extends BaseMapper<FileEntry> {
+
+}
+
+

+ 0 - 25
application-facade/src/main/java/com/factory/web/mapper/test/TestMapper.java

@@ -1,25 +0,0 @@
-package com.factory.web.mapper.test;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.factory.web.service.impl.TestEntry;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Result;
-import org.apache.ibatis.annotations.Results;
-
-import java.io.Serializable;
-
-@Mapper
-
-public interface TestMapper extends BaseMapper<TestEntry> {
-
-//    @Results({
-//            @Result(id = true,column = "id",property = "id"),
-//            @Result(column = "benteler_plan_id",property = "benteler_plan_id"),
-//            @Result(column = "title_content",property = "title_content_str")
-//    })
-//    int insert(T entity);
-
-//    TestEntry selectById(Serializable id);
-}
-
-

+ 7 - 0
application-facade/src/main/java/com/factory/web/service/FileService.java

@@ -0,0 +1,7 @@
+package com.factory.web.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.factory.web.service.impl.FileEntry;
+
+public interface FileService extends IService<FileEntry> {
+}

+ 26 - 0
application-facade/src/main/java/com/factory/web/service/impl/DownLoadParam.java

@@ -0,0 +1,26 @@
+package com.factory.web.service.impl;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("")
+public class DownLoadParam implements Serializable {
+
+    @ApiModelProperty(value = "0 输入对应计划id",example = "计划ID")
+    private Long planId;
+    @ApiModelProperty(value = "1 首件 2 纠错",example = "类型")
+    private int type;
+}

+ 10 - 7
application-facade/src/main/java/com/factory/web/service/impl/TestEntry.java → application-facade/src/main/java/com/factory/web/service/impl/FileEntry.java

@@ -11,19 +11,22 @@ import lombok.NoArgsConstructor;
 import org.apache.ibatis.annotations.Result;
 import org.apache.ibatis.annotations.Results;
 
+import java.io.Serializable;
+
 @Data
-@TableName("onsite_title_blob")
+@TableName("upload_file_blob")
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class TestEntry {
+public class FileEntry implements Serializable {
 
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    private Long bentelerPlanId;
+    private String fileNm;
+
+    private byte[] file;
 
-    private byte[] titleContent;
-    @TableField(exist = false)
-    private String titleContentStr;
-}
+//    @TableField(exist = false)
+//    private String titleContentStr;
+}

+ 25 - 0
application-facade/src/main/java/com/factory/web/service/impl/FileResultInfo.java

@@ -0,0 +1,25 @@
+package com.factory.web.service.impl;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("")
+public class FileResultInfo implements Serializable {
+    @ApiModelProperty(value = "0",example = "附件存储id")
+    private Long id;
+    @ApiModelProperty(value = "1.txt",example = "附件名称")
+    private String fileNm;
+}

+ 3 - 2
application-facade/src/main/java/com/factory/web/service/impl/TestServiceImpl.java → application-facade/src/main/java/com/factory/web/service/impl/FileServiceImpl.java

@@ -1,11 +1,12 @@
 package com.factory.web.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.factory.web.mapper.test.TestMapper;
+import com.factory.web.mapper.FileMapper;
+import com.factory.web.service.FileService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TestServiceImpl extends ServiceImpl<TestMapper,TestEntry> {
+public class FileServiceImpl extends ServiceImpl<FileMapper, FileEntry>  implements FileService {
 }

+ 14 - 2
application-facade/src/main/java/com/factory/web/service/impl/pm/OnsiteTitleBlobServiceImpl.java

@@ -1,5 +1,6 @@
 package com.factory.web.service.impl.pm;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -8,6 +9,8 @@ import com.factory.web.entity.pm.OnsiteTitleBlob;
 import com.factory.web.mapper.pm.OnsiteTitleBlobMapper;
 import com.factory.web.service.pm.OnsiteTitleBlobService;
 
+import java.util.List;
+
 
 /**
  * 表头信息
@@ -18,5 +21,14 @@ import com.factory.web.service.pm.OnsiteTitleBlobService;
 @Service("onsiteTitleBlobService")
 @Transactional(rollbackFor = Exception.class)
 public class OnsiteTitleBlobServiceImpl extends ServiceImpl<OnsiteTitleBlobMapper, OnsiteTitleBlob> implements OnsiteTitleBlobService {
-
-}
+    @Override
+    public OnsiteTitleBlob queryBlobForPlanId(long planId) {
+        List<OnsiteTitleBlob> list=this.getBaseMapper().selectList(
+                new LambdaQueryWrapper<OnsiteTitleBlob>()
+                        .eq(OnsiteTitleBlob::getBentelerPlanId,planId));
+        if (null!=list && list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
+}

+ 1 - 1
application-facade/src/main/java/com/factory/web/service/pm/OnsiteTitleBlobService.java

@@ -10,5 +10,5 @@ import com.factory.web.entity.pm.OnsiteTitleBlob;
  * @date 2021-07-09 12:00:00
  */
 public interface OnsiteTitleBlobService extends IService<OnsiteTitleBlob> {
-
+    public OnsiteTitleBlob queryBlobForPlanId(long planId) ;
 }

+ 19 - 0
application-facade/src/main/resources/application-test.yml

@@ -29,12 +29,31 @@ spring:
     hikari:
       maximum-pool-size: 5
 
+
 cn:
   jiheng:
     file:
       file-store-dir: download
       zip-out-dir: zip
       download-prefix: https://s2t.jihengcc.cn/file/
+    auth:
+      permit-url-list:
+        - /swagger-ui.html
+        - /webjars/**
+        - /swagger-resources/**
+        - /v2/**
+        - /favicon.ico
+        - /doc.html
+        - /api/passwordLogin
+        - /csrf
+        - /error**
+        - /webjars**
+        # 登录
+        - /login/passwordLogin**
+        - /login
+        - /benteler/fileupload/**
+      #        - /**
+      client: WEB
 
 jetcache:
   statIntervalMinutes: 15

+ 2 - 2
application-facade/src/main/resources/application.yml

@@ -8,8 +8,8 @@ spring:
     active: test
   servlet:
     multipart:
-      max-file-size: 10240MB
-      max-request-size: 10240MB
+      max-file-size: 10MB
+      max-request-size: 10MB
 swagger:
   enabled: true
   docket: