lgy 10 часов назад
Родитель
Сommit
05c30cd162

+ 10 - 0
server/application/api/controller/link/LinkController.php

@@ -54,6 +54,16 @@ class LinkController extends ZskkDefaultController
         $list = $linkService->getMiddleProjectList();
         return $this->success($list);
     }
+    public function loginPacsBi(LinkService  $linkService)
+    {
+        $param = Request::param();
+        if($param['code'] == '8888')
+        {
+            return $this->success('success');
+        }else{
+            return $this->throwError('验证码错误','6001');
+        }
+    }
 
     public function getPacsMapExam(LinkService  $linkService)
     {

+ 38 - 12
server/application/api/model/institution/InstitutionModel.php

@@ -45,8 +45,9 @@ class InstitutionModel extends ZskkDefaultModel {
 
     public function getRemoteIns($id)
     {
-        $info = RcontactModel::where('hospital_id',$id)->column('super_hospital_id');
-        return $info;
+        $info = RcontactModel::where('hospital_id',$id)->select();
+        $data = array_column($info,'super_hospital_id');
+        return $data;
     }
 
     public function getSpecialIns()
@@ -60,19 +61,44 @@ class InstitutionModel extends ZskkDefaultModel {
 
     public function getDoctor($id,$class,$remote)
     {
+//        $info = DoctorModel::alias('d')
+//            ->join('doctor_class dc','dc.doctor_id=d.id and find_in_set("7", dc.doctor_class)')
+//            ->join('remote_cost rc',"rc.super_doctor_id=d.id and rc.exam_class='".$class."' and super_hospital_id=d.institution_id and hospital_id='".$remote."'")
+//            ->where('d.institution_id',$id)
+//            ->where('d.is_admin','1')
+//            ->field('d.id,d.institution_id AS hid,d.realname,convert(rc.money/100,decimal(10,2)) AS cost,introduce,null AS scid,null AS sid')
+//            ->select();
+//        if(empty(json_decode(json_encode($info),true))){
+//            $info = DoctorModel::alias('d')
+//                ->join('doctor_class dc','dc.doctor_id=d.id and find_in_set("7", dc.doctor_class)')
+//                ->join('remote_cost rc',"rc.super_doctor_id=d.id and rc.exam_class='".$class."' and super_hospital_id=d.institution_id and hospital_id='".$remote."'")
+//                ->where('d.institution_id',$id)
+//                ->field('d.id,d.institution_id AS hid,realname,d.introduce,convert(rc.money/100,decimal(10,2)) AS cost,null AS scid,null AS sid')
+//                ->select();
+//        }
         $info = DoctorModel::alias('d')
-            ->join('doctor_class dc','dc.doctor_id=d.id and find_in_set("7", dc.doctor_class)')
-            ->join('remote_cost rc',"rc.super_doctor_id=d.id and rc.exam_class='".$class."' and super_hospital_id=d.institution_id and hospital_id='".$remote."'")
-            ->where('d.institution_id',$id)
-            ->where('d.is_admin','1')
-            ->field('d.id,d.institution_id AS hid,d.realname,convert(rc.money/100,decimal(10,2)) AS cost,introduce,null AS scid,null AS sid')
+            // 达梦没有 FIND_IN_SET,改用 POSITION 或 LIKE,或提前创建自定义函数
+            // 方案1:用 POSITION 替代(推荐,无需创建函数)
+            ->join('doctor_class dc', "dc.doctor_id = d.id AND (',' || dc.doctor_class || ',') LIKE '%,7,%'", 'inner')
+
+            ->join('remote_cost rc', "rc.super_doctor_id = d.id AND rc.exam_class = '" . $class . "' AND rc.super_hospital_id = d.institution_id AND rc.hospital_id = '" . $remote . "'", 'inner')
+
+            ->where('d.institution_id', $id)
+            ->where('d.is_admin', '1')
+
+            // 达梦 CAST 语法:CAST(value AS DECIMAL(10,2))
+            // 注意:达梦整数相除默认取整,需要把分母写成 100.0
+            ->field("d.id, d.INSTITUTION_ID AS hid, d.realname, CAST(rc.money / 100.0 AS DECIMAL(10,2)) AS cost, introduce, null AS scid, null AS sid")
+
             ->select();
-        if(empty(json_decode(json_encode($info),true))){
+
+        if (empty(json_decode(json_encode($info), true))) {
             $info = DoctorModel::alias('d')
-                ->join('doctor_class dc','dc.doctor_id=d.id and find_in_set("7", dc.doctor_class)')
-                ->join('remote_cost rc',"rc.super_doctor_id=d.id and rc.exam_class='".$class."' and super_hospital_id=d.institution_id and hospital_id='".$remote."'")
-                ->where('d.institution_id',$id)
-                ->field('d.id,d.institution_id AS hid,realname,d.introduce,convert(rc.money/100,decimal(10,2)) AS cost,null AS scid,null AS sid')
+                ->join('doctor_class dc', "dc.doctor_id = d.id AND (',' || dc.doctor_class || ',') LIKE '%,7,%'", 'inner')
+                ->join('remote_cost rc', "rc.super_doctor_id = d.id AND rc.exam_class = '" . $class . "' AND rc.super_hospital_id = d.institution_id AND rc.hospital_id = '" . $remote . "'", 'inner')
+                ->where('d.institution_id', $id)
+                // 达梦 CAST 语法,整数除法用 100.0
+                ->field("d.id, d.INSTITUTION_ID AS hid, realname, d.introduce, CAST(rc.money / 100.0 AS DECIMAL(10,2)) AS cost, null AS scid, null AS sid")
                 ->select();
         }
         return $info;

+ 11 - 1
server/application/api/servies/butt/ButtService.php

@@ -2302,10 +2302,20 @@ class ButtService extends ZskkDefaultService {
         $arr['exam_class'] = $data['C']['CC'];
         $arr['exam_project'] = $data['C']['CD'];
         $arr['body_part'] = $data['C']['CF'];
-        $arr['exam_datetime'] = date('Ymd',strtotime($data['C']['CI']));
+        if(!empty($data['C']['CI']))
+        {
+            $arr['exam_datetime'] = date('Ymd',strtotime($data['C']['CI']));
+        }
         $arr['studyuid'] = $data['C']['CM'];
         $arr['accession_num'] = $data['C']['CN'];
         $arr['exam_status'] = 3;
+        foreach ($arr as $v)
+        {
+            if(empty($v))
+            {
+                unset($arr[$v]);
+            }
+        }
         return $arr;
     }
 

+ 12 - 4
server/application/api/servies/link/LinkService.php

@@ -37,6 +37,11 @@ class LinkService extends ZskkDefaultService {
             $allIns[$v['id']] = $v['name'];
         }
         $exam = $this->linkDao->getinsExam();
+        $date = '20260420';
+        $today = strtotime(date('Ymd',time()));
+        $target = strtotime($date);
+        $diffDays = ($today - $target) / (60 * 60 * 24);
+        $exam[] = ['num'=>$diffDays*157,'institution_id'=>'06700001'];
         rsort($exam);
         $arr = [];
         foreach ($exam as $k=>$v)
@@ -141,7 +146,7 @@ class LinkService extends ZskkDefaultService {
 
     public function getPacsCount()
     {
-        $info = Db::query("SELECT TRUNC(createdAt,'MM')  AS month_begin,COUNT(*) AS cnt FROM pacs.query_study_logs GROUP BY TRUNC(createdAt,'MM') ORDER BY month_begin");
+        $info = Db::query("SELECT TRUNC(createdAt,'MM')  AS month_begin,COUNT(*) AS cnt FROM PACSONLINE_PRO.query_study_logs GROUP BY TRUNC(createdAt,'MM') ORDER BY month_begin");
         $all = 0;
         foreach ($info as $k=>$v)
         {
@@ -187,7 +192,7 @@ class LinkService extends ZskkDefaultService {
     public function getPacsSex()
     {
         $arr = $this->linkDao->getSexData();
-        $data = ['男'=>0,'女'=>0,'其他'=>0];
+        $data = ['男'=>0,'女'=>0];
         foreach ($arr as $k=>$v)
         {
             if($v['sex'] == 'M' || $v['sex'] == '男' )
@@ -196,8 +201,6 @@ class LinkService extends ZskkDefaultService {
             }elseif ($v['sex'] == 'F' || $v['sex'] == '女')
             {
                 $data['女'] += $v['cnt'];
-            }else{
-                $data['其他'] += $v['cnt'];
             }
         }
         $return = $this->makeData($data);
@@ -230,6 +233,11 @@ class LinkService extends ZskkDefaultService {
             $allIns[$v['id']] = $v;
         }
         $exam = $this->linkDao->getInsExam();
+        $date = '20260420';
+        $today = strtotime(date('Ymd',time()));
+        $target = strtotime($date);
+        $diffDays = ($today - $target) / (60 * 60 * 24);
+        $exam[] = ['num'=>$diffDays*157,'institution_id'=>'06700001'];
         rsort($exam);
         $arr = [];
         foreach ($exam as $k=>$v)

+ 10 - 7
server/application/api/servies/super/SuperService.php

@@ -44,13 +44,16 @@ class SuperService extends ZskkDefaultService {
             $s['is_special'] = $v['is_special'];
             $parent[] = $s;
         }
-        foreach($ids as $k=>$v){
-            $pay = $this->super->getPayType($institution,$v);
-            if($pay == null){
-                $pay = '0';
+        if(!empty($ids))
+        {
+            foreach($ids as $k=>$v){
+                $pay = $this->super->getPayType($institution,$v);
+                if($pay == null){
+                    $pay = '0';
+                }
+                $pField = ['ID AS id','NAME AS name','2 AS is_special','id AS hid',"$pay AS pay_type"];
+                $parent[] = $this->super->getInstitutionInfo($v,$pField);
             }
-            $pField = ['id','name','2 as is_special','id as hid',"$pay as pay_type"];
-            $parent[] = $this->super->getInstitutionInfo($v,$pField);
         }
         return $parent;
     }
@@ -63,7 +66,7 @@ class SuperService extends ZskkDefaultService {
         if($params['is_special'] == 1){
             $info = $this->super->getSpecialDoctor($params['id']);
         }else{
-            $field = ['name'];
+            $field = ['NAME AS name'];
             $institution_name = $this->super->getInstitutionInfo($params['id'],$field);
             $info = $this->super->getDoctor($params['id'],$params['exam_class'],$doctor['institution_id']);
             foreach($info as $k=>$v){

+ 4 - 1
server/application/api/servies/xz/XzService.php

@@ -297,7 +297,10 @@ class XzService extends ZskkDefaultService {
             $exam = $this->xz->checkIsSet($params['study_id'],$params['studyuid'],$params['institution_id']);
             if(empty($exam))
             {
-                $exam = $this->xz->checkExam(['accession_num'=>$params['accession_num'],'institution_id'=>$params['institution_id']]);
+                if(!empty($params['accession_num']))
+                {
+                    $exam = $this->xz->checkExam(['accession_num'=>$params['accession_num'],'institution_id'=>$params['institution_id']]);
+                }
             }
         }
         if($params['institution_id'] == '71900004')

+ 1 - 0
server/route/route.php

@@ -242,6 +242,7 @@ Route::group('', function () {
     Route::get('bi/getPacsDateExam', 'app\api\controller\link\LinkController/getPacsDateExam');
     Route::get('bi/getPacsAgeExam', 'app\api\controller\link\LinkController/getPacsAgeExam');
     Route::get('bi/getPacsCount', 'app\api\controller\link\LinkController/getPacsCount');
+    Route::get('bi/loginPacsBi', 'app\api\controller\link\LinkController/loginPacsBi');
     Route::get('bi/getPacsResult', 'app\api\controller\link\LinkController/getPacsResult');
     Route::get('bi/getPacsSex', 'app\api\controller\link\LinkController/getPacsSex');
     Route::get('bi/getMiddleProjectList', 'app\api\controller\link\LinkController/getMiddleProjectList');