Browse Source

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

yjwang 2 days ago
parent
commit
1852aa119d

+ 9 - 1
fs-common/src/main/java/com/fs/common/utils/ThumbnailatorWatermark.java

@@ -33,6 +33,14 @@ public class ThumbnailatorWatermark {
             URL watermarkURL = new URL(watermarkImageUrl);
             URL watermarkURL = new URL(watermarkImageUrl);
             InputStream watermarkInputStream = watermarkURL.openStream();
             InputStream watermarkInputStream = watermarkURL.openStream();
             BufferedImage watermarkImage = ImageIO.read(watermarkInputStream);
             BufferedImage watermarkImage = ImageIO.read(watermarkInputStream);
+            // 缩放水印
+            // 2. 计算并缩放水印图尺寸 (例如:缩放到原图宽度的1/8)
+            int newWatermarkWidth = watermarkImage.getWidth() / 8;
+            // 按水印图原比例计算高度
+            int newWatermarkHeight = (int) ((double) newWatermarkWidth / watermarkImage.getWidth() * watermarkImage.getHeight());
+            BufferedImage scaledWatermark = Thumbnails.of(watermarkImage)
+                    .size(newWatermarkWidth, newWatermarkHeight)
+                    .asBufferedImage();
 
 
             // 创建签名图片
             // 创建签名图片
             BufferedImage signatureImage = createTextImageWithBorder(doctorName, Color.RED, 36,2);
             BufferedImage signatureImage = createTextImageWithBorder(doctorName, Color.RED, 36,2);
@@ -41,7 +49,7 @@ public class ThumbnailatorWatermark {
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             Thumbnails.of(inputStream)
             Thumbnails.of(inputStream)
                     .scale(1)
                     .scale(1)
-                    .watermark(Positions.TOP_RIGHT, watermarkImage, 0.5f)
+                    .watermark(Positions.TOP_RIGHT, scaledWatermark, 0.5f)
                     .watermark(
                     .watermark(
                             new AbsolutePosition(860, 1340), // 使用自定义坐标位置
                             new AbsolutePosition(860, 1340), // 使用自定义坐标位置
                             signatureImage,
                             signatureImage,

+ 16 - 1
fs-doctor-app/src/main/java/com/fs/app/controller/PrescribeController.java

@@ -1,6 +1,7 @@
 package com.fs.app.controller;
 package com.fs.app.controller;
 
 
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
@@ -19,6 +20,8 @@ import com.fs.his.service.*;
 import com.fs.his.vo.FsDoctorPrescribeListDVO;
 import com.fs.his.vo.FsDoctorPrescribeListDVO;
 import com.fs.his.vo.FsPrescribeListDVO;
 import com.fs.his.vo.FsPrescribeListDVO;
 import com.fs.hisStore.config.MedicalMallConfig;
 import com.fs.hisStore.config.MedicalMallConfig;
+import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hisStore.service.IFsStoreProductScrmService;
 import com.fs.hospital580.entity.Hospital580PrescriptionMedicineScrmEntity;
 import com.fs.hospital580.entity.Hospital580PrescriptionMedicineScrmEntity;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import com.fs.hospital580.service.Hospital580PrescriptionMedicineScrmService;
 import com.fs.hospital580.service.Hospital580PrescriptionMedicineScrmService;
@@ -75,6 +78,9 @@ public class PrescribeController extends  AppBaseController {
     private Hospital580PrescriptionScrmService orderScrmService;
     private Hospital580PrescriptionScrmService orderScrmService;
     @Autowired
     @Autowired
     private Hospital580PrescriptionMedicineScrmService medicineScrmService;
     private Hospital580PrescriptionMedicineScrmService medicineScrmService;
+
+    @Autowired
+    private IFsStoreProductScrmService productScrmService;
     @Login
     @Login
     @GetMapping("/getDoctorPrescribeList")
     @GetMapping("/getDoctorPrescribeList")
     public R getDoctorPrescribeList(FsDoctorPrescribeListDParam param)
     public R getDoctorPrescribeList(FsDoctorPrescribeListDParam param)
@@ -100,6 +106,7 @@ public class PrescribeController extends  AppBaseController {
                     new Page<Hospital580PrescriptionScrmEntity>(param.getPageNum(), param.getPageSize())
                     new Page<Hospital580PrescriptionScrmEntity>(param.getPageNum(), param.getPageSize())
                     , new LambdaQueryWrapper<Hospital580PrescriptionScrmEntity>()
                     , new LambdaQueryWrapper<Hospital580PrescriptionScrmEntity>()
                             .eq(Hospital580PrescriptionScrmEntity::getAuditApothecaryId,param.getDoctorId())
                             .eq(Hospital580PrescriptionScrmEntity::getAuditApothecaryId,param.getDoctorId())
+                            .eq(ObjectUtil.isNotEmpty(param.getStatus()) && param.getStatus()==1,Hospital580PrescriptionScrmEntity::getAuditStatus,1)
                             .orderByDesc(Hospital580PrescriptionScrmEntity::getCreateTime)
                             .orderByDesc(Hospital580PrescriptionScrmEntity::getCreateTime)
             );
             );
             List<FsPrescribeListDVO> list = page.getRecords().stream()
             List<FsPrescribeListDVO> list = page.getRecords().stream()
@@ -114,6 +121,7 @@ public class PrescribeController extends  AppBaseController {
                         vo.setPrescribeImgUrl(order.getDstFilePath());
                         vo.setPrescribeImgUrl(order.getDstFilePath());
                         vo.setAuditReason(order.getReason());
                         vo.setAuditReason(order.getReason());
                         vo.setDiagnose(order.getTags());
                         vo.setDiagnose(order.getTags());
+                        vo.setAuditStatus(order.getAuditStatus());
                         vo.setAuditTime(Date.from(order.getAuditTime().atZone(ZoneId.of("Asia/Shanghai")).toInstant()));
                         vo.setAuditTime(Date.from(order.getAuditTime().atZone(ZoneId.of("Asia/Shanghai")).toInstant()));
                         vo.setCreateTime(Date.from(order.getCreateTime().atZone(ZoneId.of("Asia/Shanghai")).toInstant()));
                         vo.setCreateTime(Date.from(order.getCreateTime().atZone(ZoneId.of("Asia/Shanghai")).toInstant()));
 
 
@@ -122,16 +130,18 @@ public class PrescribeController extends  AppBaseController {
                         vo.setDrugs(list1.stream()
                         vo.setDrugs(list1.stream()
                                 .map(medicine -> {
                                 .map(medicine -> {
                                     FsPrescribeDrug drug = new FsPrescribeDrug();
                                     FsPrescribeDrug drug = new FsPrescribeDrug();
+                                    FsStoreProductScrm fsStoreProductScrm = productScrmService.selectFsStoreProductById(Long.valueOf(medicine.getCommodityCode()));
+                                    BeanUtil.copyProperties(fsStoreProductScrm, drug);
                                     drug.setDrugName(medicine.getDrugName());
                                     drug.setDrugName(medicine.getDrugName());
                                     drug.setDrugNum(Long.valueOf(medicine.getAmount()));
                                     drug.setDrugNum(Long.valueOf(medicine.getAmount()));
                                     drug.setUsageMethod(medicine.getInstructions());
                                     drug.setUsageMethod(medicine.getInstructions());
                                     drug.setDrugSpec(medicine.getSpec());
                                     drug.setDrugSpec(medicine.getSpec());
+                                    drug.setDrugImgUrl(fsStoreProductScrm.getImage());
                                     return drug;
                                     return drug;
                                 })
                                 })
                                 .collect(Collectors.toList()));
                                 .collect(Collectors.toList()));
                         return vo;
                         return vo;
                     })
                     })
-                    .filter(Objects::nonNull)
                     .collect(Collectors.toList());
                     .collect(Collectors.toList());
             PageInfo<FsPrescribeListDVO> listPageInfo=new PageInfo<>(list);
             PageInfo<FsPrescribeListDVO> listPageInfo=new PageInfo<>(list);
             return R.ok().put("data",listPageInfo);
             return R.ok().put("data",listPageInfo);
@@ -180,6 +190,11 @@ public class PrescribeController extends  AppBaseController {
     @Synchronized
     @Synchronized
     public R audit(@Validated @RequestBody FsPrescribeAuditParam param, HttpServletRequest request){
     public R audit(@Validated @RequestBody FsPrescribeAuditParam param, HttpServletRequest request){
         param.setDoctorId(Long.parseLong(getDoctorId()));
         param.setDoctorId(Long.parseLong(getDoctorId()));
+        if (getPrescribeType()){
+            param.setType(2);
+            prescribeService.audit580(param);
+            return R.ok("操作成功");
+        }
         return prescribeService.audit(param);
         return prescribeService.audit(param);
     }
     }
 
 

+ 3 - 0
fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java

@@ -220,4 +220,7 @@ public interface FsDoctorMapper
      * 根据医生id集合查询列表
      * 根据医生id集合查询列表
      */
      */
     List<FsDoctorListUVO> getFsDoctorListUVOListByIds(@Param("doctorIds") List<Long> doctorIds);
     List<FsDoctorListUVO> getFsDoctorListUVOListByIds(@Param("doctorIds") List<Long> doctorIds);
+
+    @Select("SELECT * FROM fs_doctor WHERE store_id=#{storeId} and doctor_type = 2 and  `status`=1 and is_audit=1 and sign_url is not null ORDER BY RAND() LIMIT 1; ")
+    FsDoctor findByStoreId(@Param("storeId") Long storeId);
 }
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsPrescribeAuditParam.java

@@ -11,4 +11,6 @@ public class FsPrescribeAuditParam extends BaseParam implements Serializable {
     Integer status;//1通过 2不通过
     Integer status;//1通过 2不通过
     String auditReason;//拒绝原因
     String auditReason;//拒绝原因
 
 
+    Integer type = 1;//1自动2手动
+
 }
 }

+ 7 - 0
fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java

@@ -115,4 +115,11 @@ public interface IFsDoctorService
      * 查询医生选择列表
      * 查询医生选择列表
      */
      */
     List<FsDoctorChooseVO> getChooseDoctorListByMap(Map<String, Object> params);
     List<FsDoctorChooseVO> getChooseDoctorListByMap(Map<String, Object> params);
+
+    /**
+     * 随机获取一个药师
+     * @param storeId
+     * @return
+     */
+    FsDoctor findByStoreId(Long storeId);
 }
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -504,4 +504,9 @@ public class FsDoctorServiceImpl implements IFsDoctorService
         return fsDoctorMapper.getChooseDoctorListByMap(params);
         return fsDoctorMapper.getChooseDoctorListByMap(params);
     }
     }
 
 
+    @Override
+    public FsDoctor findByStoreId(Long storeId) {
+        return fsDoctorMapper.findByStoreId(storeId);
+    }
+
 }
 }

+ 12 - 3
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.his.service.impl;
 package com.fs.his.service.impl;
 
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -25,6 +26,8 @@ import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.utils.qrcode.QRCodeUtils;
 import com.fs.his.utils.qrcode.QRCodeUtils;
 import com.fs.his.vo.*;
 import com.fs.his.vo.*;
+import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hisStore.service.IFsStoreProductScrmService;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import com.fs.hospital580.service.Hospital580PrescriptionScrmService;
 import com.fs.hospital580.service.Hospital580PrescriptionScrmService;
 import com.fs.im.dto.MsgCustomDTO;
 import com.fs.im.dto.MsgCustomDTO;
@@ -92,6 +95,9 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
 
 
     @Autowired
     @Autowired
     private ISysConfigService configService;
     private ISysConfigService configService;
+
+    @Autowired
+    private IFsStoreProductScrmService productScrmService;
     /**
     /**
      * 查询处方
      * 查询处方
      *
      *
@@ -796,10 +802,13 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
                 .eq(Hospital580PrescriptionScrmEntity::getPrescriptionStatus, 1)
                 .eq(Hospital580PrescriptionScrmEntity::getPrescriptionStatus, 1)
                 .eq(Hospital580PrescriptionScrmEntity::getAuditStatus, 1));
                 .eq(Hospital580PrescriptionScrmEntity::getAuditStatus, 1));
         for (Hospital580PrescriptionScrmEntity fsPrescribe : prescriptionScrmEntities) {
         for (Hospital580PrescriptionScrmEntity fsPrescribe : prescriptionScrmEntities) {
+
+            // 查询商品信息
+            FsStoreProductScrm fsStoreProductScrm = productScrmService.selectFsStoreProductById(fsPrescribe.getStoreOrderId());
             // 西药
             // 西药
-            Long id = doctorMapper.selectFsDoctorType2Ids(1);
+            FsDoctor id = doctorMapper.findByStoreId(fsStoreProductScrm.getStoreId());
             FsPrescribeAuditParam param=new FsPrescribeAuditParam();
             FsPrescribeAuditParam param=new FsPrescribeAuditParam();
-            param.setDoctorId(id);
+            param.setDoctorId(id.getDoctorId());
             param.setPrescribeId(fsPrescribe.getPreId());
             param.setPrescribeId(fsPrescribe.getPreId());
             param.setStatus(1);
             param.setStatus(1);
             audit580(param);
             audit580(param);
@@ -819,7 +828,7 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         try {
         try {
             // 处方添加水印
             // 处方添加水印
             CloudStorageService storage = OSSFactory.build();
             CloudStorageService storage = OSSFactory.build();
-            String url = storage.uploadSuffix(ThumbnailatorWatermark.addWatermarkToNetworkImage(prescribe.getDstFilePath(),configService.selectConfigByKey("his.prescription.url"),doctor.getDoctorName()), ".jpg");
+            String url = storage.uploadSuffix(ThumbnailatorWatermark.addWatermarkToNetworkImage(prescribe.getDstFilePath(),configService.selectConfigByKey("his.prescription.url"),doctor.getSignUrl()), ".jpg");
             prescribe.setDstFilePath(url);
             prescribe.setDstFilePath(url);
         } catch (IOException e) {
         } catch (IOException e) {
         }
         }

+ 2 - 1
fs-service/src/main/java/com/fs/his/vo/FsPrescribeListDVO.java

@@ -56,7 +56,8 @@ public class FsPrescribeListDVO implements Serializable {
     private Integer recipeType;
     private Integer recipeType;
 
 
     List<FsPrescribeDrug> drugs;
     List<FsPrescribeDrug> drugs;
-
+    // 处方审核状态:1为待审核,2为审核通过,3为审核不通过
+    private Integer auditStatus;
 
 
 
 
 }
 }

+ 7 - 1
fs-service/src/main/resources/application-config-druid-yjb.yml

@@ -57,7 +57,13 @@ watch:
 
 
 fs :
 fs :
   commonApi: http://127.0.0.1:7771
   commonApi: http://127.0.0.1:7771
-  h5CommonApi: http://127.0.0.1:7771
+  h5CommonApi: http://127.0.0.1
+#  jwt:
+#    # 加密秘钥
+#    secret: ${spring.profiles.active}avasddrgdsefsfeadsf
+#    # token有效时长,7天,单位秒
+#    expire: 31536000
+#    header: AppToken
 nuonuo:
 nuonuo:
   key: 10924508
   key: 10924508
   secret: A2EB20764D304D16
   secret: A2EB20764D304D16

+ 17 - 3
fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

@@ -14,9 +14,10 @@ import com.fs.app.exception.FSException;
 import com.fs.app.facade.Hospital580FacadeService;
 import com.fs.app.facade.Hospital580FacadeService;
 import com.fs.common.core.domain.PageResponse;
 import com.fs.common.core.domain.PageResponse;
 import com.fs.common.core.domain.Result;
 import com.fs.common.core.domain.Result;
-import com.fs.common.core.page.PageRequest;
 import com.fs.framework.aspectj.lock.DistributeLock;
 import com.fs.framework.aspectj.lock.DistributeLock;
+import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsPatient;
 import com.fs.his.domain.FsPatient;
+import com.fs.his.service.IFsDoctorService;
 import com.fs.his.service.IFsPatientService;
 import com.fs.his.service.IFsPatientService;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
@@ -73,12 +74,16 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
 
 
     @Autowired
     @Autowired
     private IFsStoreOrderScrmService orderService;
     private IFsStoreOrderScrmService orderService;
+
+    @Autowired
+    private IFsDoctorService doctorService;
+
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @DistributeLock(key = "#vo.userId", scene = "savePreDemand", waitTime = 5000, errorMsg = "新增问诊信息失败")
     @DistributeLock(key = "#vo.userId", scene = "savePreDemand", waitTime = 5000, errorMsg = "新增问诊信息失败")
     public Result<String> savePreDemand(SaveOrderScrmReq vo) {
     public Result<String> savePreDemand(SaveOrderScrmReq vo) {
         // 校验是否存在问诊单
         // 校验是否存在问诊单
-        if (orderScrmService.isByStoreOrder(vo.getStoreOrderId())){
+        if (orderScrmService.isByStoreOrder(vo.getStoreOrderId())) {
             throw new FSException("您已存在未处理的问诊单");
             throw new FSException("您已存在未处理的问诊单");
         }
         }
 
 
@@ -143,6 +148,15 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
         BeanUtil.copyProperties(vo, prescription);
         BeanUtil.copyProperties(vo, prescription);
         prescription.setPrescriptionStatus(vo.getStatus());
         prescription.setPrescriptionStatus(vo.getStatus());
         prescription.setAuditStatus(1);
         prescription.setAuditStatus(1);
+        // 查询订单信息
+        FsStoreOrderScrm fsStoreOrderScrm = orderService.selectFsStoreOrderById(prescription.getStoreOrderId());
+        // 查询药剂师
+        FsDoctor fsDoctor = doctorService.findByStoreId(fsStoreOrderScrm.getStoreId());
+        if (ObjectUtil.isNotEmpty(fsDoctor)){
+            prescription.setAuditApothecaryName(fsDoctor.getDoctorName());
+            prescription.setAuditApothecaryId(fsDoctor.getDoctorId());
+        }
+
         // 更新处方记录
         // 更新处方记录
         prescription.updateById();
         prescription.updateById();
         List<PrescriptionMedicineScrmVo> drugRspList = vo.getDrugRspList();
         List<PrescriptionMedicineScrmVo> drugRspList = vo.getDrugRspList();
@@ -223,7 +237,7 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
         IPage<Hospital580PrescriptionScrmEntity> page = orderScrmService.page(
         IPage<Hospital580PrescriptionScrmEntity> page = orderScrmService.page(
                 new Page<Hospital580PrescriptionScrmEntity>(pageRequest.getPageNum(), pageRequest.getPageSize())
                 new Page<Hospital580PrescriptionScrmEntity>(pageRequest.getPageNum(), pageRequest.getPageSize())
                 , new LambdaQueryWrapper<Hospital580PrescriptionScrmEntity>()
                 , new LambdaQueryWrapper<Hospital580PrescriptionScrmEntity>()
-                        .eq(ObjectUtil.isNotEmpty(pageRequest.getStatus()),Hospital580PrescriptionScrmEntity::getStatus, pageRequest.getStatus()).eq(Hospital580PrescriptionScrmEntity::getUserId,userId)
+                        .eq(ObjectUtil.isNotEmpty(pageRequest.getStatus()), Hospital580PrescriptionScrmEntity::getStatus, pageRequest.getStatus()).eq(Hospital580PrescriptionScrmEntity::getUserId, userId)
                         .orderByDesc(Hospital580PrescriptionScrmEntity::getCreateTime)
                         .orderByDesc(Hospital580PrescriptionScrmEntity::getCreateTime)
         );
         );
         List<Hospital580PrescriptionScrmEntity> orderRecords = page.getRecords();
         List<Hospital580PrescriptionScrmEntity> orderRecords = page.getRecords();