Browse Source

coding:对接580接口部分逻辑编码

zhangqin 4 weeks ago
parent
commit
6f62ee9897
36 changed files with 1041 additions and 52 deletions
  1. 5 4
      fs-service/src/main/java/com/fs/hospital580/dto/CommonDto.java
  2. 19 0
      fs-service/src/main/java/com/fs/hospital580/dto/DiseaseDto.java
  3. 2 0
      fs-service/src/main/java/com/fs/hospital580/dto/Result580.java
  4. 7 0
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580OrderScrmEntity.java
  5. 80 0
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580PrescriptionMedicineScrmEntity.java
  6. 144 0
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580PrescriptionScrmEntity.java
  7. 63 0
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580ProductPushScrmEntity.java
  8. 5 15
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580ScrmEntity.java
  9. 18 0
      fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580PrescriptionMedicineScrmMapper.java
  10. 18 0
      fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580PrescriptionScrmMapper.java
  11. 18 0
      fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580ProductPushScrmMapper.java
  12. 4 4
      fs-service/src/main/java/com/fs/hospital580/mapper/MedicineMapper.java
  13. 16 0
      fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580PrescriptionMedicineScrmService.java
  14. 16 0
      fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580PrescriptionScrmService.java
  15. 16 0
      fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580ProductPushScrmService.java
  16. 10 2
      fs-service/src/main/java/com/fs/hospital580/service/Hospital580Service.java
  17. 20 0
      fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580PrescriptionMedicineScrmServiceImpl.java
  18. 20 0
      fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580PrescriptionScrmServiceImpl.java
  19. 20 0
      fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ProductPushScrmServiceImpl.java
  20. 18 1
      fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ScrmServiceImpl.java
  21. 16 10
      fs-service/src/main/java/com/fs/hospital580/service/impl/Hospital580ServiceImpl.java
  22. 18 0
      fs-service/src/main/java/com/fs/hospital580/vo/DiseaseVo.java
  23. 43 0
      fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580PrescriptionMedicineScrmVo.java
  24. 134 0
      fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580PrescriptionScrmVo.java
  25. 14 0
      fs-service/src/main/java/com/fs/hospital580/vo/MedicineSyncVo.java
  26. 15 0
      fs-service/src/main/java/com/fs/hospital580/vo/RefusePrescriptionVo.java
  27. 23 0
      fs-service/src/main/java/com/fs/hospital580/vo/ReviewPrescriptionVo.java
  28. 7 1
      fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580OrderScrmMapper.xml
  29. 25 0
      fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580PrescriptionMedicineScrmMapper.xml
  30. 44 0
      fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580PrescriptionScrmMapper.xml
  31. 21 0
      fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580ProductPushScrmMapper.xml
  32. 8 4
      fs-user-app/src/main/java/com/fs/app/controller/Hospital580CallbackController.java
  33. 8 1
      fs-user-app/src/main/java/com/fs/app/controller/Hospital580Controller.java
  34. 13 0
      fs-user-app/src/main/java/com/fs/app/facade/Hospital580FacadeService.java
  35. 86 10
      fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java
  36. 47 0
      fs-user-app/src/main/java/com/fs/framework/aspectj/Hospital580Aspect.java

+ 5 - 4
fs-service/src/main/java/com/fs/hospital580/dto/CommonDto.java

@@ -1,5 +1,6 @@
 package com.fs.hospital580.dto;
 
+import com.fs.hospital580.util.ObjectApiSignUtil;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -10,12 +11,12 @@ import java.util.Date;
 @Getter
 public class CommonDto implements Serializable {
     private String clientId;
-    private String timeStamp = new Date().getTime() + "";
+    private String timeStamp;
     private String sign;
 
-    public void setSignAndClientId(String sign, String clientId) {
-        this.sign = sign;
+    public void initCommonDto(String clientId, String secretKey) {
         this.clientId = clientId;
+        this.timeStamp = new Date().getTime() + "";
+        this.sign = ObjectApiSignUtil.getSign(this, secretKey);
     }
-
 }

+ 19 - 0
fs-service/src/main/java/com/fs/hospital580/dto/DiseaseDto.java

@@ -0,0 +1,19 @@
+package com.fs.hospital580.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class DiseaseDto extends CommonDto implements Serializable {
+
+    private String type;                // 诊断类型(0为西医诊断,1为中医诊断)
+    private String diagnosisName;                // 诊断名称
+    private String pageNum;                // 分页参数起始页1开始
+    private String pageSiz;                // 分页参数每页条数
+
+
+}
+
+

+ 2 - 0
fs-service/src/main/java/com/fs/hospital580/dto/Result580.java

@@ -10,6 +10,8 @@ public class Result580 implements Serializable {
     private Integer err;
     private String errmsg;
     private String data;
+    // 请求id
+    private Long requestId;
 
     public Result580(String errmsg) {
         this.err = 1;

+ 7 - 0
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580OrderScrmEntity.java

@@ -120,6 +120,13 @@ public class FsStoreHospital580OrderScrmEntity extends Model<FsStoreHospital580O
     @TableField("jump_url")
     private String jumpUrl;
 
+    @ApiModelProperty("开方情况0未开方1开方2拒绝")
+    @TableField("prescription_status")
+    private Byte prescriptionStatus;
+
+    @ApiModelProperty("未开方原因")
+    @TableField("reason")
+    private String reason;
     @Override
     public Serializable pkVal() {
         return this.orderId;

+ 80 - 0
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580PrescriptionMedicineScrmEntity.java

@@ -0,0 +1,80 @@
+package com.fs.hospital580.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 处方药品明细表
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Getter
+@Setter
+@TableName("fs_store_hospital580_prescription_medicine_scrm")
+@ApiModel(value = "FsStoreHospital580PrescriptionMedicineScrmEntity对象", description = "处方药品明细表")
+public class FsStoreHospital580PrescriptionMedicineScrmEntity extends Model<FsStoreHospital580PrescriptionMedicineScrmEntity> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("处方订单ID")
+    @TableField("order_id")
+    private Long orderId;
+
+    @ApiModelProperty("药品通用名")
+    @TableField("drug_common_name")
+    private String drugCommonName;
+
+    @ApiModelProperty("药品名称")
+    @TableField("drug_name")
+    private String drugName;
+
+    @ApiModelProperty("药品数量")
+    @TableField("amount")
+    private Integer amount;
+
+    @ApiModelProperty("药品用法用量说明")
+    @TableField("instructions")
+    private String instructions;
+
+    @ApiModelProperty("商品规格")
+    @TableField("spec")
+    private String spec;
+
+    @ApiModelProperty("三方商品编码")
+    @TableField("commodity_code")
+    private String commodityCode;
+
+    @ApiModelProperty("580药品id")
+    @TableField("medicine_id")
+    private Long medicineId;
+
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private LocalDateTime createdTime;
+
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private LocalDateTime updatedTime;
+
+    @Override
+    public Serializable pkVal() {
+        return this.id;
+    }
+}

+ 144 - 0
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580PrescriptionScrmEntity.java

@@ -0,0 +1,144 @@
+package com.fs.hospital580.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 处方订单主表
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Getter
+@Setter
+@TableName("fs_store_hospital580_prescription_scrm")
+@ApiModel(value = "FsStoreHospital580PrescriptionScrmEntity对象", description = "处方订单主表")
+public class FsStoreHospital580PrescriptionScrmEntity extends Model<FsStoreHospital580PrescriptionScrmEntity> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键ID")
+    @TableId(value = "p_id", type = IdType.AUTO)
+    private Long pId;
+
+    @ApiModelProperty("处方id(580)")
+    @TableField("pid")
+    private Long pid;
+
+    @ApiModelProperty("医院名称")
+    @TableField("hospital_name")
+    private String hospitalName;
+
+    @ApiModelProperty("药店ID")
+    @TableField("store_id")
+    private Long storeId;
+
+    @ApiModelProperty("药店名称")
+    @TableField("store_name")
+    private String storeName;
+
+    @ApiModelProperty("问诊单ID(580)")
+    @TableField("diagnosis_id")
+    private Long diagnosisId;
+
+    @ApiModelProperty("医生签名时间")
+    @TableField("doctor_sign_time")
+    private LocalDateTime doctorSignTime;
+
+    @ApiModelProperty("医生ID")
+    @TableField("doctor_id")
+    private Long doctorId;
+
+    @ApiModelProperty("医生科室")
+    @TableField("doctor_office")
+    private String doctorOffice;
+
+    @ApiModelProperty("医生姓名")
+    @TableField("doctor_name")
+    private String doctorName;
+
+    @ApiModelProperty("患者姓名")
+    @TableField("user_family_name")
+    private String userFamilyName;
+
+    @ApiModelProperty("患者手机号")
+    @TableField("user_family_phone")
+    private String userFamilyPhone;
+
+    @ApiModelProperty("就诊人性别(0未知 1男 2女)")
+    @TableField("user_family_gender")
+    private Byte userFamilyGender;
+
+    @ApiModelProperty("患者年龄")
+    @TableField("user_family_age")
+    private Integer userFamilyAge;
+
+    @ApiModelProperty("诊断标签")
+    @TableField("tags")
+    private String tags;
+
+    @ApiModelProperty("处方状态(1正常 2已作废 )")
+    @TableField("status")
+    private Byte status;
+
+    @ApiModelProperty("备注")
+    @TableField("memo")
+    private String memo;
+
+    @ApiModelProperty("说明")
+    @TableField("remarks")
+    private String remarks;
+
+    @ApiModelProperty("审核不通过的理由(可能为空)")
+    @TableField("reason")
+    private String reason;
+
+    @ApiModelProperty("处方图片地址")
+    @TableField("dst_file_path")
+    private String dstFilePath;
+
+    @ApiModelProperty("问诊单id")
+    @TableField("order_id")
+    private String orderId;
+
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private LocalDateTime createdTime;
+
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private LocalDateTime updatedTime;
+
+    @ApiModelProperty("处方编号")
+    @TableField("serial_no")
+    private String serialNo;
+
+    @ApiModelProperty("处方审核状态:1为待审核,2为审核通过,3为审核不通过")
+    @TableField("audit_status")
+    private Byte auditStatus;
+
+    @ApiModelProperty("审方时间")
+    @TableField("audit_time")
+    private LocalDateTime audiTime;
+
+    @ApiModelProperty("审方药师名称")
+    @TableField("audit_apothecary_name")
+    private String auditApothecaryName;
+
+    @Override
+    public Serializable pkVal() {
+        return this.pId;
+    }
+}

+ 63 - 0
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580ProductPushScrmEntity.java

@@ -0,0 +1,63 @@
+package com.fs.hospital580.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 商品推送记录
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Getter
+@Setter
+@TableName("fs_store_hospital580_product_push_scrm")
+@ApiModel(value = "FsStoreHospital580ProductPushScrmEntity对象", description = "商品推送记录")
+public class FsStoreHospital580ProductPushScrmEntity extends Model<FsStoreHospital580ProductPushScrmEntity> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("商品id")
+    @TableField("product_id")
+    private Long productId;
+
+    @ApiModelProperty("推送状态 0推送中1成功2失败")
+    @TableField("push_status")
+    private Byte pushStatus;
+
+    @ApiModelProperty("失败原因")
+    @TableField("err_msg")
+    private String errMsg;
+
+    @ApiModelProperty("推送时间")
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("收到结果时间")
+    @TableField(value = "update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("请求id")
+    @TableField("request_id")
+    private Long requestId;
+
+    @Override
+    public Serializable pkVal() {
+        return this.id;
+    }
+}

+ 5 - 15
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580ScrmEntity.java

@@ -1,9 +1,6 @@
 package com.fs.hospital580.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -32,7 +29,7 @@ public class FsStoreHospital580ScrmEntity extends Model<FsStoreHospital580ScrmEn
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty("请求地址")
     @TableField("request")
@@ -50,24 +47,17 @@ public class FsStoreHospital580ScrmEntity extends Model<FsStoreHospital580ScrmEn
     @TableField("request_status")
     private Boolean requestStatus;
 
-/*    @ApiModelProperty("操作人id")
-    @TableField("user_id")
-    private Long userId;*/
-
     @ApiModelProperty("创建时间")
-    @TableField("create_time")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
     private LocalDateTime createTime;
 
     @ApiModelProperty("更新时间")
-    @TableField("update_time")
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updateTime;
 
-/*    @ApiModelProperty("同步唯一id集合逗号分隔(product_id)")
-    @TableField("unique_id")
-    private String uniqueId;*/
 
     @Override
     public Serializable pkVal() {
         return this.id;
     }
-}
+}

+ 18 - 0
fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580PrescriptionMedicineScrmMapper.java

@@ -0,0 +1,18 @@
+package com.fs.hospital580.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionMedicineScrmEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 处方药品明细表 Mapper 接口
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Mapper
+public interface FsStoreHospital580PrescriptionMedicineScrmMapper extends BaseMapper<FsStoreHospital580PrescriptionMedicineScrmEntity> {
+
+}

+ 18 - 0
fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580PrescriptionScrmMapper.java

@@ -0,0 +1,18 @@
+package com.fs.hospital580.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionScrmEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 处方订单主表 Mapper 接口
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Mapper
+public interface FsStoreHospital580PrescriptionScrmMapper extends BaseMapper<FsStoreHospital580PrescriptionScrmEntity> {
+
+}

+ 18 - 0
fs-service/src/main/java/com/fs/hospital580/mapper/FsStoreHospital580ProductPushScrmMapper.java

@@ -0,0 +1,18 @@
+package com.fs.hospital580.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 商品推送记录 Mapper 接口
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Mapper
+public interface FsStoreHospital580ProductPushScrmMapper extends BaseMapper<FsStoreHospital580ProductPushScrmEntity> {
+
+}

+ 4 - 4
fs-service/src/main/java/com/fs/hospital580/mapper/MedicineMapper.java

@@ -12,10 +12,10 @@ public interface MedicineMapper {
 
     MedicineMapper INSTANCE = Mappers.getMapper(MedicineMapper.class);
 
-    @Mapping(source = "", target = "categoryId")
+    // @Mapping(source = "", target = "categoryId")
     @Mapping(source = "productName", target = "commonName")
     @Mapping(source = "productName", target = "name")
-    @Mapping(source = "dosage_form", target = "dosage")
+    @Mapping(source = "dosageForm", target = "dosage")
     @Mapping(source = "dosage", target = "spec")
     @Mapping(source = "prescribeSpec", target = "packingSpec")
     @Mapping(source = "manufacturer", target = "manufacturer")
@@ -25,13 +25,13 @@ public interface MedicineMapper {
     @Mapping(source = "barCode", target = "barCode")
     @Mapping(source = "productType", target = "isPrescription")
     @Mapping(source = "price", target = "price")
-    @Mapping(source = "stock", target = "stock", qualifiedByName = "longToInteger")
+    @Mapping(source = "stock", target = "stock")
     Medicine toMedicine(FsStoreProductScrm product);
 
     /**
      * 将Long转换为String
      */
-    @Named("longToInteger")
+    @Named("longToString")
     default String longToString(Long value) {
         return value != null ? String.valueOf(value) : null;
     }

+ 16 - 0
fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580PrescriptionMedicineScrmService.java

@@ -0,0 +1,16 @@
+package com.fs.hospital580.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionMedicineScrmEntity;
+
+/**
+ * <p>
+ * 处方药品明细表 服务类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+public interface FsStoreHospital580PrescriptionMedicineScrmService extends IService<FsStoreHospital580PrescriptionMedicineScrmEntity> {
+
+}

+ 16 - 0
fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580PrescriptionScrmService.java

@@ -0,0 +1,16 @@
+package com.fs.hospital580.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionScrmEntity;
+
+/**
+ * <p>
+ * 处方订单主表 服务类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+public interface FsStoreHospital580PrescriptionScrmService extends IService<FsStoreHospital580PrescriptionScrmEntity> {
+
+}

+ 16 - 0
fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580ProductPushScrmService.java

@@ -0,0 +1,16 @@
+package com.fs.hospital580.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity;
+
+/**
+ * <p>
+ * 商品推送记录 服务类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+public interface FsStoreHospital580ProductPushScrmService extends IService<FsStoreHospital580ProductPushScrmEntity> {
+
+}

+ 10 - 2
fs-service/src/main/java/com/fs/hospital580/service/Hospital580Service.java

@@ -1,24 +1,32 @@
 package com.fs.hospital580.service;
 
 
+import com.fs.hospital580.dto.DiseaseDto;
 import com.fs.hospital580.dto.MedicineDto;
 import com.fs.hospital580.dto.PreDemandDto;
 import com.fs.hospital580.dto.Result580;
 
 public interface Hospital580Service {
     /**
-     * 4.7 同步药品信息接口-580提供
+     * 同步药品信息接口
      *
      * @param dto
      */
     Result580 syncMedicine(MedicineDto dto);
 
     /**
-     * 4.2新 新增问诊单接口-580提供
+     * 新增问诊单接口
      *
      * @param dto
      */
 
     Result580 initPreDemand(PreDemandDto dto);
 
+    /**
+     * 查询诊断
+     * @param dto
+     * @return
+     */
+    Result580 disease(DiseaseDto dto);
+
 }

+ 20 - 0
fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580PrescriptionMedicineScrmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fs.hospital580.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionMedicineScrmEntity;
+import com.fs.hospital580.mapper.FsStoreHospital580PrescriptionMedicineScrmMapper;
+import com.fs.hospital580.service.FsStoreHospital580PrescriptionMedicineScrmService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 处方药品明细表 服务实现类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Service
+public class FsStoreHospital580PrescriptionMedicineScrmServiceImpl extends ServiceImpl<FsStoreHospital580PrescriptionMedicineScrmMapper, FsStoreHospital580PrescriptionMedicineScrmEntity> implements FsStoreHospital580PrescriptionMedicineScrmService {
+
+}

+ 20 - 0
fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580PrescriptionScrmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fs.hospital580.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionScrmEntity;
+import com.fs.hospital580.mapper.FsStoreHospital580PrescriptionScrmMapper;
+import com.fs.hospital580.service.FsStoreHospital580PrescriptionScrmService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 处方订单主表 服务实现类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Service
+public class FsStoreHospital580PrescriptionScrmServiceImpl extends ServiceImpl<FsStoreHospital580PrescriptionScrmMapper, FsStoreHospital580PrescriptionScrmEntity> implements FsStoreHospital580PrescriptionScrmService {
+
+}

+ 20 - 0
fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ProductPushScrmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fs.hospital580.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity;
+import com.fs.hospital580.mapper.FsStoreHospital580ProductPushScrmMapper;
+import com.fs.hospital580.service.FsStoreHospital580ProductPushScrmService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 商品推送记录 服务实现类
+ * </p>
+ *
+ * @author zhangqin
+ * @since 2025-09-26
+ */
+@Service
+public class FsStoreHospital580ProductPushScrmServiceImpl extends ServiceImpl<FsStoreHospital580ProductPushScrmMapper, FsStoreHospital580ProductPushScrmEntity> implements FsStoreHospital580ProductPushScrmService {
+
+}

+ 18 - 1
fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ScrmServiceImpl.java

@@ -4,14 +4,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.hisStore.domain.FsStoreProductScrm;
 import com.fs.hospital580.dto.Medicine;
 import com.fs.hospital580.dto.MedicineDto;
+import com.fs.hospital580.dto.Result580;
+import com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity;
 import com.fs.hospital580.entity.FsStoreHospital580ScrmEntity;
 import com.fs.hospital580.mapper.FsStoreHospital580ScrmMapper;
 import com.fs.hospital580.mapper.MedicineMapper;
+import com.fs.hospital580.service.FsStoreHospital580ProductPushScrmService;
 import com.fs.hospital580.service.FsStoreHospital580ScrmService;
 import com.fs.hospital580.service.Hospital580Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -29,6 +33,8 @@ public class FsStoreHospital580ScrmServiceImpl extends ServiceImpl<FsStoreHospit
 
     @Autowired
     private Hospital580Service hospital580Service;
+    @Autowired
+    private FsStoreHospital580ProductPushScrmService pushScrmService;
 
     @Override
     public void SynDrugToHospital580(FsStoreProductScrm productScrm) {
@@ -47,7 +53,18 @@ public class FsStoreHospital580ScrmServiceImpl extends ServiceImpl<FsStoreHospit
     }
 
     private void syncMedicine(MedicineDto medicineDto) {
-        hospital580Service.syncMedicine(medicineDto);
+        Result580 result580 = hospital580Service.syncMedicine(medicineDto);
+        if (result580.getErr() == 0) {
+            List<FsStoreHospital580ProductPushScrmEntity> collect = medicineDto.getMedicineList().stream().map(item -> {
+                FsStoreHospital580ProductPushScrmEntity productPushScrmEntity = new FsStoreHospital580ProductPushScrmEntity();
+                productPushScrmEntity.setProductId(Long.valueOf(item.getMedicineId()));
+                productPushScrmEntity.setPushStatus((byte) 0);
+                productPushScrmEntity.setCreateTime(LocalDateTime.now());
+                productPushScrmEntity.setRequestId(result580.getRequestId());
+                return productPushScrmEntity;
+            }).collect(Collectors.toList());
+            pushScrmService.saveBatch(collect);
+        }
     }
 
     /**

+ 16 - 10
fs-service/src/main/java/com/fs/hospital580/service/impl/Hospital580ServiceImpl.java

@@ -3,13 +3,9 @@ package com.fs.hospital580.service.impl;
 
 import cn.hutool.http.HttpRequest;
 import cn.hutool.json.JSONUtil;
-import com.fs.hospital580.dto.CommonDto;
-import com.fs.hospital580.dto.MedicineDto;
-import com.fs.hospital580.dto.PreDemandDto;
-import com.fs.hospital580.dto.Result580;
+import com.fs.hospital580.dto.*;
 import com.fs.hospital580.entity.FsStoreHospital580ScrmEntity;
 import com.fs.hospital580.service.Hospital580Service;
-import com.fs.hospital580.util.ObjectApiSignUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -31,6 +27,10 @@ public class Hospital580ServiceImpl implements Hospital580Service {
      * 4.2新 新增问诊单接口-580提供
      */
     private static final String PREDEMAND_PATH = "/v1_0/ehospital/openapi/kz/web/predemand/initPreDemand";
+    /**
+     * 5、查询诊断
+     */
+    private static final String DISEASE_PATH = "/v2_0/ehospital/openapi/diagnosis/disease/query";
 
     @Override
     public Result580 syncMedicine(MedicineDto dto) {
@@ -44,13 +44,18 @@ public class Hospital580ServiceImpl implements Hospital580Service {
         return requestResult580(dto, PREDEMAND_PATH);
     }
 
+    @Override
+    public Result580 disease(DiseaseDto dto) {
+        return requestResult580(dto, DISEASE_PATH);
+    }
+
     private <T extends CommonDto> Result580 requestResult580(T t, String path) {
-        t.setSignAndClientId(ObjectApiSignUtil.getSign(t, SECRETKEY), CLIENTID);
+        t.initCommonDto(CLIENTID, SECRETKEY);
         String url = HOSPITAL_580_URL + path;
         String body = JSONUtil.toJsonStr(t);
         String result = "";
         Result580 result580;
-        Boolean requestStatus;
+        boolean requestStatus;
         try {
             log.info("请求580接口:{}", body);
             result = HttpRequest.post(url)
@@ -68,13 +73,14 @@ public class Hospital580ServiceImpl implements Hospital580Service {
         /**
          * 保存调用记录
          */
-        FsStoreHospital580ScrmEntity.builder()
+        FsStoreHospital580ScrmEntity build = FsStoreHospital580ScrmEntity.builder()
                 .request(url)
                 .requestParm(body)
                 .response(result)
                 .requestStatus(requestStatus)
-                .build()
-                .insert();
+                .build();
+        build.insert();
+        result580.setRequestId(build.getId());
         return result580;
     }
 

+ 18 - 0
fs-service/src/main/java/com/fs/hospital580/vo/DiseaseVo.java

@@ -0,0 +1,18 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DiseaseVo implements Serializable {
+
+    private String type;                // 诊断类型(0为西医诊断,1为中医诊断)
+    private String diagnosisName;                // 诊断名称
+    private String pageNum;                // 分页参数起始页1开始
+    private String pageSiz;                // 分页参数每页条数
+
+
+}
+
+

+ 43 - 0
fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580PrescriptionMedicineScrmVo.java

@@ -0,0 +1,43 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class FsStoreHospital580PrescriptionMedicineScrmVo implements Serializable {
+    /**
+     * 药品通用名
+     */
+    private String drugCommonName;
+
+    /**
+     * 药品名称
+     */
+    private String drugName;
+
+    /**
+     * 药品数量
+     */
+    private Integer amount;
+
+    /**
+     * 使用说明(如:口服 饭后服用 qd 每日1次)
+     */
+    private String instructions;
+
+    /**
+     * 药品规格(如:20mg*7片*2板/盒)
+     */
+    private String spec;
+
+    /**
+     * 三方商品编码
+     */
+    private String commodityCode;
+
+    /**
+     * 系统药品ID
+     */
+    private Integer medicineId;
+}

+ 134 - 0
fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580PrescriptionScrmVo.java

@@ -0,0 +1,134 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 处方信息实体类
+ */
+@Data
+public class FsStoreHospital580PrescriptionScrmVo implements Serializable {
+    /**
+     * 处方ID
+     */
+    private Integer pid;
+
+    /**
+     * 医院名称
+     */
+    private String hospitalName;
+
+    /**
+     * 药店ID
+     */
+    private Integer storeId;
+
+    /**
+     * 药店名称
+     */
+    private String storeName;
+
+    /**
+     * 诊断ID
+     */
+    private Integer diagnosisId;
+
+    /**
+     * 医生签名时间(时间戳)
+     */
+    private Date doctorSignTime;
+
+    /**
+     * 医生ID
+     */
+    private Integer doctorId;
+
+    /**
+     * 医生科室
+     */
+    private String doctorOffice;
+
+    /**
+     * 医生姓名
+     */
+    private String doctorName;
+
+    /**
+     * 患者姓名
+     */
+    private String userFamilyName;
+
+    /**
+     * 患者手机号码
+     */
+    private String userFamilyPhone;
+
+    /**
+     * 患者性别(1:男, 其他:女)
+     */
+    private Integer userFamilyGender;
+
+    /**
+     * 患者年龄
+     */
+    private Integer userFamilyAge;
+
+    /**
+     * 标签(如:高血压)
+     */
+    private String tags;
+
+    /**
+     * 处方状态
+     */
+    private Integer status;
+
+    /**
+     * 备注信息
+     */
+    private String memo;
+
+    /**
+     * 补充说明
+     */
+    private String remarks;
+
+    /**
+     * 原因说明
+     */
+    private String reason;
+
+    /**
+     * 文件存储路径
+     */
+    private String dstFilePath;
+
+    /**
+     * 第三方唯一订单号
+     */
+    private String bizOrderId;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+    /**
+     * 处方序列号
+     */
+    private String serialNo;
+
+    /**
+     * 药品信息列表
+     */
+    private List<FsStoreHospital580PrescriptionMedicineScrmVo> drugRspList;
+}
+

+ 14 - 0
fs-service/src/main/java/com/fs/hospital580/vo/MedicineSyncVo.java

@@ -0,0 +1,14 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class MedicineSyncVo implements Serializable {
+    private List<String> medicineIds;
+    private String errCode;
+    private String errMsg;
+
+}

+ 15 - 0
fs-service/src/main/java/com/fs/hospital580/vo/RefusePrescriptionVo.java

@@ -0,0 +1,15 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RefusePrescriptionVo implements Serializable {
+    // 580问诊单id
+    private Integer diagnosisId;
+    // 第三方唯一订单号
+    private String bizOrderId;
+    // 未开方原因
+    private String reason;
+}

+ 23 - 0
fs-service/src/main/java/com/fs/hospital580/vo/ReviewPrescriptionVo.java

@@ -0,0 +1,23 @@
+package com.fs.hospital580.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ReviewPrescriptionVo implements Serializable {
+    // 580处方id
+    private Long pid;
+    // 处方审核状态:1为待审核,2为审核通过,3为审核不通过
+    private Byte auditStatus;
+    // 审方时间(时间戳)
+    private Long auditTime;
+    // 审方药师名称
+    private String auditApothecaryName;
+    // 审核不通过原因
+    private String reason;
+    // 处方图片地址
+    private String dstFilePath;
+    // 处方编号
+    private String serialNo;
+}

+ 7 - 1
fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580OrderScrmMapper.xml

@@ -27,11 +27,17 @@
         <result column="create_time" property="createTime" />
         <result column="update_time" property="updateTime" />
         <result column="jump_url" property="jumpUrl" />
+        <result column="prescription_status" property="prescriptionStatus" />
+        <result column="reason" property="reason" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        order_id, member_id, openid, headimgurl, user_id, store_id, service_type, is_examine, is_pregnant_woman, is_lactation, souce_from, user_family_name, user_family_id_card, user_family_age, user_family_gender, user_family_phone, relationship, user_family_addr, img_list, third_return_url, create_time, update_time,jump_url
+        order_id, member_id, openid, headimgurl, user_id, store_id, service_type, is_examine
+                , is_pregnant_woman, is_lactation, souce_from, user_family_name, user_family_id_card
+                , user_family_age, user_family_gender, user_family_phone, relationship, user_family_addr
+                , img_list, third_return_url, create_time, update_time,jump_url
+                , prescription_status, reason
     </sql>
 
 </mapper>

+ 25 - 0
fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580PrescriptionMedicineScrmMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.hospital580.mapper.FsStoreHospital580PrescriptionMedicineScrmMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.fs.hospital580.entity.FsStoreHospital580PrescriptionMedicineScrmEntity">
+        <id column="id" property="id" />
+        <result column="order_id" property="orderId" />
+        <result column="drug_common_name" property="drugCommonName" />
+        <result column="drug_name" property="drugName" />
+        <result column="amount" property="amount" />
+        <result column="instructions" property="instructions" />
+        <result column="spec" property="spec" />
+        <result column="commodity_code" property="commodityCode" />
+        <result column="medicine_id" property="medicineId" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, order_id, drug_common_name, drug_name, amount, instructions, spec, commodity_code, medicine_id, created_time, updated_time
+    </sql>
+
+</mapper>

+ 44 - 0
fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580PrescriptionScrmMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.hospital580.mapper.FsStoreHospital580PrescriptionScrmMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.fs.hospital580.entity.FsStoreHospital580PrescriptionScrmEntity">
+        <id column="p_id" property="pId" />
+        <result column="pid" property="pid" />
+        <result column="hospital_name" property="hospitalName" />
+        <result column="store_id" property="storeId" />
+        <result column="store_name" property="storeName" />
+        <result column="diagnosis_id" property="diagnosisId" />
+        <result column="doctor_sign_time" property="doctorSignTime" />
+        <result column="doctor_id" property="doctorId" />
+        <result column="doctor_office" property="doctorOffice" />
+        <result column="doctor_name" property="doctorName" />
+        <result column="user_family_name" property="userFamilyName" />
+        <result column="user_family_phone" property="userFamilyPhone" />
+        <result column="user_family_gender" property="userFamilyGender" />
+        <result column="user_family_age" property="userFamilyAge" />
+        <result column="tags" property="tags" />
+        <result column="status" property="status" />
+        <result column="memo" property="memo" />
+        <result column="remarks" property="remarks" />
+        <result column="reason" property="reason" />
+        <result column="dst_file_path" property="dstFilePath" />
+        <result column="order_id" property="orderId" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="serial_no" property="serialNo" />
+        <result column="audit_status" property="auditStatus" />
+        <result column="audit_time" property="audiTime" />
+        <result column="audit_apothecary_name" property="auditApothecaryName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        p_id, pid, hospital_name, store_id, store_name, diagnosis_id
+            , doctor_sign_time, doctor_id, doctor_office, doctor_name, user_family_name
+            , user_family_phone, user_family_gender, user_family_age, tags, status, memo, remarks
+            , reason, dst_file_path, order_id, created_time, updated_time, serial_no, audit_status, audit_time, audit_apothecary_name
+    </sql>
+
+</mapper>

+ 21 - 0
fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580ProductPushScrmMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.hospital580.mapper.FsStoreHospital580ProductPushScrmMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity">
+        <id column="id" property="id" />
+        <result column="product_id" property="productId" />
+        <result column="push_status" property="pushStatus" />
+        <result column="err_msg" property="errMsg" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="request_id" property="requestId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, product_id, push_status, err_msg, create_time, update_time, request_id
+    </sql>
+
+</mapper>

+ 8 - 4
fs-user-app/src/main/java/com/fs/app/controller/Hospital580CallbackController.java

@@ -1,6 +1,8 @@
 package com.fs.app.controller;
 
+import com.fs.app.facade.Hospital580FacadeService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -16,12 +18,14 @@ import java.util.Map;
 @Slf4j
 public class Hospital580CallbackController {
 
+    @Autowired
+    private Hospital580FacadeService hospital580FacadeService;
     /**
      * 同步药品信息接口回调
      */
     @GetMapping("/medicine")
     public void medicineSync(@RequestBody Map<String, Object> map) {
-        log.info("同步药品信息接口回调:{}", map);
+        hospital580FacadeService.medicineSync(map);
     }
 
     /**
@@ -29,7 +33,7 @@ public class Hospital580CallbackController {
      */
     @GetMapping("/prescription")
     public void prescription(@RequestBody Map<String, Object> map) {
-        log.info("处方推送接口:{}", map);
+        hospital580FacadeService.prescription(map);
     }
 
     /**
@@ -37,7 +41,7 @@ public class Hospital580CallbackController {
      */
     @GetMapping("/refusePrescription")
     public void refusePrescription(@RequestBody Map<String, Object> map) {
-        log.info("医生拒绝开方推送接口:{}", map);
+        hospital580FacadeService.refusePrescription(map);
     }
 
     /**
@@ -45,6 +49,6 @@ public class Hospital580CallbackController {
      */
     @GetMapping("/reviewPrescription")
     public void reviewPrescription(@RequestBody Map<String, Object> map) {
-        log.info("处方药师审核:{}", map);
+        hospital580FacadeService.reviewPrescription(map);
     }
 }

+ 8 - 1
fs-user-app/src/main/java/com/fs/app/controller/Hospital580Controller.java

@@ -2,6 +2,7 @@ package com.fs.app.controller;
 
 import com.fs.app.facade.Hospital580FacadeService;
 import com.fs.common.core.domain.R;
+import com.fs.hospital580.vo.DiseaseVo;
 import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,5 +29,11 @@ public class Hospital580Controller {
         return hospital580FacadeService.initPreDemand(vo);
     }
 
-
+    /**
+     * 查询诊断类型列表
+     */
+    @PostMapping ("/diseaseQuery")
+    public R diseaseQuery(@RequestBody DiseaseVo vo) {
+        return hospital580FacadeService.diseaseQuery(vo);
+    }
 }

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

@@ -1,8 +1,21 @@
 package com.fs.app.facade;
 
 import com.fs.common.core.domain.R;
+import com.fs.hospital580.vo.DiseaseVo;
 import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
 
+import java.util.Map;
+
 public interface Hospital580FacadeService {
     R initPreDemand(FsStoreHospital580OrderScrmVo vo);
+
+    R diseaseQuery(DiseaseVo vo);
+
+    void prescription(Map<String, Object> map);
+
+    void refusePrescription(Map<String, Object> map);
+
+    void reviewPrescription(Map<String, Object> map);
+
+    void medicineSync(Map<String, Object> map);
 }

+ 86 - 10
fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

@@ -1,25 +1,33 @@
 package com.fs.app.facade.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fs.app.facade.Hospital580FacadeService;
 import com.fs.common.core.domain.R;
+import com.fs.hospital580.dto.DiseaseDto;
 import com.fs.hospital580.dto.PreDemandDto;
 import com.fs.hospital580.dto.Result580;
 import com.fs.hospital580.entity.FsStoreHospital580OrderScrmEntity;
-import com.fs.hospital580.entity.FsStoreHospital580ScrmEntity;
-import com.fs.hospital580.service.FsStoreHospital580OrderScrmService;
-import com.fs.hospital580.service.FsStoreHospital580ScrmService;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionMedicineScrmEntity;
+import com.fs.hospital580.entity.FsStoreHospital580PrescriptionScrmEntity;
+import com.fs.hospital580.entity.FsStoreHospital580ProductPushScrmEntity;
 import com.fs.hospital580.service.Hospital580Service;
-import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
+import com.fs.hospital580.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
     @Autowired
     private Hospital580Service hospital580Service;
     @Autowired
-    private FsStoreHospital580OrderScrmService fsStoreHospital580OrderScrmService;
+    private FsStoreHospital580ProductPushScrmEntity productPushScrm;
+
     @Override
     public R initPreDemand(FsStoreHospital580OrderScrmVo vo) {
         FsStoreHospital580OrderScrmEntity order = new FsStoreHospital580OrderScrmEntity();
@@ -28,12 +36,80 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
         PreDemandDto dto = new PreDemandDto();
         BeanUtil.copyProperties(vo, dto);
         dto.setBizOrderId(order.getOrderId().toString());
-        Result580 result580 = hospital580Service.initPreDemand(dto);
-        if (0 == result580.getErr() ){
-            order.setJumpUrl(result580.getData());
-            order.updateById();
-            return R.ok().put("data",result580.getData());
+        return processResult(hospital580Service.initPreDemand(dto));
+    }
+
+    @Override
+    public R diseaseQuery(DiseaseVo vo) {
+        return processResult(hospital580Service.disease(BeanUtil.copyProperties(vo, DiseaseDto.class)));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void prescription(Map<String, Object> map) {
+        FsStoreHospital580PrescriptionScrmVo properties = BeanUtil.copyProperties(map, FsStoreHospital580PrescriptionScrmVo.class);
+        FsStoreHospital580PrescriptionScrmEntity prescription = new FsStoreHospital580PrescriptionScrmEntity();
+        BeanUtil.copyProperties(properties, prescription);
+        prescription.setOrderId(properties.getBizOrderId());
+        // 插入处方记录
+        prescription.insert();
+
+        List<FsStoreHospital580PrescriptionMedicineScrmVo> drugRspList = properties.getDrugRspList();
+        drugRspList.forEach(item -> {
+            FsStoreHospital580PrescriptionMedicineScrmEntity entity = new FsStoreHospital580PrescriptionMedicineScrmEntity();
+            BeanUtil.copyProperties(item, entity);
+            // 插入药品信息
+            entity.insert();
+        });
+        // 修改问诊单处方状态
+        FsStoreHospital580OrderScrmEntity order = new FsStoreHospital580OrderScrmEntity();
+        order.setOrderId(Long.valueOf(properties.getBizOrderId()));
+        order.setPrescriptionStatus((byte) 1);
+        order.updateById();
+    }
+
+    @Override
+    public void refusePrescription(Map<String, Object> map) {
+        // 修改处方信息
+        RefusePrescriptionVo prescriptionVo = BeanUtil.copyProperties(map, RefusePrescriptionVo.class);
+        FsStoreHospital580OrderScrmEntity order = new FsStoreHospital580OrderScrmEntity();
+        order.setOrderId(Long.valueOf(prescriptionVo.getBizOrderId()));
+        order.setPrescriptionStatus((byte) 2);
+        order.setReason(prescriptionVo.getReason());
+        order.updateById();
+    }
+
+    @Override
+    public void reviewPrescription(Map<String, Object> map) {
+        ReviewPrescriptionVo prescriptionVo = BeanUtil.copyProperties(map, ReviewPrescriptionVo.class);
+        if (ObjectUtil.isEmpty(prescriptionVo) || ObjectUtil.isEmpty(prescriptionVo.getPid())) {
+            return;
+        }
+        // 修改处方信息
+        FsStoreHospital580PrescriptionScrmEntity prescription = new FsStoreHospital580PrescriptionScrmEntity();
+        prescription.update(new LambdaUpdateWrapper<FsStoreHospital580PrescriptionScrmEntity>()
+                .eq(FsStoreHospital580PrescriptionScrmEntity::getPid, prescriptionVo.getPid())
+                .set(FsStoreHospital580PrescriptionScrmEntity::getAuditStatus, prescriptionVo.getAuditStatus())
+                .set(FsStoreHospital580PrescriptionScrmEntity::getAudiTime, prescriptionVo.getAuditTime())
+                .set(FsStoreHospital580PrescriptionScrmEntity::getAuditApothecaryName, prescriptionVo.getAuditApothecaryName())
+                .set(FsStoreHospital580PrescriptionScrmEntity::getReason, prescriptionVo.getReason())
+                .set(FsStoreHospital580PrescriptionScrmEntity::getDstFilePath, prescriptionVo.getDstFilePath()));
+    }
+
+    @Override
+    public void medicineSync(Map<String, Object> map) {
+        MedicineSyncVo medicineSyncVo = BeanUtil.copyProperties(map, MedicineSyncVo.class);
+        productPushScrm.update(new LambdaUpdateWrapper<FsStoreHospital580ProductPushScrmEntity>()
+                .in(FsStoreHospital580ProductPushScrmEntity::getProductId, medicineSyncVo.getMedicineIds())
+                .set(FsStoreHospital580ProductPushScrmEntity::getPushStatus, medicineSyncVo.getErrCode().equals("0") ? 1 : 2)
+                .set(FsStoreHospital580ProductPushScrmEntity::getErrMsg, medicineSyncVo.getErrMsg()));
+    }
+
+    private R processResult(Result580 result580) {
+        if (0 == result580.getErr()) {
+            return R.ok().put("data", result580.getData());
         }
         return R.error(result580.getErrmsg());
     }
+
 }

+ 47 - 0
fs-user-app/src/main/java/com/fs/framework/aspectj/Hospital580Aspect.java

@@ -0,0 +1,47 @@
+package com.fs.framework.aspectj;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.fs.hospital580.util.ObjectApiSignUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Aspect
+@Component
+public class Hospital580Aspect {
+
+
+    @Value("${hospital580.secretKey:''}")
+    private String SECRETKEY;
+
+
+    @Pointcut("execution(* com.fs.app.controller.Hospital580CallbackController.*(..))")
+    public void myControllerMethods() {
+    }
+
+    /**
+     * 验签 580医院
+     *
+     * @param joinPoint
+     */
+    @Before("myControllerMethods()")
+    public void logBeforeMethodExecution(JoinPoint joinPoint) {
+        String methodName = joinPoint.getSignature().getName();
+        Object[] args = joinPoint.getArgs();
+        Object parm = args[0];
+        log.info("580医院请求:{} {}", methodName, parm);
+        JSONObject entries = JSONUtil.parseObj(parm);
+        String sign1 = entries.getStr("sign");
+        String sign = ObjectApiSignUtil.getSign(parm, SECRETKEY);
+        if (!sign1.equals(sign)) {
+            log.info("验签失败");
+            throw new RuntimeException("验签失败");
+        }
+    }
+}