瀏覽代碼

处方24小时失效

yjwang 1 月之前
父節點
當前提交
148fe15bf9

+ 10 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -55,6 +55,7 @@ import com.fs.his.utils.ConfigUtil;
 import com.fs.his.vo.FsSubOrderResultVO;
 import com.fs.hisStore.service.IFsStoreScrmService;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hospital580.service.Hospital580PrescriptionScrmService;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -199,6 +200,9 @@ public class Task {
 
     public static final String SOP_TEMP_VOICE_KEY = "sop:tempVoice";
 
+    @Autowired
+    private Hospital580PrescriptionScrmService prescriptionScrmService;
+
     /**
      * sop任务token消耗统计
      */
@@ -1548,5 +1552,11 @@ public class Task {
         log.info("定时删除行为轨迹记录 {} 条", deleteCount);
     }
 
+    /**
+     * 处方失效定时任务
+     * **/
+    public void prescriptionInvalidTask(){
+        prescriptionScrmService.prescriptionInvalid();
+    }
 
 }

+ 7 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -1400,4 +1400,11 @@ public interface FsStoreOrderScrmMapper
      */
     @MapKey("orderId")
     Map<Long, Long> batchGetPrescriptionDrugCount(@Param("orderIds") List<Long> orderIds);
+
+    /**
+     * 批量更新订单状态
+     * @param status 状态
+     * @param orderIds 订单数组
+     * **/
+    void batchUpdateOrderStatusById(@Param("orderIds") List<Long> orderIds,@Param("status") String status);
 }

+ 9 - 1
fs-service/src/main/java/com/fs/hospital580/mapper/Hospital580PrescriptionScrmMapper.java

@@ -3,6 +3,9 @@ package com.fs.hospital580.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,5 +17,10 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface Hospital580PrescriptionScrmMapper extends BaseMapper<Hospital580PrescriptionScrmEntity> {
-
+    /**
+     * 获24小时的未支付处方信息审核的处方信息
+     * @param twentyFourHoursAgo 过期日期
+     * @return list
+     * **/
+    List<Hospital580PrescriptionScrmEntity> getExpiredPrescriptionInfo(@Param("twentyFourHoursAgo") String twentyFourHoursAgo);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/hospital580/service/Hospital580PrescriptionScrmService.java

@@ -16,4 +16,9 @@ import javax.validation.constraints.NotNull;
 public interface Hospital580PrescriptionScrmService extends IService<Hospital580PrescriptionScrmEntity> {
 
     boolean isByStoreOrder(Long storeOrderId);
+
+    /**
+     * 处方失效定时任务
+     * **/
+    void prescriptionInvalid();
 }

+ 34 - 0
fs-service/src/main/java/com/fs/hospital580/service/impl/Hospital580PrescriptionScrmServiceImpl.java

@@ -2,10 +2,18 @@ package com.fs.hospital580.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
 import com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity;
 import com.fs.hospital580.mapper.Hospital580PrescriptionScrmMapper;
 import com.fs.hospital580.service.Hospital580PrescriptionScrmService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,9 +25,35 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class Hospital580PrescriptionScrmServiceImpl extends ServiceImpl<Hospital580PrescriptionScrmMapper, Hospital580PrescriptionScrmEntity> implements Hospital580PrescriptionScrmService {
+    @Autowired
+    private FsStoreOrderScrmMapper fsStoreOrderScrmMapper;
 
     @Override
     public boolean isByStoreOrder(Long storeOrderId) {
         return this.count(new LambdaQueryWrapper<Hospital580PrescriptionScrmEntity>().eq(Hospital580PrescriptionScrmEntity::getStoreOrderId, storeOrderId)) > 0;
     }
+
+
+    @Override
+    @Transactional
+    public void prescriptionInvalid() {
+        // 计算24小时前的时间点
+        LocalDateTime twentyFourHoursAgo = LocalDateTime.now().minusHours(24);
+
+        // 定义格式化器(年月日时分秒)
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        // 格式化时间
+        String formattedTime = twentyFourHoursAgo.format(formatter);
+
+        //获取处方信息
+        List<Hospital580PrescriptionScrmEntity> PrescriptionList = baseMapper.getExpiredPrescriptionInfo(formattedTime);
+
+        if(!PrescriptionList.isEmpty()){
+            //获取订单信息
+           List<Long> orderIds=PrescriptionList.stream().map(Hospital580PrescriptionScrmEntity::getStoreOrderId).collect(Collectors.toList());
+           //订单状态取消,开放是订单状态为取消即订单失效
+            fsStoreOrderScrmMapper.batchUpdateOrderStatusById(orderIds,"-3");
+        }
+    }
 }

+ 5 - 0
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -1929,4 +1929,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         AND sps.product_type = 2
         GROUP BY sos.id
     </select>
+
+    <update id="batchUpdateOrderStatusById">
+        update fs_store_order_scrm SET  status = #{status} WHERE
+                                                               id IN <foreach collection="orderIds" item="item" index="index" open="(" separator="," close=")">#{item}</foreach>
+    </update>
 </mapper>

+ 10 - 0
fs-service/src/main/resources/mapper/hospital580/Hospital580PrescriptionScrmMapper.xml

@@ -53,4 +53,14 @@
         pre_id, user_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, pid, hospital_name, store_id, store_name, diagnosis_id, doctor_sign_time, doctor_id, doctor_office, doctor_name, tags, status, memo, remarks, reason, dst_file_path, created_time, serial_no, audit_status, audit_time, audit_apothecary_name, jump_url, prescription_status, store_order_id
     </sql>
 
+    <select id="getExpiredPrescriptionInfo" resultType="com.fs.hospital580.entity.Hospital580PrescriptionScrmEntity">
+        SELECT
+            ps.store_order_id
+        FROM
+            fs_store_hospital580_prescription_scrm ps
+                LEFT JOIN fs_store_order_scrm sos ON ps.store_order_id = sos.id
+        WHERE
+            ps.create_time &lt;= #{twentyFourHoursAgo}
+          AND sos.`status` = 0
+    </select>
 </mapper>