ximinghao 3 mesiacov pred
rodič
commit
96f86044bc

+ 3 - 3
src/main/java/com/skyversation/xjcy/controller/DataExportController.java

@@ -1,7 +1,7 @@
 package com.skyversation.xjcy.controller;
 
 import com.skyversation.xjcy.service.DataExportService;
-import com.skyversation.xjcy.util.FileIOData;
+import com.skyversation.xjcy.util.FileUtil;
 import com.skyversation.xjcy.util.MessageManage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -36,9 +36,9 @@ public class DataExportController {
                 return MessageManage.getInstance().getResultContent(-1,"timeRange不可用","timeRange不可用");
             }
             List<Map<String, Object>> data = dataExportService.exportClue(c_clue_name,c_enterprise_name,construction_method,timeStr[0],timeStr[1]);
-            FileIOData.exportExcelWithPreDefinedHeader(
+            FileUtil.exportExcelWithPreDefinedHeader(
                     "徐泾镇招商项目(拿地)动态汇总表",
-                    FileIOData.PreDefinedHeader.CLUE,
+                    FileUtil.PreDefinedHeader.CLUE,
                     data, request, response);
             return MessageManage.getInstance().getResultContent(200,"成功","成功");
         } catch (Exception e) {

+ 99 - 0
src/main/java/com/skyversation/xjcy/controller/UploadController.java

@@ -0,0 +1,99 @@
+package com.skyversation.xjcy.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.skyversation.xjcy.dms.DMSColumn;
+import com.skyversation.xjcy.dms.DMSService;
+import com.skyversation.xjcy.dms.FileType;
+import com.skyversation.xjcy.enums.WechatSource;
+import com.skyversation.xjcy.oauth.AuthService;
+import com.skyversation.xjcy.util.FileUtil;
+import com.skyversation.xjcy.util.MessageManage;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping()
+public class UploadController {
+    private final DMSService dMSService;
+    private final AuthService authService;
+
+    public UploadController(DMSService dMSService, AuthService authService) {
+        this.dMSService = dMSService;
+        this.authService = authService;
+    }
+
+    @RequestMapping("/uploadWeChatArticle")
+    public String uploadWeChatArticle(@RequestParam("pdf") MultipartFile pdf,
+                                      @RequestParam("picture") MultipartFile picture,
+                                      @RequestParam("title") String title,
+                                      @RequestParam("time") String time,
+                                      @RequestParam("source") String source,
+                                      @RequestParam("url") String url) {
+        WechatSource sourceEnum;
+        try {
+            sourceEnum = WechatSource.valueOf(source.toUpperCase());
+        } catch (IllegalArgumentException e) {
+            return MessageManage.getInstance().getResultContent(-1,
+                    "source的取值范围为" +
+                            Arrays.stream(WechatSource.values())
+                                    .map(Objects::toString)
+                                    .map(String::toLowerCase)
+                                    .collect(Collectors.joining(",")),
+                    "传入的source不可用"
+            );
+        }
+
+        String pdfPath;
+        try {
+            pdfPath = dMSService.uploadFile(
+                    FileUtil.getResource(pdf),
+                    authService.getToken(),
+                    DMSColumn.WECHAT_ARTICLE,
+                    "c_article_content",
+                    FileType.FILE);
+        } catch (IOException e) {
+            return MessageManage.getInstance().getResultContent(-1, "将pdf上传至服务器失败", "将pdf上传至服务器失败");
+        }
+        String picturePath;
+        try {
+            picturePath = dMSService.uploadFile(
+                    FileUtil.getResource(picture),
+                    authService.getToken(),
+                    DMSColumn.WECHAT_ARTICLE,
+                    "c_article_picture",
+                    FileType.PICTURE);
+        } catch (IOException e) {
+            return MessageManage.getInstance().getResultContent(-1, "将pdf上传至服务器失败", "将picture上传至服务器失败");
+        }
+        JSONObject obj = new JSONObject();
+        obj.put("c_wechat_source_type", sourceEnum.getCode());
+        obj.put("c_article_title", title.replaceAll("'", "''"));
+        obj.put("c_article_content", pdfPath);
+        obj.put("c_article_picture", picturePath);
+        obj.put("c_publish_time", time);
+        obj.put("c_original_url", url.replaceAll("'", "''"));
+        obj.put("c_status", "2");
+
+        obj.put("title", title.replaceAll("'", "''"));
+        obj.put("content", title.replaceAll("'", "''"));
+        boolean success = dMSService.insertToDms(obj, authService.getToken(), DMSColumn.WECHAT_ARTICLE);
+        if (success) {
+            return MessageManage.getInstance().getResultContent(200, "完成", "完成");
+        } else {
+            return MessageManage.getInstance().getResultContent(-1, "未知错误", "未知错误");
+
+        }
+    }
+
+}

+ 21 - 3
src/main/java/com/skyversation/xjcy/dms/DMSService.java

@@ -195,8 +195,24 @@ public class DMSService {
         headers.put("token", token);
         return HttpUtil.requestPost(path + "/content/importBeautifiedExcel", params, headers);
     }
-
-    public void insertToDms(JSONObject objs, String token, DMSColumn column) {
+    public String uploadFile(Resource resource, String token, DMSColumn column ,String paramName,FileType fileType) {
+        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+        params.add("columnId", column.getId());
+        params.add("contentId", "uploadFile");
+        params.add("paraName", paramName);
+        params.add("type", fileType.getCode());
+        params.add("file", resource);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("token", token);
+        String json = HttpUtil.requestPost(path + "/file/uploadFile", params, headers);
+        JSONObject jsonObject = JSON.parseObject(json);
+        if (jsonObject.getString("code").equals("200")) {
+            return jsonObject.getString("content");
+        }else {
+            throw new RuntimeException("上传失败");
+        }
+    }
+    public boolean insertToDms(JSONObject objs, String token, DMSColumn column) {
 
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
         params.add("modelId",column.getModelId());
@@ -204,7 +220,9 @@ public class DMSService {
         params.add("content", objs);
         Map<String, String> headers = new HashMap<>();
         headers.put("token", token);
-         HttpUtil.requestPost(path + "/content/addContent", params, headers);
+        String json = HttpUtil.requestPost(path + "/content/addContent", params, headers);
+        JSONObject jsonObject = JSON.parseObject(json);
+        return jsonObject.getString("code").equals("200");
     }
 
     public List<JSONObject> queryBeautifiedClue(String token, String cClueName, String cEnterpriseName, String constructionMethod, String timeStart, String timeEnd) {

+ 16 - 0
src/main/java/com/skyversation/xjcy/dms/FileType.java

@@ -0,0 +1,16 @@
+package com.skyversation.xjcy.dms;
+
+import lombok.Getter;
+
+public enum FileType {
+    PICTURE("0"),
+    MUSIC("1"),
+    VIDEO("2"),
+    FILE("3"),
+    OTHER("4");
+    FileType(String code) {
+        this.code = code;
+    }
+    @Getter
+    private final String code;
+}

+ 19 - 0
src/main/java/com/skyversation/xjcy/enums/WechatSource.java

@@ -0,0 +1,19 @@
+package com.skyversation.xjcy.enums;
+
+import lombok.Getter;
+
+public enum WechatSource {
+    FZQP("1","法治青浦公众号"),
+    QPSW("2","青浦税务公众号"),
+    HLXJ("3","活力徐泾公众号"),
+    ;
+    @Getter
+    private final String code;
+    @Getter
+    private final String name;
+
+    WechatSource(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+}

+ 4 - 12
src/main/java/com/skyversation/xjcy/service/DataImportService.java

@@ -2,29 +2,21 @@ package com.skyversation.xjcy.service;
 
 import com.skyversation.xjcy.dms.DMSImport;
 import com.skyversation.xjcy.dms.DMSService;
-import org.springframework.core.io.InputStreamResource;
+import com.skyversation.xjcy.util.FileUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.IOException;
 
+
 @Service
 public class DataImportService {
     @Resource
     DMSService dmsService;
     public String importTo(MultipartFile file, String token, DMSImport importType) throws IOException {
-        org.springframework.core.io.Resource resource = new InputStreamResource(file.getInputStream()) {
-            @Override
-            public String getFilename() {
-                return file.getOriginalFilename();
-            }
-
-            @Override
-            public long contentLength() {
-                return file.getSize();
-            }
-        };
+        org.springframework.core.io.Resource resource = FileUtil.getResource(file);
         return dmsService.importToDms(resource,token,importType);
     }
+
 }

+ 15 - 23
src/main/java/com/skyversation/xjcy/util/FileIOData.java → src/main/java/com/skyversation/xjcy/util/FileUtil.java

@@ -1,17 +1,15 @@
 package com.skyversation.xjcy.util;
 
-import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.web.multipart.MultipartFile;
 import sun.misc.BASE64Encoder;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.*;
@@ -23,9 +21,9 @@ import java.util.*;
  * @Date 2022/8/8 11:16
  * @Version 1.0
  */
-public class FileIOData {
+public class FileUtil {
 
-    private FileIOData(){};
+    private FileUtil(){};
 
     public static enum PreDefinedHeader {
         CLUE {
@@ -106,23 +104,17 @@ public class FileIOData {
         return workbook;
     }
 
-    public static void main(String[] args) throws Exception {
-        List<Map<String,Object>> data = new ArrayList<>();
-        Map<String,Object> map = new HashMap<>();
-        map.put("a","a");
-        map.put("b","b");
-        map.put("c","c");
-        data.add(map);
-        Map<String,Object> map2 = new HashMap<>();
-        map2.put("e","a1");
-        map2.put("f","b1");
-        map2.put("z","c1");
-        data.add(map2);
+    public static org.springframework.core.io.Resource getResource(MultipartFile file) throws IOException {
+        return new InputStreamResource(file.getInputStream()) {
+            @Override
+            public String getFilename() {
+                return file.getOriginalFilename();
+            }
 
-        Workbook workbook = createWorkbook(PreDefinedHeader.CLUE,data);
-        FileOutputStream fos = new FileOutputStream("D:\\output\\result.xlsx");
-        workbook.write(fos);
-        fos.close();
-        workbook.close();
+            @Override
+            public long contentLength() {
+                return file.getSize();
+            }
+        };
     }
 }