获取剩余药品数量修改

This commit is contained in:
2024-04-24 17:46:30 +08:00
parent 5103fe875f
commit ace286e096
5 changed files with 164 additions and 108 deletions
+75 -61
View File
@@ -19,6 +19,7 @@ use App\Model\OrderPrescription;
use App\Model\OrderProduct;
use App\Model\OrderProductItem;
use App\Model\OrderServicePackage;
use App\Model\OrderServicePackageCase;
use App\Model\OrderServicePackageDetail;
use App\Model\OrderServicePackageInquiry;
use App\Model\OrderServicePackageProduct;
@@ -1139,7 +1140,7 @@ class MessagePush extends BaseService
$producer = ApplicationContext::getContainer()->get(Producer::class);
$result = $producer->produce($message);
if (!$result) {
Log::getInstance("MessagePush")->error("错误:加入站内推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE));
Log::getInstance("MessagePush")->error(json_encode($data, JSON_UNESCAPED_UNICODE));
}
// 订阅
@@ -3053,18 +3054,26 @@ class MessagePush extends BaseService
public function doctorServicePackageFinish(): void
{
try {
$params = array();
$params['order_service_no'] = $this->order['order_no'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
Log::getInstance("MessagePush")->error("服务包订单为空");
return;
}
// 获取问诊订单关联病例
$params = array();
$params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
$order_inquiry_case = OrderInquiryCase::getOne($params);
if (empty($order_inquiry_case)) {
Log::getInstance("MessagePush")->error("问诊病例为空");
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_case= OrderServicePackageCase::getOne($params);
if (empty($order_service_package_case)) {
Log::getInstance("MessagePush")->error("服务包病例为空");
return;
}
// 获取医生数据
$params = array();
$params['doctor_id'] = $this->order_inquiry['doctor_id'];
$params['doctor_id'] = $order_service_package['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("MessagePush")->error("医生数据为空");
@@ -3072,17 +3081,24 @@ class MessagePush extends BaseService
}
// 转换问诊订单订单接诊方式-字符串
$inquiry_mode = orderServiceTypeToString($this->order_inquiry['inquiry_mode']);
$order_service_type = orderServiceTypeToString($order_service_package['order_service_type']);
if ($order_service_package['order_service_type'] == 1){
$inquiry_mode = 8;
}else{
$inquiry_mode = 9;
}
// 站内
$data = array();
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 1;
$data['inquiry_type'] = $this->order_inquiry['inquiry_type']; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
$data['inquiry_type'] = 1; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
$data['inquiry_mode'] = $inquiry_mode; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_brief_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$data['notice_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$data['notice_content'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@@ -3093,7 +3109,7 @@ class MessagePush extends BaseService
// 订阅
// 问诊内容-病情主诉
$disease_desc = $order_inquiry_case['disease_desc'];
$disease_desc = $order_service_package_case['disease_desc'];
if (!empty($disease_desc)) {
if (strlen($disease_desc) > 15) {
$disease_desc = mb_substr($disease_desc, 0, 15);
@@ -3109,7 +3125,7 @@ class MessagePush extends BaseService
$sub_data['wx_template_id'] = "G1RIs0RYqsTQ2CuPQWalIMyb6_deuEEbJfajfhGvNzc"; // 咨询提醒
$sub_data['params']['page'] = "Pages/yishi/wenzhen_v2/wenzhen";
$sub_data['params']['data'] = [
"thing1" => "{$inquiry_mode}服务已完成",// 提醒内容
"thing1" => "{$order_service_type}服务已完成",// 提醒内容
"name2" => $this->order_inquiry['patient_name'],// 患者姓名
"thing4" => $disease_desc,// 病情描述
"thing6" => "您可以提醒患者进行续费",// 提示说明
@@ -3181,6 +3197,7 @@ class MessagePush extends BaseService
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 3;
$data['notice_system_type'] = 1;
$data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。";
$data['notice_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。";
@@ -3195,7 +3212,7 @@ class MessagePush extends BaseService
$link_params['patient_user_id'] = $this->order_inquiry['user_id'];
$data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数
$data['button_type'] = 4; // 问诊详情
$data['button_type'] = 4;
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@@ -3269,10 +3286,13 @@ class MessagePush extends BaseService
// 转换服务包订单类型为汉字
$order_type = orderServiceTypeToString($this->order_service_package['order_service_type']);
// 获取服务包当月已问诊次数
if ($order_service_package_detail['monthly_frequency'] != 0 && !empty($this->order_service_package['start_time'])) {
$OrderServicePackageService = new OrderServicePackageService();
$OrderServicePackageService = new OrderServicePackageService();
if ($order_service_package_detail['monthly_frequency'] != 0) {
// 获取服务包当月已问诊次数
$month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($this->order_service_package['pay_time'],$this->order_service_package['order_service_type'],$this->order_service_package['user_id'], $this->order_service_package['doctor_id']);
// 获取服务包当月剩余问诊次数
$remaining_inquiry_count = $order_service_package_detail['monthly_frequencys'] - $month_inquiry_count;
if ($remaining_inquiry_count < 0){
$remaining_inquiry_count = 0;
@@ -3284,19 +3304,11 @@ class MessagePush extends BaseService
// 获取剩余药品数量
$remaining_quantity = 0;
if ($this->order_service_package['order_service_type'] == 1){
$OrderServicePackageService = new OrderServicePackageService();
$params = array();
$params['order_service_id'] = $this->order_service_package['order_service_id'];
$order_service_package_products = OrderServicePackageProduct::getList($params);
if (!empty($order_service_package_products)){
foreach ($order_service_package_products as $order_service_package_product){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']);
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity);
}
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
}
@@ -3305,6 +3317,7 @@ class MessagePush extends BaseService
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 3;
$data['notice_system_type'] = 1;
$data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。";
$data['notice_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。";
@@ -3397,14 +3410,12 @@ class MessagePush extends BaseService
$data['link_type'] = 15;
$link_params = array();
$link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
$link_params['order_no'] = $this->order['order_no'];
$link_params['inquiry_type'] = $this->order_inquiry['inquiry_type'];
$link_params['doctor_user_id'] = $user_doctor['user_id'];
$link_params['patient_user_id'] = $this->order_inquiry['user_id'];
$link_params['patient_user_id'] = $this->order_service_package['user_id'];
$data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数
$data['button_type'] = 4; // 问诊详情
$data['button_type'] = 4;
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@@ -3426,17 +3437,6 @@ class MessagePush extends BaseService
}
// 订阅
$sub_data = array();
$sub_data['push_user_id'] = $this->user['user_id'];
$sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒
$sub_data['params']['page'] = "patient/pages/orderDetail/orderDetail?order_inquiry_id={$this->order_inquiry['order_inquiry_id']}";
$sub_data['params']['data'] = [
"thing1" => "使用{$order_type}服务中问诊",// 问诊内容
"thing2" => "医生已接诊",// 提醒内容
"name3" => (string)$user_doctor['user_name'],// 问诊医生
"thing4" => "点击查看详情",// 提示说明
];
$sub_data = array();
$sub_data['push_user_id'] = $this->user['user_id'];
$sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒
@@ -3467,9 +3467,10 @@ class MessagePush extends BaseService
/**
* 患者-通知患者服务包药品未使用完
* 站内
* @param string|int $remaining_quantity
* @return void
*/
public function patientServicePackageHaveProduct(): void
public function patientServicePackageHaveProduct(string|int $remaining_quantity = 0): void
{
try {
// 获取医生数据
@@ -3481,24 +3482,37 @@ class MessagePush extends BaseService
return;
}
$OrderServicePackageService = new OrderServicePackageService();
if ($remaining_quantity == 0){
$OrderServicePackageService = new OrderServicePackageService();
// 获取剩余药品数量
$remaining_quantity = 0;
$params = array();
$params['order_service_id'] = $this->order_service_package['order_service_id'];
$order_service_package_products = OrderServicePackageProduct::getList($params);
if (!empty($order_service_package_products)){
foreach ($order_service_package_products as $order_service_package_product){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']);
// 获取服务包订单编号-通过问诊订单id
$order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($this->order_inquiry['inquiry_no']);
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity);
if ($remaining_quantity > 0){
break;
}
// 获取服务包订单
$params = array();
$params['order_service_no'] = $order_service_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
Log::getInstance("MessagePush")->error("服务包订单错误");
return;
}
// 获取服务包订单详情
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
Log::getInstance("MessagePush")->error("服务包订单详情错误");
return;
}
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
}
// 站内