2025-04-03 15:50:14 +08:00

539 lines
21 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller\backend;
use app\common\controller\Api;
use Exception;
use think\Session;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf as PdfWriter;
use app\common\model\Member;
use think\Db;
class Pdf extends Api
{
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
public function _initialize()
{
parent::_initialize();
$id = $this->request->header('Token');
if(!$id){
return $this->error('缺少参数');
}
$user = Db::name('user')->where('token', $id)->find();
if(!$user){
return $this->error('用户不存在','',99998);
}
}
public function exportPdf()
{
$id = $this->request->get('id');
if(!$id){
return $this->error('缺少参数');
}
$user = Db::name('politics')
->field('a.*,p.nickname as user_name,p.gender,u.name as group_name')
->alias('a')
->join('user p','a.user_id = p.id','LEFT')
->join('user_group u','a.group_id = u.id','LEFT')
->where('a.id', $id)
->find();
// return $this->success('请求成功',$user);
$content = htmlspecialchars_decode($user['politics_content']);
$FontStyle = 'stsongstdlight';//字体
//引入扩展
vendor('Tcpdf.tcpdf');
//初始化tcpdf className = Tcpdf
$pdf = new \Tcpdf('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetFont($FontStyle, '', 12);
// 是否显示页眉
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(true);
//设置文档对齐,间距,字体,图片
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
//设置页眉页脚 边距
$pdf->setHeaderMargin(PDF_MARGIN_HEADER);
$pdf->setFooterMargin(PDF_MARGIN_FOOTER);
//自动分页
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
$if_organization = $user['open_status'] == 1 ? '匿名' : $user['user_name'];
$gender = $user['gender'] == 1 ? '男' : '女';
$acceptance_status = $user['acceptance_status'] == 1 ? '待处理' : '已回复';
// $tuanweifuzerenxinxiPhone = '';
// if($user_info['tuanweifuzerenxinxi']){
// $user_info['tuanweifuzerenxinxi'] = json_decode($user_info['tuanweifuzerenxinxi'], true)[0]['name'];
// $tuanweifuzerenxinxiPhone = json_decode($user_info['tuanweifuzerenxinxi'], true)[0]['phone'];
// // }
// return $this->success('请求成功',$user);
// var_dump($user);die();
$table_info_three = '
<style>
table tr{
line-height:30px;
}
table td{
vertical-align: middle;
text-align: center;
}
</style>
<div style="text-align: center; font-size: 36px; font-weight: bold; width: 80%; margin: 50px auto; padding-bottom: 10px;">
投诉建议回访表
</div>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr >
<td>姓名</td>
<td colspan="5">'.$user['user_name'].'</td>
</tr>
<tr >
<td>科室</td>
<td colspan="5">'.$user['group_name'].'</td>
</tr>
<tr >
<td>投诉时间</td>
<td colspan="5">'.$user['createtime'].'</td>
</tr>
<tr >
<td>处理状态</td>
<td colspan="5">'.$acceptance_status.'</td>
</tr>
<tr >
<td>处理内容</td>
<td colspan="5">'.$user['acceptance_content'].'</td>
</tr>
<tr >
<td>受理时间</td>
<td colspan="5">'.$user['acceptance_time'].'</td>
</tr>
<tr >
<td>投诉内容</td>
<td colspan="5">'.$user['politics_content'].'</td>
</tr>
<tr>
<td><p>&nbsp;&nbsp;</p><p>&nbsp;&nbsp;</p>本人签字</td>
<td colspan="5">
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<span style="width:200px;"> 本人签字:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="width:100px;"> 年 </span>
<span style="width:100px;"> 月 </span>
<span style="width:100px;"> 日 </span>
</td>
</tr>
<tr >
<td><p>&nbsp;&nbsp;</p>本人所在单位回访意见</td>
<td colspan="5">
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<span style="width:200px;"> 盖章:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="width:100px;"> 年 </span>
<span style="width:100px;"> 月 </span>
<span style="width:100px;"> 日 </span>
</td>
</tr>
</table>';
//设置正文字体,大小 stsongstdlight网上说这个字体支持的文字更全支持中文不乱码
$pdf->SetFont($FontStyle, '', 14);
//创建页面渲染PDF
$pdf->AddPage();
$pdf->SetAlpha(0.2); //设置你需要的透明度
$img_file = $_SERVER["DOCUMENT_ROOT"] .'water.png';
$pdf->Image($img_file, 10, 0, 0, 0, '', '', '', true, 300, '', false, false);
$pdf->SetAlpha(1);//恢复原始透明度
$pdf->writeHTML($table_info_three, true, false, false, false, '');
$pdf->LastPage();
//文件保存
$saveName = date('Y-m-d').'.pdf';
$savePath = $saveName;
//PDF输出模式 I在浏览器中打开D下载F在服务器生成pdf S只返回pdf的字符串
$pdf->Output($savePath,'D');
if(!file_exists($savePath)){
$pdf->Output($savePath,'D');
};
return json(['status'=>'11','msg'=>'生成成功']);
}
public function personalProfile()
{
$user_id = $this->request->get('id',261);
$time = $this->request->get('time',date('Y'));
$evaluation_schedule_id = $this->request->post('evaluation_schedule_id');
$scoringrecord_status = $this->request->post('scoringrecord_status');
$where = [];
if($user_id){
$where['a.id'] = $user_id;
}
$user = Db::name('user')
->field('a.*,p.name as group_name')
->alias('a')
->join('user_group p','a.group_id = p.id','LEFT')
->where($where)
->find();
// return $this->success('查询成功', $result);
// foreach ($result as $key => $value) {
// $group_name = Db::name('user_group')->where('id', $value['group_id'])->value('name');
$user_scoringrecord = Db::name('scoringrecord')->where('user_id', $user_id)->where('term', $time)->where('evaluation_schedule_id',$evaluation_schedule_id)->sum('self_score');
$department_score_scoringrecord = Db::name('scoringrecord')->where('user_id', $user_id)->where('term', $time)->where('evaluation_schedule_id',$evaluation_schedule_id)->sum('department_score');
$hospital_score_scoringrecord = Db::name('scoringrecord')->where('user_id', $user_id)->where('term', $time)->where('evaluation_schedule_id',$evaluation_schedule_id)->sum('hospital_score');
$party_score_scoringrecord = Db::name('scoringrecord')->where('user_id', $user_id)->where('term', $time)->where('evaluation_schedule_id',$evaluation_schedule_id)->sum('party_branch_score');
$overall_score_scoringrecord = Db::name('scoringrecord')->where('user_id', $user_id)->where('term', $time)->where('evaluation_schedule_id',$evaluation_schedule_id)->sum('overall_party_score');
//获取改年总加分的分值
$zongjiafenfenzhi = Db::name('addition_and_subtraction_records')->where('user_id',$user_id)->where('YEAR(createtime)', $time)->where('status',2)->where('assessment_type',1)->sum('score_value');
//获取改年总减分的分值
$zongjianfenfenzhi = Db::name('addition_and_subtraction_records')->where('user_id', $user_id)->where('YEAR(createtime)', $time)->where('status',2)->where('assessment_type',2)->sum('score_value');
$time= $time;
$zongjiafen = 0;
$scoringrecord_status = '1';
$total_score = 0;
if($user_scoringrecord == 0){
$scoringrecord_status = '2';
}
if($department_score_scoringrecord != 0){
$scoringrecord_status = '3';
}
// if($result[$key]['party_score_scoringrecord'] != 0){
// $result[$key]['scoringrecord_status'] = '5';
// }
// if($result[$key]['overall_score_scoringrecord'] != 0){
// $result[$key]['scoringrecord_status'] = '6';
// }
if($hospital_score_scoringrecord != 0){
$scoringrecord_status = '4';
$total_score = $user_scoringrecord * 0.4 + $department_score_scoringrecord * 0.6 + $party_score_scoringrecord * 0.4 + $zongjiafenfenzhi - $zongjianfenfenzhi;
}
// }
// return $this->success('查询成功', $result);
// return $this->success('请求成功',$user);
// $content = htmlspecialchars_decode($user['politics_content']);
$FontStyle = 'stsongstdlight';//字体
//引入扩展
vendor('Tcpdf.tcpdf');
//初始化tcpdf className = Tcpdf
$pdf = new \Tcpdf('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetFont($FontStyle, '', 12);
// 是否显示页眉
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(true);
//设置文档对齐,间距,字体,图片
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
//设置页眉页脚 边距
$pdf->setHeaderMargin(PDF_MARGIN_HEADER);
$pdf->setFooterMargin(PDF_MARGIN_FOOTER);
//自动分页
$pdf->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
$pdf->AddPage();
$pdf->SetAlpha(0.2); //设置你需要的透明度
$pdf->SetAlpha(1);//恢复原始透明度
$pdf->SetFont($FontStyle, '', 16);
$pdf->Ln(33);
$html_one = '<h1 style="text-align:center;line-height:50%;">信阳市传染病医院医德医风考评档案</h1>';
$pdf->writeHTML($html_one, true, false, true, false, '');
$pdf->Ln(40);
$pdf->SetLeftMargin(40);
$pdf->Line(78, 107, 155, 107, $style=array());
$pdf->Line(78, 115, 155, 115, $style=array());
$pdf->Line(78, 123, 155, 123, $style=array());
$html_two = '
<dl style="letter-spacing:2px;font-size:14px;">
<dd><p style="line-height:80%;">姓<span>&nbsp;&nbsp;</span>名:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'.$user['nickname'].'</p></dd>
<dd><p style="line-height:80%;">科<span>&nbsp;&nbsp;</span>室:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'.$user['group_name'].'</p></dd>
<dd><p style="line-height:80%;">填表日期:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'.date('Y年m月d日',time()).'</p></dd>
</dl>';
$pdf->writeHTML($html_two, true, false, true, false, '');
$pdf->SetLeftMargin(55);
$pdf->SetRightMargin(53);
$pdf->SetLeftMargin(55);
$pdf->SetRightMargin(53);
$pdf->Ln(60);
$html_three = '
<p style="text-align:center;line-height:40%;">信阳市第五人民医院</p>
<p style="text-align:center;line-height:40%;">二○二五年制</p>';
$pdf->writeHTML($html_three, true, false, true, false, '');
$pdf->SetLeftMargin(10);
$table_info_three = '
<style>
table tr{
line-height:40px;
}
table td{
vertical-align: middle;
text-align: center;
}
</style>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr >
<td>姓名</td>
<td colspan="2" >'.$user['nickname'].'</td>
<td>科室</td>
<td colspan="2">'.$user['group_name'].'</td>
<td>政治面貌</td>
<td colspan="3">'.$user['nickname'].'</td>
</tr>
<tr >
<td>岗位</td>
<td colspan="2" >'.$user['position'].'</td>
<td>职称</td>
<td colspan="2">'.$user['administrative_position'].'</td>
<td>出生日期</td>
<td colspan="3">'.$user['birthday'].'</td>
</tr>
<tr >
<td>自我评价小结</td>
<td colspan="9">
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
</td>
</tr>
<tr >
<td>自我评价</td>
<td colspan="9">
&nbsp;&nbsp;等级:>&nbsp;&nbsp;优秀□&nbsp;&nbsp;良好□&nbsp;&nbsp;一般□&nbsp;&nbsp;较差□
<p>
<span style="width:200px;"> 个人签名:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="width:100px;"> 年 </span>
<span style="width:100px;"> 月 </span>
<span style="width:100px;"> 日 </span>
</p>
</td>
</tr>
<tr >
<td>科室评价意见</td>
<td colspan="9">
&nbsp;&nbsp;等级:>&nbsp;&nbsp;优秀□&nbsp;&nbsp;良好□&nbsp;&nbsp;一般□&nbsp;&nbsp;较差□
<p>
<span style="width:150px;"> 科室评价负责人签字:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="width:100px;"> 年 </span>
<span style="width:100px;"> 月 </span>
<span style="width:100px;"> 日 </span>
</p>
</td>
</tr>
<tr >
<td>单位意见评价</td>
<td colspan="9">
&nbsp;&nbsp;等级:>&nbsp;&nbsp;优秀□&nbsp;&nbsp;良好□&nbsp;&nbsp;一般□&nbsp;&nbsp;较差□
<p>
<span style="width:200px;"> (盖章):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="width:100px;"> 年 </span>
<span style="width:100px;"> 月 </span>
<span style="width:100px;"> 日 </span>
</p>
</td>
</tr>
</table>';
//设置正文字体,大小 stsongstdlight网上说这个字体支持的文字更全支持中文不乱码
$pdf->SetFont($FontStyle, '', 14);
//创建页面渲染PDF
$pdf->AddPage();
$pdf->SetAlpha(0.2); //设置你需要的透明度
$img_file = $_SERVER["DOCUMENT_ROOT"] .'water.png';
$pdf->Image($img_file, 10, 0, 0, 0, '', '', '', true, 300, '', false, false);
$pdf->SetLeftMargin(10);
$pdf->SetRightMargin(10);
$pdf->SetLeftMargin(10);
$pdf->SetRightMargin(10);
$pdf->SetAlpha(1);//恢复原始透明度
$pdf->SetMargins(0, 10, 10, true);
$pdf->writeHTML($table_info_three, true, false, false, false, '');
$table_info_one = '
<style>
table tr{line-height:40px;}
table td{
vertical-align: middle;
text-align: center;
}
table tr{line-height:30px;}
table td{
vertical-align: middle;
text-align: center;
}
</style>
<h1 style="text-align:center;line-height:50%;">信阳市传染病医院医德医风考评档案</h1>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr >
<td colspan="7">考评内容</td>
<td>分值</td>
<td>得分</td>
</tr>
<tr>
<td rowspan="5" ><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>一、爱岗敬业奉献,恪守职业道德15分</td>
<td colspan="6">1.服务热情周到,态度和蔼可亲, 着装整洁,举止端庄,语言文明规范,无“生、冷、硬、顶、推、拖”现象。</td>
<td style="vertical-align: middle;">3分</td>
<td></td>
</tr>
<tr>
<td colspan="6">2.加强政治理论和职业道德学习,刻苦钻研与业务工作相关的新知识、新技术,提高专业技术能力和水平,提升医疗服务质量。</td>
<td>3分</td>
<td></td>
</tr>
<tr>
<td colspan="6">3.树立救死扶伤、以病人为中心、全心全意为人民服务的宗旨意识和服务意识,大力弘扬新时代卫生职业精神,热爱本职工作;责任意识强,有效防范杜绝医疗差错、医疗事故的发生。</td>
<td>3分</td>
<td></td>
</tr>
<tr>
<td colspan="6">4.平等对待患者,做到一视同仁,不歧视患者。维护患者合法权益,尊重患者知情权、选择权和隐私权,为患者保守医疗秘密。</td>
<td>3分</td>
<td></td>
</tr>
<tr>
<td colspan="6">5.依法依规开展临床药物、医疗器械及临床医疗技术试验,应用新技术和有创诊疗活动中,遵守医学伦理道德,尊重患者的知情同意权。</td>
<td>3分</td>
<td></td>
</tr>
<tr>
<td rowspan="9"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>二、严格遵守“九项”准则,切实规范诊疗行为75分</td>
<td colspan="6">1.合法按劳取酬,不接受商业提成。依法依规按劳取酬。严禁利用执业之便开单提成;严禁以商业目的进行统方;除就诊医院所在医联体的其他医疗机构,和被纳入医保“双通道”管理的定点零售药店外,严禁安排患者到其他指定地点购买医药耗材等产品;严禁向患者推销商品或服务并从中谋取私利;严禁接受互联网企业与开处方配药有关的费用。</td>
<td>10分</td>
<td></td>
</tr>
<tr>
<td colspan="6">2.严守诚信原则,不参与欺诈骗保。依法依规合理使用医疗保障基金,遵守医保协议管理,向医保患者告知提供的医药服务是否在医保规定的支付范围内。严禁诱导、协助他人冒名或者虚假就医、购药、提供虚假证明材料、串通他人虚开费用单据等手段骗取、套取医疗保障基金。</td>
<td>10分</td>
<td></td>
</tr>
<tr>
<td colspan="6">3.依据规范行医,不实施过度诊疗。严格执行各项规章制度,在诊疗活动中应当向患者说明病情、医疗措施。严禁以单纯增加医疗机构收入或谋取私利为目的过度治疗和过度检查,给患者增加不必要的风险和费用负担。</td>
<td>8分</td>
<td></td>
</tr>
<tr>
<td colspan="6">4.遵守工作规程,不违规接受捐赠。依法依规接受捐赠。严禁以个人名义,或者假借单位名义接受利益相关者的捐赠资助,并据此区别对待患者。</td>
<td>7分</td>
<td></td>
</tr>
<tr>
<td colspan="6">5.恪守保密准则,不泄露患者隐私。确保患者院内信息安全。严禁违规收集、使用、加工、传输、透露、买卖患者在医疗机构内所提供的个人资料、产生的医疗信息。</td>
<td>5分</td>
<td></td>
</tr>
<tr>
<td colspan="6">6.服从诊疗需要,不牟利转介患者。客观公正合理地根据患者需要提供医学信息、运用医疗资源。除因需要在医联体内正常转诊外,严禁以谋取个人利益为目的,经由网上或线下途径介绍、引导患者到指定医疗机构就诊。</td>
<td>10分</td>
<td></td>
</tr>
<tr>
<td colspan="6">7.维护诊疗秩序,不破坏就医公平。坚持平等原则,共建公平就医环境。严禁利用号源、床源、紧缺药品耗材等医疗资源或者检查、手术等诊疗安排收受好处、损公肥私。</td>
<td>5分</td>
<td></td>
</tr>
<tr>
<td colspan="6">8.共建和谐关系,不收受患方“红包”。恪守医德、严格自律。严禁索取或者收受患者及其亲友的礼品、礼金、消费卡和有价证券、股权、其他金融产品等财物;严禁参加其安排、组织或者支付费用的宴请或者旅游、健身、娱乐等活动安排。</td>
<td>10分</td>
<td></td>
</tr>
<tr>
<td colspan="6">9.恪守交往底线,不收受企业回扣。遵纪守法、廉洁从业。严禁接受药品、医疗设备、医疗器械、医用卫生材料等医疗产品生产、经营企业或者经销人员以任何名义、形式给予的回扣;严禁参加其安排、组织或者支付费用的宴请或者旅游、健身、娱乐等活动安排。</td>
<td>10分</td>
<td></td>
</tr>
<tr>
<td rowspan="2">三、服从指挥调配,团结协作共事10分</td>
<td colspan="6">1.服从指挥、调配,积极参加上级安排的指令性医疗任务和社会公益性的疫情防控、义诊、对口帮扶和突发公共卫生事件等医疗活动。</td>
<td>5分</td>
<td></td>
</tr>
<tr>
<td colspan="6">2.正确处理同行、同事间的关系,互相尊重,互相配合,取长补短,共同进步。</td>
<td>5分</td>
<td></td>
</tr>
<tr >
<td colspan="1">总分</td>
<td colspan="7"></td>
<td></td>
</tr>
</table>
<p></p>
<h1 style="text-align:center;line-height:50%;">说明优秀90-100分良好76-89分一般60-75分较差﹤60分。</h1>
';
//设置正文字体,大小 stsongstdlight网上说这个字体支持的文字更全支持中文不乱码
$pdf->SetFont($FontStyle, '', 10);
//创建页面渲染PDF
$pdf->AddPage();
$pdf->SetAlpha(0.2); //设置你需要的透明度
$img_file = $_SERVER["DOCUMENT_ROOT"] .'water.png';
$pdf->Image($img_file, 10, 0, 0, 0, '', '', '', true, 300, '', false, false);
$pdf->SetAlpha(1);//恢复原始透明度
$pdf->writeHTML($table_info_one, true, false, true, true, '');
$pdf->LastPage();
//文件保存
$saveName = date('Y-m-d').'.pdf';
$savePath = $saveName;
//PDF输出模式 I在浏览器中打开D下载F在服务器生成pdf S只返回pdf的字符串
$pdf->Output($savePath,'D');
if(!file_exists($savePath)){
$pdf->Output($savePath,'D');
};
return json(['status'=>'11','msg'=>'生成成功']);
}
}