浏览代码

fix: yzt bug修复

xdd 1 月之前
父节点
当前提交
c45e08c6f8

+ 9 - 0
fs-service/src/main/java/com/fs/his/domain/FsPrescribe.java

@@ -184,4 +184,13 @@ public class FsPrescribe extends BaseEntity
      */
     private Integer storeOrderPaid;
 
+    /**
+     * 失败消息
+     */
+    private String failMsg;
+    /**
+     * 次数
+     */
+    private Long count;
+
 }

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

@@ -17,6 +17,9 @@ import org.apache.ibatis.annotations.Select;
  */
 public interface FsPrescribeMapper
 {
+
+    @Select("SELECT * FROM fs_prescribe WHERE `status`=0 and count < 3")
+    List<FsPrescribe> selectFsPrescribeNoAudit();
     /**
      * 查询处方
      *

+ 20 - 10
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.his.service.impl;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
@@ -33,6 +34,7 @@ import com.fs.system.oss.OSSFactory;
 import com.google.zxing.WriterException;
 import jodd.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -906,26 +908,34 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
     public void auditPrescribe() {
         log.info("自动审方定时任务开始执行");
 
-        List<FsPrescribe> FsPrescribes=fsPrescribeDrugMapper.selectFsPrescribeNoAudit();
+        List<FsPrescribe> FsPrescribes=fsPrescribeMapper.selectFsPrescribeNoAudit();
         log.info("查询到待审核处方数量:{}", FsPrescribes.size());
 
         IFsPrescribeService fsPrescribeService = (IFsPrescribeService) AopContext.currentProxy();
         for (FsPrescribe fsPrescribe : FsPrescribes) {
-            log.info("开始处理处方单,处方ID:{}", fsPrescribe.getPrescribeId());
+            FsPrescribeAuditParam param = null;
+            try{
+                log.info("开始处理处方单,处方ID:{}", fsPrescribe.getPrescribeId());
 
-            Long id = doctorMapper.selectFsDoctorType2Ids(fsPrescribe.getPrescribeType());
-            log.info("获取到处方类型对应的医生ID:{}", id);
+                Long id = doctorMapper.selectFsDoctorType2Ids(fsPrescribe.getPrescribeType());
+                if(ObjectUtils.isNull(id)){
+                    throw new IllegalArgumentException("获取处方类型对应的医生/药师失败!");
+                }
+                log.info("获取到处方类型对应的医生ID:{}", id);
 
-            FsPrescribeAuditParam param=new FsPrescribeAuditParam();
-            param.setDoctorId(id);
-            param.setStatus(1);
-            param.setPrescribeId(fsPrescribe.getPrescribeId());
-            log.info("构建审方参数:医生ID={}, 处方ID={}, 状态={}", id, fsPrescribe.getPrescribeId(), 1);
+                param=new FsPrescribeAuditParam();
+                param.setDoctorId(id);
+                param.setStatus(1);
+                param.setPrescribeId(fsPrescribe.getPrescribeId());
+                log.info("构建审方参数:医生ID={}, 处方ID={}, 状态={}", id, fsPrescribe.getPrescribeId(), 1);
 
-            try{
                 fsPrescribeService.generateOrderAndPres(param, id);
             }catch (Throwable e) {
                 log.error("生成处方订单和处方图片失败!参数: {}",param,e);
+                fsPrescribe.setCount(fsPrescribe.getCount()+1);
+                fsPrescribe.setFailMsg(String.format("生成处方订单和处方图片失败!参数: %s,异常:%s",param, ExceptionUtils.getFullStackTrace(e)));
+            } finally {
+                fsPrescribeMapper.updateFsPrescribe(fsPrescribe);
             }
 
         }

+ 3 - 3
fs-service/src/main/resources/mapper/his/FsPrescribeDrugMapper.xml

@@ -24,10 +24,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="remark"    column="remark"    />
         <result property="drugType"    column="drug_type"    />
         <result property="isDrug"    column="is_drug"    />
+        <result property="failMsg"    column="fail_msg"    />
+        <result property="count"    column="count"    />
     </resultMap>
 
     <sql id="selectFsPrescribeDrugVo">
-        select drug_id, prescribe_id,is_drug, drug_name, drug_spec, usage_method, usage_frequency_unit, usage_per_use_count, usage_per_use_unit, usage_days, drug_num,drug_price, drug_unit, instructions,drug_img_url, product_id,product_attr_value_id,remark,drug_type from fs_prescribe_drug
+        select drug_id, prescribe_id,is_drug, drug_name, drug_spec, usage_method, usage_frequency_unit, usage_per_use_count, usage_per_use_unit, usage_days, drug_num,drug_price, drug_unit, instructions,drug_img_url, product_id,product_attr_value_id,remark,drug_type,fail_msg,count from fs_prescribe_drug
     </sql>
 
     <select id="selectFsPrescribeDrugList" parameterType="FsPrescribeDrug" resultMap="FsPrescribeDrugResult">
@@ -114,8 +116,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="drugImgUrl != null">drug_img_url = #{drugImgUrl},</if>
             <if test="productAttrValueId != null">product_attr_value_id = #{productAttrValueId},</if>
             <if test="remark != null">remark = #{remark},</if>
-            <if test="drugType != null">drug_type = #{drugType},</if>
-            <if test="isDrug != null">is_drug = #{isDrug},</if>
         </trim>
         where drug_id = #{drugId}
     </update>

+ 8 - 1
fs-service/src/main/resources/mapper/his/FsPrescribeMapper.xml

@@ -231,6 +231,8 @@
             <if test="prescribeImgStoreUrl != null">prescribe_img_store_url = #{prescribeImgStoreUrl},</if>
             <if test="userConfirm != null">user_confirm = #{userConfirm},</if>
             <if test="storeOrderPaid != null">store_order_paid = #{storeOrderPaid},</if>
+            <if test="failMsg != null">fail_msg = #{failMsg},</if>
+            <if test="count != null">`count` = #{count},</if>
         </trim>
         where prescribe_id = #{prescribeId}
     </update>
@@ -307,7 +309,12 @@
         p.create_time desc
     </select>
     <select id="selectFsPrescribeListVO" resultType="com.fs.his.vo.FsPrescribeListVO">
-        select so.*,us.nick_name,dc.doctor_name,dp.doctor_name doctor_drug_name,fso.order_code,fso.`status` order_status,fse.store_name FROM fs_prescribe so  LEFT JOIN fs_user us ON us.user_id=so.user_id LEFT JOIN fs_doctor dc ON dc.doctor_id = so.doctor_id LEFT JOIN fs_doctor dp ON dp.doctor_id =so.drug_doctor_id LEFT JOIN fs_store_order fso ON fso.order_id = so.store_order_id LEFT JOIN fs_store fse ON fse.store_id = so.store_id
+        select so.*,us.nick_name,dc.doctor_name,dp.doctor_name doctor_drug_name,fso.order_code,fso.`status` order_status,fse.store_name FROM fs_prescribe so
+            LEFT JOIN fs_user us ON us.user_id=so.user_id
+            LEFT JOIN fs_doctor dc ON dc.doctor_id = so.doctor_id
+            LEFT JOIN fs_doctor dp ON dp.doctor_id =so.drug_doctor_id
+            LEFT JOIN fs_store_order fso ON fso.order_id = so.store_order_id
+            LEFT JOIN fs_store fse ON fse.store_id = so.store_id
         <where>
             <if test="companyId != null "> and fso.company_id = #{companyId}</if>
             <if test="companyUserId != null "> and fso.company_user_id = #{companyUserId}</if>