You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
5.5 KiB
PHP
139 lines
5.5 KiB
PHP
<?php
|
|
namespace App\Services\Admin\YeWu;
|
|
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class HealthCalendarService
|
|
{
|
|
|
|
// 创建日历
|
|
// 参数:['info'=>$info,'group'=>$group,'userid'=>$userid]
|
|
|
|
public function CreateCalendar($arr){
|
|
|
|
//如果是体检机构为自己创建日历判断权限,是否是为自己创建,否则拒绝
|
|
if($arr['group']==7){
|
|
$cha=DB::table('medical_institution')->where(['link_user_id'=>$arr['userid']])->get();
|
|
if($cha[0]->id <> $arr['info']['orgId']){
|
|
return \Yz::echoError1('无权限为此机构创建体检日历');
|
|
}
|
|
}
|
|
$startDate = Carbon::parse($arr['info']['dateRange'][0]);
|
|
$endDate = Carbon::parse($arr['info']['dateRange'][1]);
|
|
$currentDate = $startDate;
|
|
$time=$arr['info']['timeRange'][0].'--'.$arr['info']['timeRange'][1];
|
|
$j=0;
|
|
while ($currentDate->lte($endDate)) {
|
|
$day= $currentDate->format('Y-m-d') . "\n";
|
|
$weekday=date('N',strtotime($day));
|
|
if (in_array($weekday,$arr['info']['xingqi'] )) { //判断循环到的日期那天的星期是否在勾选的星期内,是则进行添加
|
|
$i=DB::table('institutional_calendar')->insert([
|
|
'institution_id'=>$arr['info']['orgId'],
|
|
'date'=>$day,
|
|
'week'=>$weekday,
|
|
'time'=>$time,
|
|
'end_time'=>$day.' '.$arr['info']['endTime'],
|
|
'count'=>$arr['info']['count'],
|
|
'status'=>1
|
|
]);
|
|
$j++;
|
|
}
|
|
|
|
$currentDate->addDay(); // 增加一天
|
|
}
|
|
|
|
return \Yz::Return(true,'成功创建'.$j.'天体检日历',[]);
|
|
}
|
|
//获取体检机构日历
|
|
//参数['group'=>$group,'userid'=>$userid,'page'=>$page,'pageSize'=>$pageSize,'searchInfo'=>$searchInfo]
|
|
public function getList($arr){
|
|
$sql=' where a.status in(0,1)';
|
|
$canshu=array();
|
|
|
|
|
|
|
|
if($arr['searchInfo']['status']==99){
|
|
$sql=' where a.status in(0,1)';
|
|
}
|
|
if($arr['searchInfo']['status']==0){
|
|
$sql=' where a.status in(0)';
|
|
}
|
|
if($arr['searchInfo']['status']==1){
|
|
$sql=' where a.status in(1)';
|
|
}
|
|
|
|
|
|
if($arr['searchInfo']['dateRange']){
|
|
|
|
$sql=$sql . ' and a.date>=? and a.date<=? ';
|
|
array_push($canshu,$arr['searchInfo']['dateRange'][0],$arr['searchInfo']['dateRange'][1]);
|
|
}
|
|
if($arr['searchInfo']['xingqi']){
|
|
$placeholders = rtrim(str_repeat('?,', count($arr['searchInfo']['xingqi'])), ',');
|
|
$sql=$sql . ' and a.week in('.$placeholders.') ';
|
|
foreach ($arr['searchInfo']['xingqi'] as $item){
|
|
array_push($canshu,$item);
|
|
}
|
|
|
|
}
|
|
|
|
if($arr['group']==7){
|
|
$cha=DB::table('medical_institution')->where(['link_user_id'=>$arr['userid']])->get();
|
|
$sql=$sql .' and a.institution_id=?';
|
|
array_push($canshu, $cha[0]->id);
|
|
}else{
|
|
if($arr['searchInfo']['orgId']){
|
|
|
|
$sql=$sql .' and a.institution_id=?';
|
|
array_push($canshu, $arr['searchInfo']['orgId']);
|
|
}
|
|
|
|
}
|
|
array_push($canshu,($arr['page']-1)*$arr['pageSize'],$arr['pageSize']);
|
|
// $query=DB::select("select a.*,b.org_name,c.usedcount from institutional_calendar as a left join medical_institution as b on a.institution_id=b.id LEFT JOIN (select calendar_id,count(*) as usedcount from appointment_record where status=1 group by calendar_id) as c on a.id=c.calendar_id ".$sql." order by a.date limit ?,?",$canshu);
|
|
// $count=DB::select("select count(*) as c from institutional_calendar as a left join medical_institution as b on a.institution_id=b.id LEFT JOIN (select calendar_id,count(*) as usedcount from appointment_record where status=1 group by calendar_id) as c on a.id=c.calendar_id ".$sql,$canshu);
|
|
// return \Yz::Return(true,'',['list'=>$query,'count'=>$count[0]->c]);
|
|
return [];
|
|
}
|
|
|
|
//参数['list'=>$list,'group'=>$group,'userid'=>$userid]
|
|
public function Del($arr){
|
|
$query = DB::table('institutional_calendar');
|
|
if($arr['group']==7) {
|
|
$cha = DB::table('medical_institution')->select(['id'])->where(['link_user_id' => $arr['userid']])->get();
|
|
$query->where('institution_id',$cha[0]->id);
|
|
}
|
|
$d=$query->whereIn('id',$arr['list'])->delete();
|
|
if($d){
|
|
return \Yz::Return(true,'',[]);
|
|
}else{
|
|
return \Yz::Return(false,'删除失败',[]);
|
|
}
|
|
}
|
|
|
|
|
|
//参数['changeInfo'=>$changeInfo,'group'=>$group,'userid'=>$userid]
|
|
//修改日历信息
|
|
public function ChangeInfo($arr){
|
|
$u=0;
|
|
$query = DB::table('institutional_calendar');
|
|
if($arr['group']==7) {
|
|
$cha = DB::table('medical_institution')->select(['id'])->where(['link_user_id' => $arr['userid']])->get();
|
|
$query->where('institution_id',$cha[0]->id);
|
|
}
|
|
$query->whereIn('id',$arr['changeInfo']['list']);
|
|
if($arr['changeInfo']['type']=='status'){
|
|
$u=$query->update(['status'=>$arr['changeInfo']['status']]);
|
|
}
|
|
if($arr['changeInfo']['type']=='count'){
|
|
$u=$query->update(['count'=>$arr['changeInfo']['count']]);
|
|
}
|
|
if($u){
|
|
return \Yz::Return(true,'成功更新'.$u.'条记录',[]);
|
|
}else{
|
|
return \Yz::Return(false,'更新失败',[]);
|
|
}
|
|
}
|
|
}
|