Browse Source

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

yjwang 4 days ago
parent
commit
d2f3460069

+ 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)){
             //发送信息

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/config/MedicalMallConfig.java

@@ -29,5 +29,5 @@ public class MedicalMallConfig {
     private boolean isThreePartyEntry;
 
     //处方类型 0,易诊通 1,580
-    private Integer PrescribeType = 0;
+    private Integer prescribeType = 0;
 }

+ 3 - 0
fs-service/src/main/java/com/fs/hospital580/vo/res/PrescriptionListRes.java

@@ -66,4 +66,7 @@ public class PrescriptionListRes implements Serializable {
 
     @ApiModelProperty("处方编号")
     private String serialNo;
+
+    @ApiModelProperty("根据订单状态 展示处方状态(1待生效 2已生效 3已失效)")
+    private Integer prescriptionStatusByOrderStatus;
 }

+ 1 - 1
fs-service/src/main/resources/mapper/qw/QwWatchLogMapper.xml

@@ -220,7 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         <if test='ids != null and ids != ""'>
             AND qec.qw_user_id IN
-            <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
+            <foreach item="item" index="index" collection="ids.split(',')" open="(" separator="," close=")">
                 #{item}
             </foreach>
         </if>

+ 13 - 0
fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

@@ -50,6 +50,7 @@ import java.time.Period;
 import java.time.ZoneId;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Service
@@ -241,6 +242,18 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
                             .prescriptionStatus(order.getPrescriptionStatus())
                             .doctorName(order.getDoctorName())
                             .serialNo(order.getSerialNo())
+                            .prescriptionStatusByOrderStatus(Optional.ofNullable(orderService.selectFsStoreOrderById(order.getStoreOrderId()))
+                                    .map(FsStoreOrderScrm::getStatus)
+                                    .map(s -> {
+                                        if (s.equals(0)) {
+                                            return 1;
+                                        } else if (s.equals(-3)) {
+                                            return 3;
+                                        } else {
+                                            return 2;
+                                        }
+                                    })
+                                    .orElse(0))
                             .build();
                 })
                 .filter(Objects::nonNull)