From 029c6249fd55f7d26c55525c96de2e3a8828141a Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 19 May 2023 16:39:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=A9=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oPharmacistCaVerifyDelayDirectConsumer.php | 38 +++++++++++++++++-- app/Command/ReportRegulatoryCommand.php | 25 +++++++++--- .../getPrescriptionOrderStatusCommand.php | 3 +- app/Controller/TestController.php | 4 +- app/Model/ReportRegulatory.php | 34 ++++++++++++++++- app/Services/PatientOrderService.php | 32 ++++++++++------ 6 files changed, 111 insertions(+), 25 deletions(-) diff --git a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php index 6a9b803..5c26c6a 100644 --- a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php @@ -9,6 +9,7 @@ use App\Model\OrderInquiry; use App\Model\OrderPrescription; use App\Model\OrderPrescriptionFile; use App\Model\OrderPrescriptionProduct; +use App\Model\ReportRegulatory; use App\Model\UserDoctor; use App\Model\UserPatient; use App\Model\UserPharmacist; @@ -128,7 +129,6 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage } } - try { Log::getInstance("queue-AutoPharmacistCaVerify")->info("信息:检测执行次数"); @@ -177,10 +177,7 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage // 修改处方表为未通过 $this->modifyOrderPrescription($data['order_prescription_id'],2,"请联系平台客服,请勿重开处方"); - - Db::commit(); - } // 获取处方文件数据 @@ -237,6 +234,14 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage // 修改处方表为通过 $this->modifyOrderPrescription($data['order_prescription_id'],1); + // 增加上报监管平台表 + $res = $this->addReportRegulatory($order_inquiry['order_inquiry_id']); + if (!$res){ + Db::rollBack(); + Log::getInstance("queue-AutoPharmacistCaVerify")->error("错误:增加监管平台上报表失败"); + return Result::REQUEUE; + } + Db::commit(); Log::getInstance("queue-AutoPharmacistCaVerify")->info("成功"); } catch (\Exception $e) { @@ -479,4 +484,29 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage OrderPrescription::edit($params,$data); } + + /** + * 增加上报监管平台表 + * @param string $order_inquiry_id + * @return bool + */ + protected function addReportRegulatory(string $order_inquiry_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; + $report_regulatory = ReportRegulatory::addReportRegulatory($data); + if (empty($report_regulatory)){ + return false; + } + + return true; + } } diff --git a/app/Command/ReportRegulatoryCommand.php b/app/Command/ReportRegulatoryCommand.php index 7e25066..4c86b61 100644 --- a/app/Command/ReportRegulatoryCommand.php +++ b/app/Command/ReportRegulatoryCommand.php @@ -46,14 +46,14 @@ class ReportRegulatoryCommand extends HyperfCommand { $this->line("开始"); - // 获取需执行总数 - $order_prescription_count = $this->getOrderPrescriptionCount(); - if ($order_prescription_count <= 0) { + // 获取未上传监管平台订单数量 + $report_regulatory_count = $this->getNotReportRegulatoryCount(); + if ($report_regulatory_count <= 0) { $this->line("结束:无可执行订单"); return; } - for ($i = 0; $i < $order_prescription_count; $i++) { + for ($i = 0; $i < $report_regulatory_count; $i++) { // 获取待上报订单 $order_prescription = $this->getOrderPrescription($i); if (empty($order_prescription)) { @@ -218,6 +218,21 @@ class ReportRegulatoryCommand extends HyperfCommand return OrderPrescription::getStatusCount($params, $prescription_status_params); } + /** + * 获取符合条件的订单 + */ + private function getNotReportRegulatory(int $offset = 0,int $limit = 10) + { + $params = array(); + $params[] = ['report_inquiry_int','<',4]; + $params[] = ['report_prescription_int','<',4]; + + $or_params = array(); + $or_params['report_inquiry_status'] = 0; + $or_params['report_prescription_status'] = 0; + return ReportRegulatory::getOrStatusLimit($params,$or_params,['*'],$offset,$limit); + } + /** * 获取符合条件的处方订单 * @param int $offset 起始位置 @@ -255,7 +270,7 @@ class ReportRegulatoryCommand extends HyperfCommand $redis_key = "ReportRegulatoryInquiry" . $order_prescription_id; $redis_value = $redis->get($redis_key); if (empty($redis_value)) { - $redis->set($redis_key, 1, 60 * 60 * 24 * 5); + $redis->set($redis_key, 1, 60 * 60 * 24 * 6); return true; } diff --git a/app/Command/getPrescriptionOrderStatusCommand.php b/app/Command/getPrescriptionOrderStatusCommand.php index 9a3e132..1c3aa96 100644 --- a/app/Command/getPrescriptionOrderStatusCommand.php +++ b/app/Command/getPrescriptionOrderStatusCommand.php @@ -125,6 +125,7 @@ class getPrescriptionOrderStatusCommand extends HyperfCommand // 获取对应快递公司编码 $logistics_company_code = $this->getLogisticsCompanyCode($result['logisticsCompany']); if (empty($logistics_company_code)){ + Db::rollBack(); $this->line("处方平台已发货,快递公司编码识别失败!"); continue; } @@ -135,7 +136,7 @@ class getPrescriptionOrderStatusCommand extends HyperfCommand // 检测物流编号是否已经存在并订阅 if (empty($item['logistics_no']) || $item['logistics_no'] != $result['deliveryId']){ - $this->line("开始推送消息"); + $this->line("开始订阅快递推送"); // 订阅快递推送 $Kuaidi = new Kuaidi(); diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 9196e31..233c286 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -18,6 +18,7 @@ use App\Model\OrderPrescriptionProduct; use App\Model\OrderProduct; use App\Model\OrderProductItem; use App\Model\PatientFamily; +use App\Model\ReportRegulatory; use App\Model\User; use App\Model\UserCaCert; use App\Model\OrderInquiry; @@ -333,8 +334,7 @@ class TestController extends AbstractController } public function test_15(){ - $data = new Data(); - $data->product(); +// dump($result); } } \ No newline at end of file diff --git a/app/Model/ReportRegulatory.php b/app/Model/ReportRegulatory.php index ac8a3db..af76f49 100644 --- a/app/Model/ReportRegulatory.php +++ b/app/Model/ReportRegulatory.php @@ -6,6 +6,7 @@ namespace App\Model; +use Hyperf\Database\Model\Builder; use Hyperf\Database\Model\Collection; use Hyperf\Snowflake\Concern\Snowflake; @@ -15,10 +16,12 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $order_prescription_id 订单-处方表id(无需上报处方时为null) * @property int $order_product_id 订单-商品表id(无需上报处方时为null) * @property int $report_inquiry_status 问诊上报状态(0:未上报 1:已上报 2:上报失败) + * @property int $report_inquiry_int 问诊上报次数 * @property int $report_inquiry_type 问诊上报类型(1:网络初诊 2:网络复诊) * @property string $report_inquiry_time 问诊上报时间 * @property string $report_inquiry_fail_reason 问诊上报失败原因 * @property int $report_prescription_status 处方上报状态(0:未上报 1:已上报 2:上报失败) + * @property int $report_prescription_int 处方上报次数 * @property string $report_prescription_time 处方上报时间 * @property string $report_prescription_fail_reason 处方上报失败原因 * @property \Carbon\Carbon $created_at 创建时间 @@ -36,7 +39,7 @@ class ReportRegulatory extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['report_regulatory_id', 'order_inquiry_id', 'order_prescription_id', 'order_product_id', 'report_inquiry_status', 'report_inquiry_type', 'report_inquiry_time', 'report_inquiry_fail_reason', 'report_prescription_status', 'report_prescription_time', 'report_prescription_fail_reason', 'created_at', 'updated_at']; + protected array $fillable = ['report_regulatory_id', 'order_inquiry_id', 'order_prescription_id', 'order_product_id', 'report_inquiry_status', 'report_inquiry_int', 'report_inquiry_type', 'report_inquiry_time', 'report_inquiry_fail_reason', 'report_prescription_status', 'report_prescription_int', 'report_prescription_time', 'report_prescription_fail_reason', 'created_at', 'updated_at']; protected string $primaryKey = "report_regulatory_id"; @@ -83,4 +86,33 @@ class ReportRegulatory extends Model { return self::where($params)->update($data); } + + /** + * 数量 + * @param array $params + * @param array $or_params + * @return int + */ + public static function getOrStatusCount(array $params = [],array $or_params = []): int + { + return self::where($params)->orWhere($or_params)->count(); + } + + /** + * 列表 + * @param array $params + * @param array $or_params + * @param array $fields + * @param int $offset + * @param int $limit + * @return Collection|array + */ + public static function getOrStatusLimit(array $params = [],array $or_params = [], array $fields = ["*"],int $offset = 0,int $limit = 10): Collection|array + { + return self::where($params) + ->orWhere($or_params) + ->offset($offset) + ->limit($limit) + ->get($fields); + } } diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 3d16e6d..b89c71a 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -6,6 +6,7 @@ use App\Amqp\Producer\AssignDoctorDelayDirectProducer; use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer; use App\Constants\DoctorTitleCode; use App\Constants\HttpEnumCode; +use App\Model\BasicLogisticsCompany; use App\Model\Hospital; use App\Model\OrderInquiry; use App\Model\OrderInquiryCase; @@ -1211,20 +1212,27 @@ class PatientOrderService extends BaseService $params['order_product_id'] = $order_product_id; $order_product_logistics = OrderProductLogistic::getOne($params); if (empty($order_product_logistics)){ - $logistics = array(); - $logistics['logistics_no'] = $order_product['logistics_no'] ?: ""; + if (!empty($order_product['logistics_no']) && !empty($order_product['logistics_company_code'])){ + // 获取快递公司名称 + $params = array(); + $params['company_code'] = $order_product['logistics_company_code']; + $params['company_type'] = 1; + $basic_logistics_company = BasicLogisticsCompany::getOne($params); + if (!empty($basic_logistics_company)){ + $logistics = array(); + $logistics['order_product_id'] = $order_product_id; + $logistics['company_name'] = $basic_logistics_company['company_name']; + $logistics['company_code'] = $order_product['logistics_company_code']; + $logistics['logistics_no'] = $order_product['logistics_no']; + $result['logistics'] = $logistics; + } + } + }else{ + $order_product_logistics = $order_product_logistics->toArray(); - // 获取快递公司名称 - - - return success($result); + $order_product_logistics['logistics_content'] = json_decode($order_product_logistics['logistics_content'],true); + $result['logistics'] = $order_product_logistics; } - - $order_product_logistics = $order_product_logistics->toArray(); - - $order_product_logistics['logistics_content'] = json_decode($order_product_logistics['logistics_content'],true); - $result['logistics'] = $order_product_logistics; - return success($result); }