Files
xinhu/webmain/model/flowcourseModel.php
2025-12-24 10:03:51 +08:00

169 lines
4.2 KiB
PHP

<?php
/**
* 流程步骤的
*/
class flowcourseClassModel extends Model
{
private $courserows = array();
private $getCoursedatasarr,$getTreedatada;
public function initModel()
{
$this->settable('flow_course');
}
public function initCourse($setid, $fields='')
{
$this->courserows = array();
if($fields=='')$fields = '`id`,`name`,`checktype`,`checktypename`,`whereid`,`where`,`status`,`mid`,`pid`,`recename`,`explain`,`optdt`,`nid`';
$rows = $this->getall("`setid`='$setid' and `mid`>=0",$fields,'`pid`,`sort`');
$isinit = false;
$time = '2017-08-10 00:00:00';
foreach($rows as $k=>$rs){
if($rs['mid']>0)$isinit=true;
if($rs['optdt']>$time)$isinit=true;
}
//没有初始化
if(!$isinit){
$pid = '-1';
foreach($rows as $k=>$rs){
if($pid==$rs['pid']){
$mid = $rows[$k-1]['id'];
}else{
$mid = '0';
}
$pid = $rs['pid'];
if($mid!=$rs['mid']){
$this->update('mid='.$mid.'', $rs['id']);
$rs['mid'] = $mid;
}
$this->courserows[] = $rs;
}
$this->update('pid=0', "`setid`='$setid'");
}else{
foreach($rows as $k=>$rs){
$this->courserows[] = $rs;
}
}
//分支说明
foreach($this->courserows as $k=>$rs){
$fzsm = '';
if(!isempt($rs['recename']))$fzsm='适用('.$rs['recename'].')';
$whereid = (int)$rs['whereid'];
if($whereid>0){
$wherena = $this->db->getmou('[Q]flow_where','name', 'id='.$whereid.'');
if(!isempt($wherena)){
if(!isempt($fzsm))$fzsm.=',';
$fzsm.= $wherena;
}
}
if(!isempt($rs['explain'])){
if(!isempt($fzsm))$fzsm.=',';
$fzsm.= '说明('.$rs['explain'].')';
}else if(!isempt($rs['where'])){
if(!isempt($fzsm))$fzsm.=',';
$fzsm.= '审核条件('.$this->rock->jm->base64decode($rs['where']).')';
}
$this->courserows[$k]['fzsm'] = $fzsm;
}
return $this->courserows;
}
public function getCoursedata($setid, $fields='')
{
$drows = $this->initCourse($setid, $fields);
$this->getCoursedatasarr = array();
$children= $this->getCoursedatas($drows, '0', 1);
$rows[] = array(
'name' => '提交',
'num' => 'turn',
'id' => 0,
'mid' => 0,
'level' => 0,
'children' => $children,
'childshu' => count($children),
);
if($fields==''){
$barr['rows'] = $rows;
$barr['treedata'] = $this->getTreedata($setid);
}else{
$barr['rows'] = $children;
}
return $barr;
}
private function getCoursedatas($drows,$mid,$level)
{
$rows = array();
foreach($drows as $k=>$rs){
if($rs['mid']==$mid){
$rs['level'] = $level;
$children = $this->getCoursedatas($drows, $rs['id'], $level+1);
$rs['children'] = $children;
$rs['childshu'] = count($children);
$this->getCoursedatasarr[$rs['id']] = $rs;
$rows[] = $rs;
}
}
return $rows;
}
//获取显示数据
public function getTreedata($setid)
{
$drows = $this->db->getall("select *,(select count(1) from `[Q]flow_course` where `setid`=".$setid." and `mid`=a.id)as stotal from `[Q]flow_course` a where a.`setid`='$setid' order by a.`sort`");
$this->getTreedatada = array();
$this->getTreedatada[] = array(
'name' => '提交',
'num' => '',
'id' => 0,
'stotal' => 1,
'mid' => 0,
'status' => 1,
'iszf' => 0,
'level' => 1
);
$this->getTreedatas($drows,'0',2);
return $this->getTreedatada;
}
private function getTreedatas($drows,$mid,$level)
{
foreach($drows as $k=>$rs){
if($rs['mid']==$mid){
$rs['level'] = $level;
if($rs['whereid']=='0'){
$rs['whereid']='';
}else{
$rs['whereid']=$this->db->getmou('[Q]flow_where','name', 'id='.$rs['whereid'].'');
}
$this->getTreedatada[] = $rs;
$this->getTreedatas($drows, $rs['id'], $level+1);
}
}
}
/**
* 流程匹配的
*/
public function pipeiCourse($setid)
{
$barr = $this->getCoursedata($setid, '*' );
$rows = $barr['rows'];
return array(
'rows' => $rows,
'rowd' => $this->getCoursedatasarr,
);
}
/**
* 读取临时步骤
*/
public function getcoursetemp($setid, $djid)
{
$rows = $this->getall("`setid`='$setid' and `mid` in(-1,-2) and whereid='$djid'",'*','optdt asc');
return $rows;
}
}