ExportController.class.php 3.34 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhonglei
 * Date: 17/7/27
 * Time: 17:12
 */

namespace Apicp\Controller\Customtask;

use Com\PackageValidate;
use Com\PythonExcel;
use Common\Common\Constant;
use Common\Common\ExportDownload;
use Common\Common\TaskHelper;
use Common\Service\CustomtaskService;

class ExportController extends \Apicp\Controller\AbstractController
{
    /**
     * Export
     * @author zhonglei
     * @desc 导出常规任务完成情况接口
     * @param Int customtask_id:true 常规任务ID
     * @param Array dp_ids 部门ID数组
     * @param Array job_ids 岗位ID数组
     * @param Array role_ids 角色ID数组
     * @param String username 姓名
     * @param Int status:true 完成情况(1=未参与;2=执行中;3=已完成)
     * @return void
     */
    public function Index_post()
    {
        // 请求数据
        $post_data = I('post.');

        // 验证规则
        $rules = [
            'customtask_id' => 'require|integer',
            'dp_ids' => 'array',
            'job_ids' => 'array',
            'role_ids' => 'array',
            'username' => 'max:50',
            'status' => 'require|in:1,2,3',
        ];

        // 验证请求数据
        $validate = new PackageValidate();
        $validate->postData = $post_data;
        $validate->validateParams($rules);

        // 获取任务数据
        $taskServ = new CustomtaskService();
        $customtask = $taskServ->get($post_data['customtask_id']);

        if (empty($customtask)) {
            E('_ERR_CUSTOMTASK_NOT_FOUND');
        }

        // 获取人员列表
        $taskHelper = &TaskHelper::instance();
        $result = $taskHelper->listCustomtaskUser($post_data);
        $rows = [];

        foreach ($result['list'] as $v) {
            $task_status = '';

            switch ($v['complete_status']) {
                case Constant::USER_TASK_COMPLETE_STATUS_UNSTART:
                    $task_status = '未参与';
                    break;

                case Constant::USER_TASK_COMPLETE_STATUS_PROCESS:
                    $task_status = '执行中';
                    break;

                case Constant::USER_TASK_COMPLETE_STATUS_COMPLETE:
                    $task_status = '已完成';
                    break;
            }

            $rows[] = [
                $v['username'],
                implode(';', $v['dp_names']),
                $v['job'],
                $v['role'],
                $task_status,
                "{$v['progress']}%",
                $v['update_time'] > 0 ? rgmdate($v['update_time']) : '',
            ];
        }

        $file_name = $customtask['task_name'] . '完成详情';
        $file_path = ExportDownload::get_down_dir($this->_login->user['eaId'].microtime(true)) . $file_name.'.xls';
        $columns = ['姓名', '组织', '岗位', '角色', '完成情况', '进度', '最后完成时间'];
        $ret = PythonExcel::instance()->write($file_path, $columns, $rows);

        if ($ret) {
            $conditon = [
                'title' => $file_name,
                'ea_id' => $this->_login->user['eaId'],
                'username' => $this->_login->user['eaRealname'],
                'type' => ExportDownload::EXCEL_TYPE,
                'url' => $file_path,
                'app_dir' => APP_DIR
            ];

            ExportDownload::insert_down_load($conditon);
        }

    }
}