public static function getExportData($list, $param) { $lang = Ibos::getLangSources(array("workflow.default")); $data = $titles = $sum = array(); $group = ""; $flow = new ICFlowType($param["flowid"]); $structure = $flow->form->parser->structure; foreach ($list as $index => $row) { if (!empty($param["condition"])) { $formData = WfHandleUtil::getFormData($row["flowid"], $row["runid"]); $notPass = WfHandleUtil::checkCondition($formData, $param["condition"], ""); if ($notPass !== "") { continue; } } $queryHidden = Ibos::app()->db->createCommand()->select("hiddenitem")->from("{{flow_process}} fp")->leftJoin("{{flow_run_process}} frp", "fp.processid = frp.flowprocess")->where(sprintf("fp.flowid = %d AND frp.runid = %d AND frp.uid = %d", $param["flowid"], $row["runid"], $param["uid"]))->queryAll(); $hidden = ConvertUtil::getSubByKey($queryHidden, "hiddenitem"); $itemData = FlowDataN::model()->fetch($param["flowid"], $row["runid"]); $processor = new ICPrintViewProcessor(array("itemData" => $itemData)); foreach (explode(",", $param["viewextfields"]) as $key => $field) { if (strpos($field, ".") !== false) { list(, $itemID) = explode(".", $field); $item = isset($structure[$itemID]) ? $structure[$itemID] : array(); if (empty($item)) { continue; } if ($item["data-type"] == "sign" || $item["data-type"] == "label") { continue; } if (in_array($item["data-title"], $hidden)) { $value = ""; } else { $itemValue = $itemData[$itemID]; switch ($item["data-type"]) { case "checkbox": if ($itemValue == "on") { $value = $lang["Yes"]; } else { $value = $lang["No"]; } break; case "user": case "auto": $method = $item["data-type"] . "Processor"; if (method_exists($processor, $method)) { $value = $processor->{$method}($item, true); } break; case "listview": $sumflag = 0; $lv_subject = $item["data-lv-title"]; $lv_sum = $item["data-lv-sum"]; $lv_sum_array = explode("`", $lv_sum); if (strstr($lv_sum, "1")) { $sumflag = 1; } $lv_value = $itemValue; $item_value = "<table class='commonTable2' ><tr>\n"; $my_array = explode("`", $lv_subject); $array_count_title = sizeof($my_array); if ($my_array[$array_count_title - 1] == "") { $array_count_title--; } for ($i = 0; $i < $array_count_title; $i++) { $item_value .= "<td>" . $my_array[$i] . "</td>\n"; } $item_value .= "</tr>\n"; $my_array = explode("\r\n", $lv_value); $array_count = sizeof($my_array); if ($my_array[$array_count - 1] == "") { $array_count--; } $sum_data = array(); for ($i = 0; $i < $array_count; $i++) { $item_value .= "<tr>\n"; $tr_data = $my_array[$i]; $my_array1 = explode("`", $tr_data); for ($j = 0; $j < $array_count_title; $j++) { if ($lv_sum_array[$j] == 1) { $sum_data[$j] += $my_array1[$j]; } $td_data = $my_array1[$j]; if ($td_data == "") { $td_data = " "; } $item_value .= "<td>" . $td_data . "</td>\n"; } $item_value .= "</tr>\n"; } if ($sumflag == 1 && 0 < $array_count) { $item_value .= "<tr style='font-weight:bold;'>\n"; for ($j = 0; $j < $array_count_title; $j++) { if ($sum_data[$j] == "") { $sumvalue = " "; } else { $sumvalue = "合计:" . $sum_data[$j]; } $item_value .= "<td align=right>" . $sumvalue . "</td>\n"; } $item_value .= "</tr>\n"; } $item_value .= "</table>\n"; break; default: $value = isset($itemData[$itemID]) ? $itemData[$itemID] : ""; break; } } $title = $item["data-title"]; } else { switch ($field) { case "runid": $value = $row["runid"]; $title = $lang["Flow no"]; break; case "runname": $value = $row["runName"]; $title = $lang["Flow subject/num"]; break; case "runstatus": if ($param["flowconditions"]["flowstatus"] == "all") { if ($row["endtime"] == 0) { $status = "<span class=\"red\">{$lang["Perform"]}</span>"; } else { $status = $lang["Has ended"]; } } elseif ($param["flowconditions"]["flowstatus"] == "0") { $status = "<span class=\"red\">{$lang["Perform"]}</span>"; } else { $status = $lang["Has ended"]; } $value = $status; $title = $lang["Flow status"]; break; case "rundate": $value = date("Y-m-d", $row["begintime"]); $title = $lang["Flow begin date"]; break; case "runtime": $value = ConvertUtil::formatDate($row["begintime"]); $title = $lang["Flow begin time"]; break; default: break; } } if (StringUtil::findIn($param["sumfields"], $field)) { $sum[] = $key; } $data[$index][$key] = $value; if ($index == 0) { if (strcmp($param["groupbyfields"]["field"], $field) == 0) { $group = $key; } $titles[$key] = $title; } } } return array("title" => $titles, "data" => $data, "sum" => $sum, "group" => $group, "sum_data" => isset($sum_data) ? $sum_data : array()); }
public function actionShowNext() { $key = EnvUtil::getRequest("key"); if ($key) { $param = WfCommonUtil::param($key, "DECODE"); $flowId = $param["flowid"]; $runId = $param["runid"]; $processId = $param["processid"]; $flowProcess = $param["flowprocess"]; $op = isset($param["op"]) ? $param["op"] : ""; $topflag = EnvUtil::getRequest("topflag"); $lang = Ibos::getLangSources(); $this->nextAccessCheck($topflag, $runId, $processId); $run = new ICFlowRun($runId); $process = new ICFlowProcess($flowId, $flowProcess); $notAllFinished = array(); $parent = ""; foreach (FlowRunProcess::model()->fetchAllByRunIDProcessID($runId, $processId) as $rp) { if ($rp["flowprocess"] == $flowProcess) { $parent .= $rp["parent"] . ","; if (($rp["flag"] == self::TRANS || $rp["flag"] == self::DONE) && $rp["uid"] == $this->uid) { $turnForbidden = true; } else { $turnForbidden = false; } if ($rp["flag"] != self::DONE && $rp["uid"] != $this->uid) { $notAllFinished[] = $rp["uid"]; } } } if ($turnForbidden) { EnvUtil::iExit(Ibos::lang("Already trans")); } if (!empty($notAllFinished)) { $notAllFinished = User::model()->fetchRealnamesbyUids($notAllFinished); } else { $notAllFinished = ""; } if ($process->gathernode == self::FORCE) { foreach (FlowProcess::model()->fetchAllGatherNode($flowId, $flowProcess) as $fp) { $isUntrans = FlowRunProcess::model()->getIsUntrans($runId, $fp["processid"]); if (!StringUtil::findIn($fp["processid"], $parent)) { if ($isUntrans) { EnvUtil::iExit(Ibos::lang("Gathernode trans error")); } } } } if ($process->processto == "") { $prcsMax = FlowProcess::model()->fetchMaxProcessIDByFlowID($flowId); if ($flowProcess !== $prcsMax) { $process->processto = $flowProcess + 1; } else { $process->processto = "0"; } } $prcsArr = explode(",", trim($process->processto, ",")); $prcsArrCount = count($prcsArr); $prcsEnableCount = 0; $prcsStop = "S"; $prcsback = ""; $prcsEnableFirst = null; $list = array(); $formData = WfHandleUtil::getFormData($flowId, $runId); foreach ($prcsArr as $key => $to) { $param = array("checked" => "false"); if ($to == "0") { $param["isover"] = true; $param["prcsname"] = $run->parentrun !== "0" ? Ibos::lang("End subflow") : Ibos::lang("Form endflow"); $prcsStop = $key; $prcsEnableCount++; if ($prcsEnableCount == 1) { $param["checked"] = "true"; $prcsEnableFirst = $key; } if ($run->parentrun !== "0") { $parentFlowId = FlowRun::model()->fetchFlowIdByRunId($run->parentrun); $parentProcess = FlowRun::model()->fetchIDByChild($run->parentrun, $runId); $parentFlowProcess = $parentProcess["flowprocess"]; if ($parentFlowId && $parentFlowProcess) { $temp = FlowProcess::model()->fetchProcess($parentFlowId, $parentFlowProcess); if ($temp) { $prcsback = $temp["processto"]; $backUserOP = $temp["autouserop"]; $param["backuser"] = $temp["autouser"]; } } if ($prcsback != "") { $param["prcsusers"] = WfHandleUtil::getPrcsUser($flowId, $prcsback); $param["display"] = $prcsEnableFirst !== $prcsStop ? false : true; if (isset($backUserOP)) { $param["prcsopuser"] = $backUserOP; } } } } else { $param["isover"] = false; $curProcess = FlowProcess::model()->fetchProcess($flowId, $to); $param["prcsname"] = $curProcess["name"]; $processOut = FlowProcessTurn::model()->fetchByUnique($flowId, $processId, $to); if (!$processOut) { $processOut = array("processout" => "", "conditiondesc" => ""); } $notpass = WfHandleUtil::checkCondition($formData, $processOut["processout"], $processOut["conditiondesc"]); if ($curProcess["childflow"] !== "0") { $param["prcsname"] .= "(" . $lang["Subflow"] . ")"; } if (substr($notpass, 0, 5) == "setok") { $notpass = ""; } if ($notpass == "") { $prcsEnableCount++; if ($prcsEnableCount == 1 || 0 < $process->syncdeal && !is_numeric($prcsStop)) { $param["checked"] = "true"; if ($prcsEnableCount == 1) { $prcsEnableFirst = $key; } } unset($param["notpass"]); $param["selectstr"] = $this->makeUserSelect($runId, $key, $curProcess, $param["prcsname"], $flowId, $processId); } else { $param["notpass"] = $notpass; } } $list[$key] = $param; } if ($prcsEnableCount == 0) { if ($notpass == "") { EnvUtil::iExit($lang["Process define error"]); } else { EnvUtil::iExit($notpass); } } $data = array("lang" => $lang, "notAllFinished" => $notAllFinished, "enableCount" => $prcsEnableCount, "prcsto" => $prcsArr, "prcsback" => $prcsback, "notpass" => isset($notpass) ? $notpass : "", "process" => $process->toArray(), "run" => $run->toArray(), "runid" => $runId, "flowid" => $flowId, "processid" => $processId, "flowprocess" => $flowProcess, "count" => $prcsArrCount, "prcsStop" => $prcsStop, "topflag" => $topflag, "list" => $list, "op" => $op); $this->ajaxReturn($data, "JSONP"); } }