Ver Fonte

Merge branch 'message' of licailing/wenlvju into master

licailing há 4 anos atrás
pai
commit
04d5103dfb

+ 18 - 5
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -15,6 +15,7 @@ import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.*;
 import com.izouma.wenlvju.security.Authority;
 import com.izouma.wenlvju.service.sms.NjwlSmsService;
+import com.izouma.wenlvju.service.storage.StorageService;
 import com.izouma.wenlvju.utils.FileUtils;
 import com.izouma.wenlvju.utils.JpaUtils;
 import com.izouma.wenlvju.utils.ObjUtils;
@@ -63,6 +64,8 @@ public class RateService {
     private NjwlSmsService          njwlSmsService;
     @Autowired
     private OrganizationRepo        organizationRepo;
+    @Autowired
+    private StorageService          storageService;
     @Value("${storage.local_path}")
     private String                  localPath;
 
@@ -374,7 +377,9 @@ public class RateService {
 
     public List<InputStream> upLoad1(Rate rate) throws UnsupportedEncodingException {
         List<InputStream> files = new ArrayList<>();
-        String uri = "http://10.188.236.2/word2pdf";
+//        String uri = "http://10.188.236.2/word2pdf";
+
+        String uri = "http://convert.izouma.com/word2pdf";
 
         // 表格
         String export = this.export(rate);
@@ -399,6 +404,8 @@ public class RateService {
     }
 
     public void downloadFile1(List<InputStream> files, List<String> urls) {
+
+
         AtomicInteger num = new AtomicInteger(1);
         urls.forEach(privacy -> {
             num.getAndIncrement();
@@ -414,7 +421,7 @@ public class RateService {
                         throw new BusinessException("找不到文件");
                     }
                 }
-                InputStream stream = HttpRequest.post("http://10.188.236.2/word2pdf")
+                InputStream stream = HttpRequest.post("http://convert.izouma.com/word2pdf")
                         .accept("*/*")
                         .part("file", "审核材料.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", is1)
                         .stream();
@@ -440,6 +447,7 @@ public class RateService {
     public List<File> upLoad(Rate rate) {
         List<File> files = new ArrayList<>();
         String uri = "http://10.188.236.2/word2pdf";
+
         // 表格
         String export = this.export(rate);
         InputStream is = new ByteArrayInputStream(export.getBytes());
@@ -565,13 +573,14 @@ public class RateService {
         }
         List<InputStream> files = this.upLoad1(rate);
 
-        String targetPath = localPath + "/material" + rate.getId() + ".pdf";
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
         // pdf合并工具类
         PDFMergerUtility mergePdf = new PDFMergerUtility();
 
         mergePdf.addSources(files);
         // 设置合并生成pdf文件名称
-        mergePdf.setDestinationFileName(targetPath);
+        mergePdf.setDestinationStream(bos);
         try {
             mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
             for (InputStream is : files) {
@@ -580,7 +589,11 @@ public class RateService {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        rate.setPdfUrl("http://yskj.njlyw.cn:8081/files/pdf/material" + rate.getId() + ".pdf");
+
+        String url = storageService.uploadFromInputStream(new ByteArrayInputStream(bos.toByteArray()),
+                "pdf/material" + rate.getId() + ".pdf");
+
+        rate.setPdfUrl(url);
         rateRepo.save(rate);
     }
 

+ 11 - 0
src/main/java/com/izouma/wenlvju/web/RateController.java

@@ -161,6 +161,17 @@ public class RateController extends BaseController {
         });
     }
 
+    @GetMapping("/mergePdf/{id}")
+    public void mergePdf(@PathVariable Long id) {
+        Rate rate = rateRepo.findById(id).orElseThrow(new BusinessException("无等级评定"));
+        try {
+            rateService.mergePdf(rate);
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        }
+
+    }
+
     @OperLog(value = "等级评定", type = "修改", desc = "对等级评定申请进行操作")
     @ApiOperation("设置审查时间")
     @GetMapping("/saveReviewTime")

+ 7 - 2
src/main/vue/src/views/GradingOrganizationList.vue

@@ -28,7 +28,12 @@
             <!-- <el-table-column prop="id" label="ID" width="100"> </el-table-column> -->
             <el-table-column prop="code" label="编号" min-width="60"> </el-table-column>
             <el-table-column prop="name" label="名称" min-width="150"> </el-table-column>
-            <el-table-column prop="outOfProvince" label="省外" min-width="150"> </el-table-column>
+            <el-table-column prop="outOfProvince" label="省内省外" min-width="150">
+                <template slot-scope="{ row }">
+                    <span v-if="!row.outOfProvince">省内</span>
+                    <span v-else>省外</span>
+                </template>
+            </el-table-column>
             <el-table-column prop="province" label="省份" min-width="150"> </el-table-column>
             <!-- <el-table-column prop="province" label="所属省份" min-width="100"> </el-table-column>
             <el-table-column prop="introduction" label="简介" min-width="200" show-overflow-tooltip> </el-table-column>
@@ -86,7 +91,7 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search };
+            return { sort: 'code,asc', search: this.search };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 40 - 9
src/main/vue/src/views/rate/RateOrganizerList.vue

@@ -64,15 +64,26 @@
                         v-if="row.status == 'FIRST_REVIEW_PENDING' || row.status == 'FIRST_REVIEW_DENY'"
                         >撤回
                     </el-button>
-                    <el-button
-                        @click="aletrLog(row)"
-                        type="primary"
-                        :loading="downloading"
-                        size="mini"
-                        class="filter-item"
-                        v-if="row.status == 'SUBMIT_PAPER_MATERIALS'"
-                        >下载材料
-                    </el-button>
+                    <span v-if="row.status == 'SUBMIT_PAPER_MATERIALS'" style="margin-left:2px">
+                        <el-button
+                            @click="mergePdf(row)"
+                            type="primary"
+                            :loading="downloading"
+                            size="mini"
+                            class="filter-item"
+                            v-if="isMerge(row.pdfUrl)"
+                            >合并材料
+                        </el-button>
+                        <el-button
+                            @click="aletrLog(row)"
+                            type="primary"
+                            :loading="downloading"
+                            size="mini"
+                            class="filter-item"
+                            v-else
+                            >下载材料
+                        </el-button>
+                    </span>
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
@@ -307,6 +318,26 @@ export default {
                     this.$message.warning('复制失败');
                 }
             );
+        },
+        isMerge(url) {
+            if (typeof url == 'undefined' || url == '') {
+                return true;
+            }
+            return false;
+        },
+        mergePdf(row) {
+            this.downloading = true;
+            this.$http
+                .get('/rate/mergePdf/' + row.id)
+                .then(res => {
+                    this.downloading = false;
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    // this.$message.error(e.error);
+                });
         }
     }
 };

+ 67 - 62
src/test/java/com/izouma/wenlvju/service/performance/ParticipantServiceTest.java

@@ -34,89 +34,94 @@ public class ParticipantServiceTest extends ApplicationTests {
 
     @Test
     public void test() throws IOException, WriterException {
-        BufferedImage shareImg = ImageIO.read(this.getClass()
-                .getResourceAsStream("/static/certificate/2021-187-28197.png"));
-        BufferedImage result = new BufferedImage(2480, 1748, BufferedImage.TYPE_INT_RGB);
-        Graphics2D g = result.createGraphics();
-        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-        g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
-        g.setComposite(AlphaComposite.SrcOver);
-        g.drawImage(shareImg, 0, 0, null);
-
-        // 二维码
+        String[] array = {"何雨田"};
+        String pid = "18971";
+        for (String str : array) {
+
+
+            BufferedImage shareImg = ImageIO.read(this.getClass()
+                    .getResourceAsStream("/static/certificate/2021-124-28197.png"));
+            BufferedImage result = new BufferedImage(2480, 1748, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g = result.createGraphics();
+            g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+            g.setComposite(AlphaComposite.SrcOver);
+            g.drawImage(shareImg, 0, 0, null);
+
+            // 二维码
 //        BufferedImage avatar = ImageIO.read(new URL("http://yskj.njlyw.cn:8081/files/image/2021-11-04-12-36-43bJEcdPkI.jpg"));
-        Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
-        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
-        hints.put(EncodeHintType.MARGIN, 1);
-        BitMatrix bitMatrix = new MultiFormatWriter().encode("http://yskj.njlyw.cn:8081/h5/home?programmeId=18705", BarcodeFormat.QR_CODE, 1000, 1000, hints);
+            Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
+            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+            hints.put(EncodeHintType.MARGIN, 1);
+            BitMatrix bitMatrix = new MultiFormatWriter().encode("http://yskj.njlyw.cn:8081/h5/home?programmeId=" + pid, BarcodeFormat.QR_CODE, 1000, 1000, hints);
 //        BufferedImage image = new BufferedImage(240, 240, BufferedImage.TYPE_INT_RGB);
-        BufferedImage code = MatrixToImageWriter.toBufferedImage(bitMatrix);
+            BufferedImage code = MatrixToImageWriter.toBufferedImage(bitMatrix);
 //        BufferedImage avatar = ImageIO.read(new File("/Users/qiufangchao/Desktop/17824.png"));
 
 //        int size = Math.min(avatar.getWidth(), avatar.getHeight());
 //        BufferedImage subImg = avatar
 //                .getSubimage((avatar.getWidth() - size) / 2, (avatar.getHeight() - size) / 2, size, size);
 
-        BufferedImage avatarImg = new BufferedImage(249, 249, BufferedImage.TYPE_INT_ARGB);
-        Graphics2D g2 = avatarImg.createGraphics();
-        g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-        g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
-        g2.setComposite(AlphaComposite.SrcOver);
-        g2.setBackground(Color.GREEN);
+            BufferedImage avatarImg = new BufferedImage(249, 249, BufferedImage.TYPE_INT_ARGB);
+            Graphics2D g2 = avatarImg.createGraphics();
+            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+            g2.setComposite(AlphaComposite.SrcOver);
+            g2.setBackground(Color.GREEN);
 //        g2.setClip(new Ellipse2D.Float(0, 0, 68 * 2, 76 * 2)); //椭圆
 
-        g2.drawImage(code, 0, 0, 249, 249, null);
-        g.drawImage(avatarImg, 1894, 248, 249, 249, null);
+            g2.drawImage(code, 0, 0, 249, 249, null);
+            g.drawImage(avatarImg, 1894, 248, 249, 249, null);
 
 
-        // 文字
-        g.setColor(new Color(48, 52, 82)); //根据图片的背景设置水印颜色
-        // 编号
-        String small = "18705";
-        Font fontSmall = new Font("黑体", Font.PLAIN, 35);
-        g.setFont(fontSmall);
-        g.drawString(small, 2000, 544);
+            // 文字
+            g.setColor(new Color(48, 52, 82)); //根据图片的背景设置水印颜色
+            // 编号
+//            String small = "18971";
+            Font fontSmall = new Font("黑体", Font.PLAIN, 35);
+            g.setFont(fontSmall);
+            g.drawString(pid, 2000, 544);
 
-        // 姓名
-        Font font = new Font("黑体", Font.BOLD, 60);
-        String content = "田雨歆";
-        // 加水印
-        g.setFont(font);              //设置字体
-        //设置水印的坐标
-        g.drawString(content, 400, 601);  //画出水印
+            // 姓名
+            Font font = new Font("黑体", Font.BOLD, 60);
+//            String content = "张泽清";
+            // 加水印
+            g.setFont(font);              //设置字体
+            //设置水印的坐标
+            g.drawString(str, 400, 601);  //画出水印
 
-        // 节目名称
-        String content1 = "人物素描";
+            // 节目名称
+            String content1 = "月愿";
 
-        if (content1.length() < 8) {
+            if (content1.length() < 8) {
 //            String body1 = "多声部手风琴原创作品《最";
 //            String body2 = "美的风景》";
 //            Font title = new Font("黑体", Font.PLAIN, 40);
 //            g.setFont(title);
 //            g.drawString(body1, 1200, 795);
-            g.drawString(content1, 1300, 834);
-        } else {
-            g.drawString(content1, 1180, 834);
+                g.drawString(content1, 1300, 834);
+            } else {
+                g.drawString(content1, 1180, 834);
+            }
+
+
+            g.dispose();
+            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+            Thumbnails.of(result)
+                    .scale(1)
+                    .outputQuality(.9f)
+                    .outputFormat("jpg")
+                    .toOutputStream(out);
+            ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+
+            File file = new File("/Users/qiufangchao/Desktop/补证书/月愿-" + str + ".jpg");
+            byte[] buffer = new byte[in.available()];
+            in.read(buffer);
+            OutputStream outStream = new FileOutputStream(file);
+            outStream.write(buffer);
         }
-
-
-        g.dispose();
-        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
-        Thumbnails.of(result)
-                .scale(1)
-                .outputQuality(.9f)
-                .outputFormat("jpg")
-                .toOutputStream(out);
-        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
-
-        File file = new File("/Users/qiufangchao/Desktop/美术-一等奖-18705.jpg");
-        byte[] buffer = new byte[in.available()];
-        in.read(buffer);
-        OutputStream outStream = new FileOutputStream(file);
-        outStream.write(buffer);
-
     }
 
     @Test