瀏覽代碼

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

zhangqin 1 月之前
父節點
當前提交
0d58e2f9c5
共有 18 個文件被更改,包括 337 次插入21 次删除
  1. 15 0
      fs-service/src/main/java/com/fs/hospital580/dto/BeforeAiData.java
  2. 3 2
      fs-service/src/main/java/com/fs/hospital580/dto/Medicine.java
  3. 3 1
      fs-service/src/main/java/com/fs/hospital580/dto/MedicineDto.java
  4. 1 6
      fs-service/src/main/java/com/fs/hospital580/dto/PreDemandDto.java
  5. 1 1
      fs-service/src/main/java/com/fs/hospital580/dto/Result580.java
  6. 4 5
      fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580OrderScrmEntity.java
  7. 38 0
      fs-service/src/main/java/com/fs/hospital580/mapper/MedicineMapper.java
  8. 3 0
      fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580ScrmService.java
  9. 1 1
      fs-service/src/main/java/com/fs/hospital580/service/Hospital580Service.java
  10. 33 2
      fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ScrmServiceImpl.java
  11. 1 1
      fs-service/src/main/java/com/fs/hospital580/service/impl/Hospital580ServiceImpl.java
  12. 19 0
      fs-service/src/main/java/com/fs/hospital580/vo/BeforeAiDataVo.java
  13. 84 0
      fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580OrderScrmVo.java
  14. 2 2
      fs-service/src/main/resources/mapper/hospital580/FsStoreHospital580OrderScrmMapper.xml
  15. 50 0
      fs-user-app/src/main/java/com/fs/app/controller/Hospital580CallbackController.java
  16. 32 0
      fs-user-app/src/main/java/com/fs/app/controller/Hospital580Controller.java
  17. 8 0
      fs-user-app/src/main/java/com/fs/app/facade/Hospital580FacadeService.java
  18. 39 0
      fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

+ 15 - 0
fs-service/src/main/java/com/fs/hospital580/dto/BeforeAiData.java

@@ -0,0 +1,15 @@
+package com.fs.hospital580.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 问诊题目
+ */
+@Data
+public class BeforeAiData implements Serializable {
+    private Integer subjectId;              // 题目ID
+    private String answer;                  // 题目答案
+    private String answerMedicine;          // 存问诊用药信息选择
+}

+ 3 - 2
fs-service/src/main/java/com/fs/hospital580/dto/Medicine.java

@@ -3,6 +3,7 @@ package com.fs.hospital580.dto;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 public class Medicine implements Serializable {
@@ -18,8 +19,8 @@ public class Medicine implements Serializable {
     private String medicineId;          // 第三方药品编码(唯一)
     private String barCode;             // 商品条形码值
     private Integer isPrescription;     // 是否处方药(0为是,1为否)
-    private Double price;               // 价格
-    private Integer stock;              // 库存
+    private BigDecimal price;               // 价格
+    private Long stock;              // 库存
     private String specialCommonName;   // 特殊通用名
     private String specialSpec;         // 特殊规格
 }

+ 3 - 1
fs-service/src/main/java/com/fs/hospital580/dto/MedicineDto.java

@@ -1,14 +1,16 @@
 package com.fs.hospital580.dto;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
 import java.util.List;
 
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class MedicineDto extends CommonDto implements Serializable {
     private List<Medicine> medicineList;
     // 药品同步结果通知地址
     private String callbackUrl;
 
-}
+}

+ 1 - 6
fs-service/src/main/java/com/fs/hospital580/dto/PreDemandDto.java

@@ -30,9 +30,4 @@ public class PreDemandDto extends CommonDto implements Serializable {
     private String thirdReturnUrl;          // 结束问诊后跳回三方的地址
 }
 
-@Data
-class BeforeAiData implements Serializable {
-    private Integer subjectId;              // 题目ID
-    private String answer;                  // 题目答案
-    private String answerMedicine;          // 存问诊用药信息选择
-}
+

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

@@ -6,7 +6,7 @@ import java.io.Serializable;
 
 @Data
 public class Result580 implements Serializable {
-    // 1失败
+    // 1失败 0成功
     private Integer err;
     private String errmsg;
     private String data;

+ 4 - 5
fs-service/src/main/java/com/fs/hospital580/entity/FsStoreHospital580OrderScrmEntity.java

@@ -96,11 +96,6 @@ public class FsStoreHospital580OrderScrmEntity extends Model<FsStoreHospital580O
     @ApiModelProperty("关系:1-本人,2-父母,3-配偶,4-子女,5-其他")
     @TableField("relationship")
     private Byte relationship;
-
-    @ApiModelProperty("第三方唯一订单号")
-    @TableField("biz_order_id")
-    private String bizOrderId;
-
     @ApiModelProperty("就诊人住址(最多30个字符)")
     @TableField("user_family_addr")
     private String userFamilyAddr;
@@ -121,6 +116,10 @@ public class FsStoreHospital580OrderScrmEntity extends Model<FsStoreHospital580O
     @TableField("update_time")
     private LocalDateTime updateTime;
 
+    @ApiModelProperty("问诊知情确认页面URL")
+    @TableField("jump_url")
+    private String jumpUrl;
+
     @Override
     public Serializable pkVal() {
         return this.orderId;

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

@@ -0,0 +1,38 @@
+package com.fs.hospital580.mapper;
+
+import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hospital580.dto.Medicine;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Named;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface MedicineMapper {
+
+    MedicineMapper INSTANCE = Mappers.getMapper(MedicineMapper.class);
+
+    @Mapping(source = "", target = "categoryId")
+    @Mapping(source = "productName", target = "commonName")
+    @Mapping(source = "productName", target = "name")
+    @Mapping(source = "dosage_form", target = "dosage")
+    @Mapping(source = "dosage", target = "spec")
+    @Mapping(source = "prescribeSpec", target = "packingSpec")
+    @Mapping(source = "manufacturer", target = "manufacturer")
+    @Mapping(source = "drugRegCertNo", target = "approvalNumber")
+    @Mapping(source = "unitName", target = "unit")
+    @Mapping(source = "productId", target = "medicineId", qualifiedByName = "longToString")
+    @Mapping(source = "barCode", target = "barCode")
+    @Mapping(source = "productType", target = "isPrescription")
+    @Mapping(source = "price", target = "price")
+    @Mapping(source = "stock", target = "stock", qualifiedByName = "longToInteger")
+    Medicine toMedicine(FsStoreProductScrm product);
+
+    /**
+     * 将Long转换为String
+     */
+    @Named("longToInteger")
+    default String longToString(Long value) {
+        return value != null ? String.valueOf(value) : null;
+    }
+}

+ 3 - 0
fs-service/src/main/java/com/fs/hospital580/service/FsStoreHospital580ScrmService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.hisStore.domain.FsStoreProductScrm;
 import com.fs.hospital580.entity.FsStoreHospital580ScrmEntity;
 
+import java.util.List;
+
 /**
  * <p>
  * 请求580医院记录表 服务类
@@ -17,4 +19,5 @@ public interface FsStoreHospital580ScrmService extends IService<FsStoreHospital5
      * 同步药品信息到580医院
      */
     void SynDrugToHospital580(FsStoreProductScrm productScrm);
+    void SynDrugToHospital580(List<FsStoreProductScrm> productScrms);
 }

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

@@ -11,7 +11,7 @@ public interface Hospital580Service {
      *
      * @param dto
      */
-    Result580 medicine(MedicineDto dto);
+    Result580 syncMedicine(MedicineDto dto);
 
     /**
      * 4.2新 新增问诊单接口-580提供

+ 33 - 2
fs-service/src/main/java/com/fs/hospital580/service/impl/FsStoreHospital580ScrmServiceImpl.java

@@ -2,13 +2,20 @@ package com.fs.hospital580.service.impl;
 
 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.entity.FsStoreHospital580ScrmEntity;
 import com.fs.hospital580.mapper.FsStoreHospital580ScrmMapper;
+import com.fs.hospital580.mapper.MedicineMapper;
 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.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 请求580医院记录表 服务实现类
@@ -25,6 +32,30 @@ public class FsStoreHospital580ScrmServiceImpl extends ServiceImpl<FsStoreHospit
 
     @Override
     public void SynDrugToHospital580(FsStoreProductScrm productScrm) {
-        //hospital580Service.medicine();
+        MedicineDto medicineDto = new MedicineDto();
+        // 使用MapStruct自动映射
+        Medicine medicine = MedicineMapper.INSTANCE.toMedicine(productScrm);
+        medicineDto.setMedicineList(Arrays.asList(medicine));
+        syncMedicine(medicineDto);
+    }
+
+    @Override
+    public void SynDrugToHospital580(List<FsStoreProductScrm> productScrms) {
+        MedicineDto medicineDto = new MedicineDto();
+        medicineDto.setMedicineList(convertToMedicines(productScrms));
+        syncMedicine(medicineDto);
+    }
+
+    private void syncMedicine(MedicineDto medicineDto) {
+        hospital580Service.syncMedicine(medicineDto);
+    }
+
+    /**
+     * 批量转换FsStoreProductScrm列表到Medicine列表
+     */
+    public List<Medicine> convertToMedicines(List<FsStoreProductScrm> products) {
+        return products.stream()
+                .map(MedicineMapper.INSTANCE::toMedicine)
+                .collect(Collectors.toList());
     }
-}
+}

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

@@ -33,7 +33,7 @@ public class Hospital580ServiceImpl implements Hospital580Service {
     private static final String PREDEMAND_PATH = "/v1_0/ehospital/openapi/kz/web/predemand/initPreDemand";
 
     @Override
-    public Result580 medicine(MedicineDto dto) {
+    public Result580 syncMedicine(MedicineDto dto) {
         return requestResult580(dto, MEDICINE_PATH);
 
     }

+ 19 - 0
fs-service/src/main/java/com/fs/hospital580/vo/BeforeAiDataVo.java

@@ -0,0 +1,19 @@
+package com.fs.hospital580.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 问诊题目请求
+ */
+@Data
+@ApiModel("问诊答案请求对象")
+public class BeforeAiDataVo {
+    @ApiModelProperty("题目ID")
+    private Integer subjectId;
+    @ApiModelProperty("题目答案")
+    private String answer;
+    @ApiModelProperty("存问诊用药信息选择")
+    private String answerMedicine;
+}

+ 84 - 0
fs-service/src/main/java/com/fs/hospital580/vo/FsStoreHospital580OrderScrmVo.java

@@ -0,0 +1,84 @@
+package com.fs.hospital580.vo;
+
+import com.fs.hospital580.dto.BeforeAiData;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+@Getter
+@Setter
+@ApiModel("问诊请求对象")
+public class FsStoreHospital580OrderScrmVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("第三方系统问诊人唯一标识(患者手机号)")
+    private String memberId;
+
+    @ApiModelProperty("用户对应小程序或公众号的openid")
+    private String openid;
+
+    @ApiModelProperty("第三方系统问诊人头像")
+    private String headimgurl;
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("门店ID")
+    private Integer storeId;
+
+    @ApiModelProperty("服务类型:0-图文,1-视频")
+    private Byte serviceType;
+
+    @ApiModelProperty("是否需要审方:0-不需要,1-需要")
+    private Byte isExamine;
+
+    @ApiModelProperty("是否孕妇:0-否,1-是")
+    private Byte isPregnantWoman;
+
+    @ApiModelProperty("是否哺乳期:0-否,1-是")
+    private Byte isLactation;
+
+    @ApiModelProperty("来源:0-微信小程序,1-APP,2-H5,3-支付宝小程序")
+    private Byte souceFrom;
+
+    @ApiModelProperty("用药人姓名")
+    private String userFamilyName;
+
+    @ApiModelProperty("身份证")
+    private String userFamilyIdCard;
+
+    @ApiModelProperty("年龄")
+    private Integer userFamilyAge;
+
+    @ApiModelProperty("性别:1-男,2-女")
+    private Byte userFamilyGender;
+
+    @ApiModelProperty("手机号码")
+    private String userFamilyPhone;
+
+    @ApiModelProperty("关系:1-本人,2-父母,3-配偶,4-子女,5-其他")
+    private Byte relationship;
+
+    @ApiModelProperty("就诊人住址(最多30个字符)")
+    private String userFamilyAddr;
+
+    @ApiModelProperty("图片附件URL,多个以英文逗号隔开")
+    private String imgList;
+
+    @ApiModelProperty("结束问诊后跳回三方的地址")
+    private String thirdReturnUrl;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("更新时间")
+    private LocalDateTime updateTime;
+    @ApiModelProperty("问诊题目")
+    private List<BeforeAiDataVo> beforeAiDataList; // 问诊前面的题目,传固定的五道题
+}

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

@@ -21,17 +21,17 @@
         <result column="user_family_gender" property="userFamilyGender" />
         <result column="user_family_phone" property="userFamilyPhone" />
         <result column="relationship" property="relationship" />
-        <result column="biz_order_id" property="bizOrderId" />
         <result column="user_family_addr" property="userFamilyAddr" />
         <result column="img_list" property="imgList" />
         <result column="third_return_url" property="thirdReturnUrl" />
         <result column="create_time" property="createTime" />
         <result column="update_time" property="updateTime" />
+        <result column="jump_url" property="jumpUrl" />
     </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, biz_order_id, user_family_addr, img_list, third_return_url, create_time, update_time
+        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
     </sql>
 
 </mapper>

+ 50 - 0
fs-user-app/src/main/java/com/fs/app/controller/Hospital580CallbackController.java

@@ -0,0 +1,50 @@
+package com.fs.app.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 580医院回调接口
+ */
+@RestController
+@RequestMapping("/hospital580/sync")
+@Slf4j
+public class Hospital580CallbackController {
+
+    /**
+     * 同步药品信息接口回调
+     */
+    @GetMapping("/medicine")
+    public void medicineSync(@RequestBody Map<String, Object> map) {
+        log.info("同步药品信息接口回调:{}", map);
+    }
+
+    /**
+     * 处方推送接口
+     */
+    @GetMapping("/prescription")
+    public void prescription(@RequestBody Map<String, Object> map) {
+        log.info("处方推送接口:{}", map);
+    }
+
+    /**
+     * 医生拒绝开方推送接口
+     */
+    @GetMapping("/refusePrescription")
+    public void refusePrescription(@RequestBody Map<String, Object> map) {
+        log.info("医生拒绝开方推送接口:{}", map);
+    }
+
+    /**
+     * 处方药师审核
+     */
+    @GetMapping("/reviewPrescription")
+    public void reviewPrescription(@RequestBody Map<String, Object> map) {
+        log.info("处方药师审核:{}", map);
+    }
+}

+ 32 - 0
fs-user-app/src/main/java/com/fs/app/controller/Hospital580Controller.java

@@ -0,0 +1,32 @@
+package com.fs.app.controller;
+
+import com.fs.app.facade.Hospital580FacadeService;
+import com.fs.common.core.domain.R;
+import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 问诊
+ */
+@RestController
+@RequestMapping("/hospital580/app")
+@Slf4j
+public class Hospital580Controller {
+
+    @Autowired
+    private Hospital580FacadeService hospital580FacadeService;
+    /**
+     * 新增问诊单接口
+     */
+    @PostMapping ("/initPreDemand")
+    public R initPreDemand(@RequestBody FsStoreHospital580OrderScrmVo vo) {
+        return hospital580FacadeService.initPreDemand(vo);
+    }
+
+
+}

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

@@ -0,0 +1,8 @@
+package com.fs.app.facade;
+
+import com.fs.common.core.domain.R;
+import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
+
+public interface Hospital580FacadeService {
+    R initPreDemand(FsStoreHospital580OrderScrmVo vo);
+}

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

@@ -0,0 +1,39 @@
+package com.fs.app.facade.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.fs.app.facade.Hospital580FacadeService;
+import com.fs.common.core.domain.R;
+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.service.Hospital580Service;
+import com.fs.hospital580.vo.FsStoreHospital580OrderScrmVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
+    @Autowired
+    private Hospital580Service hospital580Service;
+    @Autowired
+    private FsStoreHospital580OrderScrmService fsStoreHospital580OrderScrmService;
+    @Override
+    public R initPreDemand(FsStoreHospital580OrderScrmVo vo) {
+        FsStoreHospital580OrderScrmEntity order = new FsStoreHospital580OrderScrmEntity();
+        BeanUtil.copyProperties(vo, order);
+        order.insert();
+        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 R.error(result580.getErrmsg());
+    }
+}