删除自动开方时增加上报处方数据。增加自动结束时上报处方数据,修改上报处方脚本
This commit is contained in:
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Amqp\Consumer;
|
||||
|
||||
use App\Amqp\Producer\AutoFinishInquiryDelayDirectProducer;
|
||||
use App\Constants\HttpEnumCode;
|
||||
use App\Model\DoctorAccount;
|
||||
use App\Model\DoctorAccountDay;
|
||||
use App\Model\OrderEvaluation;
|
||||
@@ -17,11 +19,13 @@ use App\Model\UserDoctor;
|
||||
use App\Model\UserPatient;
|
||||
use App\Services\ImService;
|
||||
use App\Services\MessagePush;
|
||||
use App\Services\ReportRegulatoryService;
|
||||
use App\Utils\Log;
|
||||
use App\Utils\Mask;
|
||||
use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait;
|
||||
use Hyperf\Amqp\Message\ProducerDelayedMessageTrait;
|
||||
use Hyperf\Amqp\Message\Type;
|
||||
use Hyperf\Amqp\Producer;
|
||||
use Hyperf\Amqp\Result;
|
||||
use Hyperf\Amqp\Annotation\Consumer;
|
||||
use Hyperf\Amqp\Message\ConsumerMessage;
|
||||
@@ -54,45 +58,55 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
|
||||
{
|
||||
Log::getInstance("queue-AutoFinishInquiry")->info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE));
|
||||
|
||||
// 检测入参参数
|
||||
if (empty($data['order_inquiry_id'])) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:入参错误");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
// 获取问诊订单数据
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $data['order_inquiry_id'];
|
||||
$order_inquiry = OrderInquiry::getOne($params);
|
||||
if (empty($order_inquiry)) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单数据为空");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
$order_inquiry = $order_inquiry->toArray();
|
||||
|
||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||
if ($order_inquiry['inquiry_status'] != 5) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单未完成,无法结束");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
|
||||
if (!in_array($order_inquiry['inquiry_refund_status'], [0, 4, 5])) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单正在申请退款");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
if (empty($order_inquiry['doctor_id'])) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("医生id为空");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
|
||||
Db::beginTransaction();
|
||||
try {
|
||||
// 检测入参参数
|
||||
if (empty($data['order_inquiry_id'])) {
|
||||
// 检测执行次数
|
||||
$result = $this->checkExecutionCount($data['order_inquiry_id']);
|
||||
if (empty($result)) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:入参错误");
|
||||
return Result::DROP;
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("检测订单执行次数错误");
|
||||
return Result::ACK;
|
||||
}
|
||||
|
||||
// 获取问诊订单数据
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $data['order_inquiry_id'];
|
||||
$order_inquiry = OrderInquiry::getOne($params);
|
||||
if (empty($order_inquiry)) {
|
||||
// 超出执行次数
|
||||
if ($result['code'] == 2){
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单数据为空");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
$order_inquiry = $order_inquiry->toArray();
|
||||
|
||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||
if ($order_inquiry['inquiry_status'] != 5) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单未完成,无法结束");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
|
||||
if (!in_array($order_inquiry['inquiry_refund_status'], [0, 4, 5])) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单正在申请退款");
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
if (empty($order_inquiry['doctor_id'])) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:医生id为空");
|
||||
return Result::DROP;
|
||||
return Result::ACK;
|
||||
}
|
||||
|
||||
// 处理统计问题
|
||||
@@ -101,16 +115,16 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
|
||||
$res = $this->handleDoctorAccount($order_inquiry);
|
||||
if (!$res) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户总表失败");
|
||||
return Result::DROP;
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户总表失败");
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
|
||||
// 处理医生账户表-日
|
||||
$res = $this->handleDoctorAccountDay($order_inquiry);
|
||||
if (!$res) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户表-日失败");
|
||||
return Result::DROP;
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户表-日失败");
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,12 +149,22 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
|
||||
// 计算医生平均响应时间
|
||||
$this->computeDoctorAvgPesponseTime($order_inquiry['doctor_id']);
|
||||
|
||||
// 新增上报监管平台数据
|
||||
$reportRegulatoryService = new ReportRegulatoryService();
|
||||
$res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']);
|
||||
if (!$res){
|
||||
// 新增上报失败
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败");
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->info("成功");
|
||||
} catch (\Exception $e) {
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error("错误:" . $e->getMessage());
|
||||
return Result::ACK; // 重回队列
|
||||
return Result::REQUEUE; // 重回队列
|
||||
}
|
||||
|
||||
// 推送消息
|
||||
@@ -259,11 +283,6 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
|
||||
return true;
|
||||
}
|
||||
|
||||
// 获取用户数据
|
||||
$params = array();
|
||||
$params['patient_id'] = $order_inquiry['patient_id'];
|
||||
$user_patient = UserPatient::getOne($params);
|
||||
|
||||
// 未评价
|
||||
$data = array();
|
||||
$data['doctor_id'] = $order_inquiry['doctor_id'];
|
||||
@@ -600,4 +619,53 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测执行次数
|
||||
* @param string $redis_key
|
||||
* @return array
|
||||
*/
|
||||
protected function checkExecutionCount(string $redis_key): array
|
||||
{
|
||||
// code:0:异常 1:正常 2:超出最大执行次数
|
||||
$result = array();
|
||||
$result['code'] = 0;
|
||||
$result['message'] = "";
|
||||
|
||||
try {
|
||||
$redis = $this->container->get(Redis::class);
|
||||
}catch (\Throwable $e) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage());
|
||||
$result['message'] = $e->getMessage();
|
||||
return $result;
|
||||
}
|
||||
|
||||
try {
|
||||
$redis_value = $redis->get($redis_key);
|
||||
if (empty($redis_value)) {
|
||||
$redis->set($redis_key, 1, 60 * 60 * 24 * 1);
|
||||
|
||||
$result['code'] = 1;
|
||||
return $result;
|
||||
}
|
||||
|
||||
// 执行次数超出4次
|
||||
if ($redis_value > 4) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->info("超出最大执行次数");
|
||||
// 加入短信队列,通知管理员
|
||||
|
||||
$result['code'] = 2;
|
||||
$result['message'] = "超出最大执行次数";
|
||||
return $result;
|
||||
}
|
||||
|
||||
$redis->incr($redis_key);
|
||||
} catch (\Throwable $e) {
|
||||
Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage());
|
||||
$result['message'] = $e->getMessage();
|
||||
return $result;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,14 +257,6 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage
|
||||
// 修改处方表为通过
|
||||
$this->modifyOrderPrescription($data['order_prescription_id'],1);
|
||||
|
||||
// 增加上报监管平台表
|
||||
$res = $this->addReportRegulatory($order_inquiry['order_inquiry_id'],$order_prescription['order_prescription_id']);
|
||||
if (!$res){
|
||||
Db::rollBack();
|
||||
Log::getInstance("queue-AutoPharmacistCaVerify")->error("错误:增加监管平台上报表失败");
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
Log::getInstance("queue-AutoPharmacistCaVerify")->info("成功");
|
||||
} catch (\Throwable $e) {
|
||||
@@ -479,31 +471,4 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage
|
||||
|
||||
OrderPrescription::edit($params,$data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加上报监管平台表
|
||||
* @param string $order_inquiry_id
|
||||
* @param string $order_prescription_id
|
||||
* @return bool
|
||||
*/
|
||||
protected function addReportRegulatory(string $order_inquiry_id,string $order_prescription_id): bool
|
||||
{
|
||||
// 检测是否已添加
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||
$report_regulatory = ReportRegulatory::getOne($params);
|
||||
if (!empty($report_regulatory)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$data = array();
|
||||
$data['order_inquiry_id'] = $order_inquiry_id;
|
||||
$data['order_prescription_id'] = $order_prescription_id;
|
||||
$report_regulatory = ReportRegulatory::addReportRegulatory($data);
|
||||
if (empty($report_regulatory)){
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user