ソースを参照

检测生成pdf报告

lizhen_gitee 6 ヶ月 前
コミット
c4ffd3f9c3

+ 184 - 0
application/company/controller/Jiancepdf.php

@@ -0,0 +1,184 @@
+<?php
+
+namespace app\company\controller;
+
+use think\Controller;
+use think\Db;
+/**
+ * 检测下发
+ */
+class Jiancepdf extends Controller
+{
+
+    //生成报告
+    public function getpdf(){
+
+        $title = '天津市建筑消防设施维护保养报告书';
+        $this->assign('title',$title);
+
+        //检测信息
+        $id      = input('id',0);
+        $jiance  = Db::name('jiance')->where('id',$id)->find();
+
+        $this->assign('jiance',$jiance);
+
+        //附属信息
+        $company_id   = $jiance['company_id'];
+        $uc_id        = $jiance['uc_id'];
+        $worker_id    = $jiance['worker_id'];
+        $company      = Db::name('company')->where('id',$company_id)->find();
+        $user_company = Db::name('user_company')->where('id',$uc_id)->find();
+        $worker       = Db::name('worker')->where('id',$worker_id)->find();
+        $user_info    = Db::name('user')->where('id',$user_company['user_id'])->find();
+
+        $this->assign('company',$company);
+        $this->assign('user_company',$user_company);
+        $this->assign('worker',$worker);
+        $this->assign('user_info',$user_info);
+
+        //TOP15 项目,附带勾选
+        $top_project = Db::name('jiance_project')->field('id,title')
+            ->where('company_id',$company_id)
+            ->where('deletetime',NULL)
+            ->where('pid',0)
+            ->order('weigh asc,id asc')->select();
+        foreach($top_project as $key => $project){
+            $project['check'] = '□';
+            if(in_array($project['id'],explode(',',$jiance['project_ids']))){
+                $project['check'] = '■';
+            }
+            $top_project[$key] = $project;
+        }
+
+        $this->assign('top_project',$top_project);
+
+        //所有不合格的
+        $job_wrong = [];
+        $joblog = Db::name('jiance_joblog')->alias('log')
+            ->field('pt.title as top_title,p.type,p.title,worker.truename,log.*')
+            ->join('jiance_project p','log.project_id = p.id','LEFT')
+            ->join('jiance_project pt','p.pid = pt.id','LEFT')
+            ->join('worker','log.worker_id = worker.id','LEFT')
+            ->where('log.jiance_id',$id)->where('hege_status',2)
+            ->select();
+        foreach($joblog as $key => $job){
+            $type = $job['type'] == 1 ? '技术要求' : '维护要求';
+            $title = $job['top_title'] .'-'. $type .'-'. $job['title'];
+            $info  = '抽检位置:'.$job['weizhi'].',抽检数量:'. $job['number'] .',评判为不合格,检查结果是:'. $job['result'] .'。检查人'. $job['truename'];
+
+            $job_wrong[] = [
+                'title' => $title,
+                'info'  => $info,
+            ];
+        }
+
+        $this->assign('job_wrong',$job_wrong);
+
+        //组合大循环
+
+        //所有最后一条记录的id
+        $joblog_maxid = Db::name('jiance_joblog')->field('max(id) as logid')->where('jiance_id',$id)->group('project_id')->select();
+        $joblog_ids = array_column($joblog_maxid,'logid');
+
+        //所有最后一条记录
+        $joblog = Db::name('jiance_joblog')->alias('log')
+            ->field('worker.truename,log.*')
+            ->join('worker','log.worker_id = worker.id','LEFT')
+            ->where('log.jiance_id',$id)->where('log.id','IN',$joblog_ids)
+            ->select();
+        $joblog = list_domain_image($joblog,['images']);
+
+        //所有项目
+        $selected_project = Db::name('jiance_project')->field('id,pid,title,type,info,weigh')
+            ->where('company_id',$company_id)
+            ->where('deletetime',NULL)
+            ->where('id','IN',$jiance['project_ids'])
+            ->order('pid asc,type asc,weigh asc,id asc')->select();
+
+        //循环处理
+        $hege_status = [
+            1 => '符合',
+            2 => '不符合',
+            3 => '不适用'
+        ];
+        $panding = [
+            1 => [
+                '■符合',
+                '□不符合',
+                '□不适用',
+            ],
+            2 => [
+                '□符合',
+                '■不符合',
+                '□不适用',
+            ],
+            3 => [
+                '□符合',
+                '□不符合',
+                '■不适用',
+            ],
+        ];
+
+        $top = [];
+        foreach($selected_project as $key => $val){
+            //拿出来一级
+            if($val['pid'] == 0){
+                $top[] = $val;
+                unset($selected_project[$key]);
+            }else{
+                $val['job'] = [
+                    'remark' => '',
+                    'panding' => [],
+                    'images' => [],
+                ];
+                //组合最后一条记录
+                foreach($joblog as $job){
+                    if($val['id'] == $job['project_id']){
+                        $hege = isset($hege_status[$job['hege_status']]) ? $hege_status[$job['hege_status']] : $job['hege_status'];
+                        $job['remark'] = '位置:'.$job['weizhi'].',数量:'. $job['number'] .',评判:'. $hege .',检查结果:'. $job['result'] .'。检查人'. $job['truename'];
+                        $job['panding'] = isset($panding[$job['hege_status']]) ? $panding[$job['hege_status']] : $job['hege_status'];
+                        $job['images'] = explode(',',$job['images']);
+
+                        $val['job'] = $job;
+                    }
+                }
+            }
+            $selected_project[$key] = $val;
+        }
+
+        //数据结构排序,二级结构,不需要tree
+        foreach($top as $tk => $tv){
+            $tv['child_type1'] = [];
+            $tv['child_type2'] = [];
+            foreach($selected_project as $key => $val){
+                if($val['pid'] == $tv['id']){
+                    if($val['type'] == 1){
+                        $tv['child_type1'][] = $val;
+                    }else{
+                        $tv['child_type2'][] = $val;
+                    }
+                }
+            }
+            $top[$tk] = $tv;
+        }
+
+        $this->assign('top',$top);
+
+//        dump($top);
+
+        return $this->view->fetch();
+    }
+
+    /*private function getimages_html($images){
+        $result = [];
+
+        $images = explode(',',$images);
+        if(!empty($images)){
+            foreach($images as $img){
+                $result[] = '<img src="'.$img.'" width="50" height="50" />';
+            }
+        }
+    }*/
+
+
+}

+ 197 - 0
application/company/view/jiancepdf/getpdf.html

@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>{$title}</title>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
+    <meta name="renderer" content="webkit">
+    <meta name="referrer" content="never">
+    <meta name="robots" content="noindex, nofollow">
+</head>
+<style>
+    /* 默认情况下,屏幕上显示 */
+    .hide-on-print {
+        display: block;
+        text-align: right;
+        margin-bottom: 20px;
+        padding-top: 20px;
+    }
+
+    .table-bordered {
+        border: 1px solid #ddd;
+    }
+    .panel-heading {
+        padding: 10px 0px;
+    }
+
+    .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+        border: 1px solid #ddd;
+    }
+
+    /* 打印时隐藏 */
+    @media print {
+        .hide-on-print {
+            display: none;
+        }
+    }
+</style>
+
+<body  style="width: 760px;margin: 0 auto">
+
+<div class="hide-on-print">
+    <button type="button" onclick="printPage()" class="btn btn-primary dropdown-toggle">导出PDF</button>
+</div>
+
+<h1>{$title}</h1>
+项目名称:{$user_company['projectname']} </br>
+委托单位:{$user_company['weituo']}</br>
+消防技术服务机构(公章):{$user_company['fuwujigou']}</br>
+项目负责人(执业资格章):{$user_company['header']}</br>
+签发日期:{$user_company['starttime']|date="Y-m-d",###}</br>
+
+<h1>建筑消防设施维护保养报告</h1>
+<table>
+    <tr>
+        <td>项目名称</td>
+        <td>{$user_company['projectname']}</td>
+    </tr>
+    <tr>
+        <td>项目地址</td>
+        <td>{$user_company['projectaddress']}</td>
+    </tr>
+    <tr>
+        <td>委托单位</td>
+        <td>{$user_company['weituo']}</td>
+    </tr>
+    <tr>
+        <td>委托单位联系人</td>
+        <td>{$user_info['contactname']}</td>
+        <td>联系电话</td>
+        <td>{$user_info['mobile']}</td>
+    </tr>
+    <tr>
+        <td>消防技术服务机构</td>
+        <td>{$user_company['fuwujigou']}</td>
+    </tr>
+    <tr>
+        <td>项目负责人</td>
+        <td>{$user_company['header']}</td>
+        <td>技术负责人</td>
+        <td>{$user_company['xiaofang']}</td>
+    </tr>
+    <tr>
+        <td>现场操作员及证书编号</td>
+        <td>{$worker['truename']}</td>
+    </tr>
+    <tr>
+        <td>本次维保日期</td>
+        <td>{$jiance['tongjitime']|date="Y-m-d",###}</td>
+    </tr>
+    <tr>
+        <td>维保服务合同期限</td>
+        <td>{$user_company['starttime']|date="Y-m-d",###} - {$user_company['endtime']|date="Y-m-d",###}</td>
+    </tr>
+    <tr>
+        <td>建筑物概况</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td>建筑物供水设施</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td>维护保养合同涵盖的消防系统</td>
+        <td>
+            {volist name="top_project" id="vo"}
+                {$vo.check}{$vo.title}<br/>
+            {/volist}
+        </td>
+    </tr>
+    <tr>
+        <td>消防技术服务机构现场记录的消防设施故障</td>
+        <td>
+            本次维护保养存在以下不合格项:<br>
+            {volist name="job_wrong" id="vo"}
+            {$vo.title}<br>
+            {$vo.info}<br/>
+            {/volist}
+        </td>
+    </tr>
+    <tr>
+        <td>以往记录的消防设施故障的跟踪</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td>消防技术服务机构备注说明</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td>消防技术服务机构项目负责人签字盖章</td>
+        <td>(项目负责人执业印章)<br>
+            项目负责人签字:<br><br><br><br>
+            年 月 日
+        </td>
+    </tr>
+    <tr>
+        <td>消防技术服务机构技术负责人签字盖章</td>
+        <td>(技术负责人执业印章)<br>
+            技术负责人签字:<br><br><br><br>
+            年 月 日
+        </td>
+    </tr>
+    <tr>
+        <td>委托单位意见</td>
+        <td></td>
+    </tr>
+    <tr>
+        <td></td>
+        <td></td>
+    </tr>
+</table>
+<h1>建筑消防设施维护保养详细记录</h1>
+<table>
+    <tr>
+        <td>维保项</td>
+        <td>维保内容</td>
+        <td>检查方法和要求</td>
+        <td>实测记录</td>
+        <td>判定</td>
+        <td>位置与图片</td>
+    </tr>
+    {volist name="top" id="bigproject"}
+        <tr>
+            <td>{$bigproject.title}</td>
+        </tr>
+
+        {foreach $bigproject['child_type1'] as $child_type1}
+        <tr>
+            <td>技术要求</td>
+            <td>{$child_type1.title}</td>
+            <td>{$child_type1.info}</td>
+            <td>{$child_type1.job.remark}</td>
+            <td>
+                {foreach $child_type1.job.panding as $panding}
+                    {$panding}</br>
+                {/foreach}
+            </td>
+            <td>
+                {foreach $child_type1.job.images as $image}
+                <img src="{$image}" width="50" height="" />
+                {/foreach}
+            </td>
+        </tr>
+        {/foreach}
+
+
+    {/volist}
+
+</table>
+
+
+<script type="text/javascript">
+    function printPage() {
+        window.print();
+    }
+</script>
+</body>
+</html>