Selaa lähdekoodia

coding:处方图片添加水印

zhangqin 1 viikko sitten
vanhempi
commit
1bf482fc75

+ 5 - 1
fs-common/pom.xml

@@ -154,7 +154,11 @@
             <version>1.0.5.2</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.20</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 54 - 0
fs-common/src/main/java/com/fs/common/utils/ThumbnailatorWatermark.java

@@ -0,0 +1,54 @@
+package com.fs.common.utils;
+
+import net.coobird.thumbnailator.Thumbnails;
+import net.coobird.thumbnailator.geometry.Positions;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+
+public class ThumbnailatorWatermark {
+
+    /**
+     * 对网络图片添加水印并返回字节数组
+     *
+     * @param imageUrl           网络图片的URL
+     * @param watermarkImageUrl 本地水印图片路径
+     * @return 添加水印后的图片字节数组
+     * @throws IOException
+     */
+    public static byte[] addWatermarkToNetworkImage(String imageUrl, String watermarkImageUrl) throws IOException {
+        try {
+            // 读取原图片
+            URL url = new URL(imageUrl);
+            InputStream inputStream = url.openStream();
+
+            // 读取水印图片
+            URL watermarkURL = new URL(watermarkImageUrl);
+            InputStream watermarkInputStream = watermarkURL.openStream();
+            BufferedImage watermarkImage = ImageIO.read(watermarkInputStream);
+
+            // 使用Thumbnailator处理并输出到字节数组
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            Thumbnails.of(inputStream)
+                    .scale(1)
+                    .watermark(Positions.TOP_RIGHT, watermarkImage, 0.5f)
+                    .outputQuality(0.9)
+                    .outputFormat("jpg")
+                    .toOutputStream(outputStream);
+
+            inputStream.close();
+            return outputStream.toByteArray();
+        } catch (Exception e) {
+            System.err.println("添加水印失败: " + e.getMessage());
+            e.printStackTrace();
+            throw e;
+        }
+    }
+
+}

+ 3 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/PrescribeController.java

@@ -92,6 +92,9 @@ public class PrescribeController extends  AppBaseController {
     public R getPrescribeList(FsPrescribeListDParam param)
     {
         if (getPrescribeType()){
+            if (ObjectUtil.isEmpty(param.getDoctorId())){
+                param.setDoctorId(Long.parseLong(getDoctorId()));
+            }
             // 问诊列表
             IPage<Hospital580PrescriptionScrmEntity> page = orderScrmService.page(
                     new Page<Hospital580PrescriptionScrmEntity>(param.getPageNum(), param.getPageSize())

+ 11 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -9,6 +9,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.ThumbnailatorWatermark;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
@@ -33,6 +34,7 @@ import com.fs.im.dto.MsgDataFormatDTO;
 import com.fs.im.service.IImService;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
+import com.fs.system.service.ISysConfigService;
 import com.google.zxing.WriterException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -88,6 +90,8 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
     @Autowired
     private Hospital580PrescriptionScrmService orderScrmService;
 
+    @Autowired
+    private ISysConfigService configService;
     /**
      * 查询处方
      *
@@ -812,6 +816,13 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         prescribe.setAuditApothecaryName(doctor.getDoctorName());
         prescribe.setAuditApothecaryId(doctor.getDoctorId());
         prescribe.setReason(param.getAuditReason());
+        try {
+            // 处方添加水印
+            CloudStorageService storage = OSSFactory.build();
+            String url = storage.uploadSuffix(ThumbnailatorWatermark.addWatermarkToNetworkImage(prescribe.getDstFilePath(),configService.selectConfigByKey("his.prescription.url") ), ".jpg");
+            prescribe.setDstFilePath(url);
+        } catch (IOException e) {
+        }
         prescribe.updateById();
         if(param.getStatus().equals(1)){
             //发送信息