Пример #1
0
 /**
  * @Title: getWordPHPTableXmlStr
  * @Description: todo(用phpword对象生成word表格xml字符串)
  * @param $title         表格表名
  * @param $titleArr      表头
  * @param $titleGroupArr 分组表头  例:array(array("colspan"=>2, "title"=>"第一大组"),array("colspan"=>3, "title"=>"第二大组"))
  * @param $data          表数据
  * @author 王昭侠
  * @date 2015-01-30 上午90:30:00
  * @throws
  */
 public function getPHPWordTableXmlStr($title, $titleArr, $data = NULL, $titleGroupArr = NULL, $showtype = 0, $textStyle = array(), $widthArray = array())
 {
     $th_count = count($titleArr);
     $obPHPWord = new PHPWord();
     $section = $obPHPWord->createSection();
     $styleTable = array('borderSize' => 6, 'borderColor' => '000000', 'cellMargin' => 80, 'align' => 'center');
     $obPHPWord->addTableStyle('myOwnTableStyle', $styleTable);
     $table = $section->addTable('myOwnTableStyle');
     $cellStyle = array('borderSize' => 6, 'name' => $textStyle["name"], 'size' => $textStyle["size"], 'spacing' => $textStyle["spacing"], 'borderColor' => '000000', 'cellMargin' => 80);
     $td_width = 2000;
     $newStats = array();
     foreach ($data as $k => $v) {
         if ($v["is_stats"] === "1") {
             $sum = 0;
             if (!empty($v["original"][0]) && is_numeric($v["original"][0])) {
                 foreach ($v["original"] as $kk => $vv) {
                     $sum += floatval($vv);
                 }
                 $sum = unitExchange($sum, $v["funcdata"][0][0][1], $v["funcdata"][0][0][2], 3);
                 $newStats[] = "小计:" . $sum;
             } else {
                 $newStats[] = "";
             }
         } else {
             $newStats[] = "";
         }
     }
     $stats = false;
     foreach ($newStats as $k => $v) {
         if (!empty($v)) {
             $stats = true;
             break;
         }
     }
     if (!$stats) {
         $newStats = array();
     }
     if (!empty($title)) {
         if ($showtype != 0) {
             $th_count = count($data[0]["value"]) + 1;
         }
         $table->addRow();
         $table->addCell($td_width * $th_count, array('borderSize' => 6, 'borderColor' => '000000', 'cellMargin' => 80, 'align' => 'center', 'gridSpan' => $th_count))->addText($title, array('name' => $textStyle["name"], 'size' => $textStyle["size"], 'spacing' => $textStyle["spacing"], 'align' => 'center'));
     }
     if (!empty($titleGroupArr)) {
         $table->addRow();
         foreach ($titleGroupArr as $k => $v) {
             $table->addCell($td_width * $v["colspan"], array('borderSize' => 6, 'borderColor' => '000000', 'cellMargin' => 80, 'gridSpan' => $v["colspan"]))->addText($v["title"], array('name' => $textStyle["name"], 'size' => $textStyle["size"], 'spacing' => $textStyle["spacing"], 'align' => 'center'));
         }
     }
     if (empty($showtype)) {
         //默认为横向输出
         if (!empty($titleArr)) {
             $table->addRow();
             foreach ($titleArr as $k => $v) {
                 $table->addCell($widthArray[$k] ? $widthArray[$k] : $td_width, array('borderSize' => 6, 'borderColor' => '000000', 'cellMargin' => 80, 'valign' => 'center', 'align' => 'center'))->addText($v, $textStyle);
             }
         }
         foreach ($data[0]["value"] as $k => $v) {
             $table->addRow();
             foreach ($data as $kk => $vv) {
                 $table->addCell($widthArray[$kk] ? $widthArray[$kk] : $td_width, $cellStyle)->addText($vv["value"][$k], $textStyle);
             }
         }
         if (count($newStats) > 0) {
             $table->addRow();
             foreach ($newStats as $k => $v) {
                 $table->addCell($widthArray[$k] ? $widthArray[$k] : $td_width, $cellStyle)->addText($v, $textStyle);
             }
         }
     } else {
         if (!empty($titleArr)) {
             foreach ($titleArr as $k => $v) {
                 $table->addRow();
                 $table->addCell($widthArray[$k] ? $widthArray[$k] : $td_width, array('borderSize' => 6, 'borderColor' => '000000', 'cellMargin' => 80, 'align' => 'center'))->addText($v, $textStyle);
                 if (!empty($data)) {
                     foreach ($data[$k]["value"] as $kk => $vv) {
                         $table->addCell($widthArray[$kk] ? $widthArray[$kk] : $td_width, $cellStyle)->addText($vv, $textStyle);
                     }
                 }
             }
         } else {
             foreach ($titleArr as $k => $v) {
                 $table->addRow();
                 if (!empty($data)) {
                     foreach ($data[$k]["value"] as $kk => $vv) {
                         $table->addCell($widthArray[$kk] ? $widthArray[$kk] : $td_width, $cellStyle)->addText($vv, $textStyle);
                     }
                     if (count($newStats) > 0) {
                         $table->addCell($widthArray[$kk] ? $widthArray[$kk] : $td_width, $cellStyle)->addText($newStats[$k], $textStyle);
                     }
                 }
             }
         }
     }
     $objWriter = PHPWord_IOFactory::createWriter($obPHPWord, 'Word2007');
     $tableXml = $objWriter->getWriterPart('document')->getObjectAsText($table);
     return $tableXml;
 }
Пример #2
0
 /**
  *
  * @Title: lookupAssemble
  * @Description: todo(组装条件 返回list)
  * @return multitype:string Ambigous <multitype:, multitype:unknown , multitype:unknown NULL >
  * @author renling
  * @date 2014-9-17 下午6:33:52
  * @throws
  */
 private function lookupAssemble()
 {
     /* 黎明刚 加,为了满足流程管理,在一个页面同时出现多个条件选择器*/
     $order = $_POST['order'];
     $roleexp = $_POST['tiprole'] ? $_POST['tiprole'] : $_POST['roleexp'];
     $roleexptype = $_POST['roleexptype'];
     $roleexptitle = $_POST['roleexptitle'];
     $modelname = $_POST['modelname'];
     if (substr($modelname, -4) == 'View') {
         $modelname = getFieldBy($modelname, 'name', 'modelname', 'mis_system_dataview_mas');
     }
     //获取配置文件
     $scdmodel = D('SystemConfigDetail');
     //读取列名称数据(按照规则,应该在index方法里面)
     $detailList = $scdmodel->getDetail($modelname, '', '', '', 'rules');
     //查询该模型是否有视图
     $MisSystemDataviewMasView = D('MisSystemDataviewMasView');
     $MisSystemDataviewMasMap = array();
     $MisSystemDataviewMasMap['modelname'] = $modelname;
     $MisSystemDataviewMasMap['mstatus'] = 1;
     $MisSystemDataviewMasList = $MisSystemDataviewMasView->where($MisSystemDataviewMasMap)->getField("field,tablename");
     $listarr = array();
     $typearr = array();
     $orspan = "<span style='color:red'> 或者  </span>";
     $andspan = "<span style='color:blue'> 并且  </span>";
     if ($order == "processcondition_batch") {
         /* 黎明刚 加,为了满足流程管理,在一个页面同时出现多个条件选择器*/
         $orspan = "或者";
         $andspan = "并且";
     }
     if ($_POST['avgsql']) {
         //高级sql模式
         $showmap = $_POST['avgsql'];
     }
     foreach ($roleexp as $key => $val) {
         //查询当前条件是否是视图字段
         if ($MisSystemDataviewMasList[$val]) {
             //组装视图条件
             $mapval = $MisSystemDataviewMasList[$val] . "." . $val;
         } else {
             if ($detailList[$val]['searchField']) {
                 $mapval = $detailList[$val]['searchField'];
             } else {
                 $mapval = $val;
             }
         }
         $leftipt = "";
         $rightipt = "";
         $centertip = "";
         $centertip = $_POST['centertip'][$val];
         $leftipt = $_POST['leftipt'][$key];
         $rightipt = $_POST['rightipt'][$key];
         if ($roleexptype[$val] == 'text') {
             $showval = $_POST[$val . 'text'];
             if ($val == "auditState") {
                 $showval = getSelectByName('auditStateVal', $_POST[$val . 'text']);
             }
             if ($val == "operateid") {
                 $showval = getSelectByName('operateidVal', $_POST[$val . 'text']);
             }
             $showmap .= "(" . $roleexptitle[$val] . ' ' . getSelectByName('roletextinexp', $_POST[$val . 'f']) . " '" . $showval . "')  ";
             $map .= $leftipt . " " . $mapval . getSelectByName('roletextinset', $_POST[$val . 'f']) . "'" . $_POST[$val . 'text'] . "' " . $rightipt . " ";
             $typearr[$val][] = array('name' => $val, 'title' => $_POST['roleexptitle'][$val], 'symbol' => $_POST[$val . 'f'], 'val' => $_POST[$val . 'text'], 'control' => 'text', 'widget' => 'roletextinset', 'leftipt' => $leftipt, 'rightipt' => $rightipt, 'sort' => $key, 'centertip' => $centertip);
         } else {
             if ($roleexptype[$val] == 'select') {
                 $showmap .= "(" . $roleexptitle[$val] . ' ' . getSelectByName('roletextinexp', $_POST[$val . 'f']) . " '" . implode(',', $_POST[$val . 'stitle']) . "')";
                 $tempData = $_POST[$val . 's'];
                 if ($tempData) {
                     $ret = "'";
                     if (is_array($tempData)) {
                         $ret .= join("','", $tempData);
                     }
                     $ret .= "'";
                 }
                 $map .= $leftipt . ' ' . $mapval . ' ' . getSelectByName('roletextinset', $_POST[$val . 'f']) . "(" . $ret . ")" . $rightipt . " ";
                 $typearr[$val][] = array('name' => $val, 'symbol' => $_POST[$val . 'f'], 'title' => $_POST['roleexptitle'][$val], 'showval' => implode(',', $_POST[$val . 'stitle']), 'val' => $_POST[$val . 's'], 'control' => 'select', 'widget' => 'roletextinset', 'sort' => $key, 'leftipt' => $leftipt, 'rightipt' => $rightipt, 'centertip' => $centertip);
             } else {
                 if ($roleexptype[$val] == 'number') {
                     //带入单位存值
                     $showunit = getFieldBy($_POST[$val . "unitshow"], "danweidaima", "danweimingchen", "mis_system_unit");
                     //map转换单位
                     $mapunitsval = $_POST[$val . 'snum'];
                     $mapuniteval = $_POST[$val . 'enum'];
                     if ($showunit) {
                         //转换为存储单位
                         $mapunitsval = unitExchange($_POST[$val . 'snum'], $_POST[$val . 'unitchange'], $_POST[$val . 'unitshow']);
                         $mapuniteval = unitExchange($_POST[$val . 'enum'], $_POST[$val . 'unitchange'], $_POST[$val . 'unitshow']);
                     }
                     if ($_POST[$val . 'enum']) {
                         $showmap .= "(" . $roleexptitle[$val] . ' ' . getSelectByName('roleinexp', $_POST[$val . 'sf']) . " '" . $_POST[$val . 'snum'] . $showunit . "' {$andspan}  " . $roleexptitle[$val] . ' ' . getSelectByName('roleinexp', $_POST[$val . 'ef']) . " '" . $_POST[$val . 'enum'] . $showunit . "')";
                         $map .= $leftipt . " " . "(" . $mapval . ' ' . getSelectByName('roleexp', $_POST[$val . 'sf']) . $mapunitsval . " and " . $mapval . ' ' . getSelectByName('roleexp', $_POST[$val . 'ef']) . $mapuniteval . ")" . $rightipt . " ";
                     } else {
                         $showmap .= "(" . $roleexptitle[$val] . ' ' . getSelectByName('roleinexp', $_POST[$val . 'sf']) . " '" . $_POST[$val . 'snum'] . $showunit . ")";
                         $map .= $leftipt . " " . "(" . $mapval . ' ' . getSelectByName('roleexp', $_POST[$val . 'sf']) . "'" . $mapunitsval . "')";
                     }
                     $typearr[$val][] = array('name' => $val, 'symbols' => $_POST[$val . 'sf'], 'symbole' => $_POST[$val . 'ef'], 'title' => $_POST['roleexptitle'][$val], 'vals' => $mapunitsval, 'vale' => $mapuniteval, 'sort' => $key, 'control' => 'number', 'widget' => 'roleexp', 'leftipt' => $leftipt, 'rightipt' => $rightipt, 'centertip' => $centertip);
                 } else {
                     if ($roleexptype[$val] == 'time') {
                         if (!$_POST[$val . 'etime']) {
                             $_POST[$val . 'etime'] = "\$" . "time";
                             $showtime = "当前时间";
                             $showetime = "\$" . "time";
                         } else {
                             $showtime = $_POST[$val . 'etime'];
                             $showetime = $showtime;
                             $_POST[$val . 'etime'] = strtotime($_POST[$val . 'etime']);
                         }
                         $showmap .= "(" . $roleexptitle[$val] . ' ' . getSelectByName('roleinexp', $_POST[$val . 'sf']) . " '" . $_POST[$val . 'stime'] . "' {$andspan} " . $roleexptitle[$val] . ' ' . getSelectByName('roleinexp', $_POST[$val . 'ef']) . " '" . $showtime . "') ";
                         $map .= $leftipt . " " . "(" . $mapval . getSelectByName('roleexp', $_POST[$val . 'sf']) . strtotime($_POST[$val . 'stime']) . " and " . $mapval . getSelectByName('roleexp', $_POST[$val . 'ef']) . $_POST[$val . 'etime'] . ")" . $rightipt . " ";
                         $typearr[$val][] = array('name' => $val, 'symbols' => $_POST[$val . 'sf'], 'symbole' => $_POST[$val . 'ef'], 'title' => $_POST['roleexptitle'][$val], 'vals' => $_POST[$val . 'stime'], 'sort' => $key, 'vale' => $showetime, 'control' => 'time', 'widget' => 'roleexp', 'leftipt' => $leftipt, 'rightipt' => $rightipt, 'centertip' => $centertip);
                     }
                 }
             }
         }
         if ($roleexp[$key + 1]) {
             if (!$leftipt && !$rightipt) {
                 $map .= "  and  ";
                 $showmap .= $andspan;
             } else {
                 if ($_POST['leftipt'][$key + 1] == "and" || $_POST['rightipt'][$key + 1] == "and") {
                     if (!$centertip[$val]) {
                         $showmap .= $andspan;
                     }
                 } else {
                     if (!$centertip[$val]) {
                         $showmap .= $orspan;
                     }
                 }
             }
         }
         if ($centertip[$val]) {
             $map .= " " . $centertip . " ";
             $showmap .= $centertip == "or" ? $orspan : $andspan;
         }
     }
     if ($_POST['mapsql']) {
         $typearr['mapsql'][] = array('name' => 'sql', 'sql' => $_POST['mapsql']);
         $map .= $_POST['mapsql'];
     }
     if ($_POST['avgsql']) {
         //高级sql模式
         if ($map) {
             $endsql = $_POST['avgsql'] . " and " . $map;
         } else {
             $endsql = $_POST['avgsql'];
         }
         $typearr['avgsql'][] = array('name' => 'avgsql', 'avgsql' => $_POST['avgsql']);
         $avgmap = $_POST['avgsql'];
     }
     if ($typearr) {
         $typearr = base64_encode(base64_encode(serialize($typearr)));
     } else {
         $typearr = "";
     }
     if (!$map) {
         $map = "";
     }
     $listarr = array('list' => $typearr, 'map' => $map, 'endsql' => $endsql, 'jsshowmap' => $showmap . " " . $_POST['mapsql'], 'showmap' => $showmap . $_POST['mapsql']);
     return $listarr;
 }
Пример #3
0
 public function unitExchange($qty = 0, $baseunit, $subunit, $type = 1)
 {
     //mis_system_unit_exchange里的$baseunit,$subunit,转换数量$qty,转换类型$type 1为存储 2为读取
     $result = unitExchange($qty, $baseunit, $subunit, $type = 1);
     return $result;
 }