/** * @Title: addWorkMonitoring * @Description: todo(表单工作审核池数据) * @param string $tablename 当前控制器名称 * @param string $tableid 当前单据ID * @param array $infolist 当前可执行的所有流程节点。 * @param bolean $douserid * @param int $dobool 流程回退标记,传入false表示是流程回退/代表子流程审批 * @return boolean * @author 黎明刚 * @date 2014年12月4日 下午4:07:41 * @throws */ public function addWorkMonitoring($tablename, $tableid, $infolist = array(), $douserid = 0, $dobool = true) { //获取当前登录人 $userid = $douserid ? $douserid : $_SESSION[C('USER_AUTH_KEY')]; //获取当前用户名称 $username = getFieldBy($userid, "id", "name", "user"); //获取当前模型中文名称 $modelname = getFieldBy($tablename, "name", "title", "node"); // 查询当前这条记录 $list = D($tablename)->where("id = " . $tableid)->find(); if ($list) { //表示终审 if ($list['auditState'] == 3) { //代表单据撤回。将单据状态改变 $map = array(); $map['tablename'] = $tablename; $map['tableid'] = $tableid; $map['dostatus'] = 1; $workdescid = $this->where($map)->order("id desc")->getField("id"); if ($workdescid) { $result = $this->where("id = " . $workdescid)->setField("auditState", 3); if ($result == false) { return false; } } } /* * 流程撤回 */ if ($list['auditState'] == 0) { //代表单据撤回。将单据状态改变 $map = array(); $map['tablename'] = $tablename; $map['tableid'] = $tableid; $map['dostatus'] = 0; $result = $this->where($map)->delete(); if ($result == false) { return false; } } /* * 处理状态为审核和打回,将进行当前工作池记录的修改。 */ if ($list['auditState'] == 2 || $list['auditState'] == -1 || !$dobool) { // 修改以前的数据 修改为处理完成 $map = array(); $map['tablename'] = $tablename; $map['tableid'] = $tableid; $map['dostatus'] = 0; if ($list['auditState'] == 2 && $dobool) { //此参数$brankbool 为false时,表示流程打回 $map['_string'] = 'FIND_IN_SET( ' . $userid . ',curAuditUser )'; } // 根据单据本身获取信息 $data = array(); $data['auditState'] = $list['auditState']; // 2.POST传值获取信息 $data['doinfo'] = $_REQUEST['doinfo']; $data['dotime'] = time(); // 3、自动获取信息赋值 $data['dostatus'] = 1; $data['updateid'] = $_SESSION[C('USER_AUTH_KEY')]; $data['userid'] = $_SESSION[C('USER_AUTH_KEY')]; $data['updatetime'] = time(); $result = $this->where($map)->save($data); if ($result == false) { return false; } } /* * 判断流程不是打回,或者不是新建,则向工作池中推送审核人信息 * 1、判断推送的节点是什么类型的节点 * parallel 0 单批次审核人串行节点,1单批次审核人并行节点, 2多批次审核串并混搭 * * 0:单批次审核人串行,则向工作池只推送一条审核任务 * 1:单批次审核人并行,判断一共有多少个审核,则向工作池推送多少条审核信息 * 2:多批次审核人串并混搭,这种情况是最复杂的,先推送并行的,在推送单个并行节点上面的串行审批 * */ if ($list['auditState'] != -1 && $list['auditState'] != 0) { //存储unset之前的数组,方便下面运用 foreach ($infolist as $key => $val) { if ($val['doing'] == 0 || $val['flowtype'] < 2) { unset($infolist[$key]); } } $infolist = array_merge($infolist); //当前本该进行执行的节点数据 $info = $infolist[0]; if ($infolist && $info) { //定义标题大概 if ($info['title'] && $list[$info['title']]) { //有定义标题大概,进行标题大概转换 $scdmodel = D('SystemConfigDetail'); //读取列名称数据(按照规则,应该在index方法里面) $detailList = $scdmodel->getDetail($tablename, false, '', 'sortnum', 'status'); foreach ($detailList as $k1 => $v1) { if ($v1['name'] == $info['title']) { //判断标题大概是否匹配上字段 if (count($v1['func']) > 0) { $varchar = ""; foreach ($v1['func'] as $k2 => $v2) { //开始html字符 if (isset($v1['extention_html_start'][$k2])) { $varchar = $v1['extention_html_start'][$k2]; } //中间内容 $varchar .= getConfigFunction($list[$v1['name']], $v2, $v1['funcdata'][$k2], $list); if (isset($v1['extention_html_end'][$k2])) { $varchar .= $v1['extention_html_end'][$k2]; } //结束html字符 } $list[$info['title']] = $varchar; break; } } } } /* * 限制子流程生单,控制自动生单 */ if ($info['flowtype'] == 3 && $info['isauto'] == 1 && $list['projectid'] && false) { //根据projectid查询来源模型数据 $issourcemodel = D($info['issourcemodel']); //来源数据ID $issourceid = $issourcemodel->where("projectid = " . $projectid)->getField("id"); if ($issourceid) { //子流程数据漫游 iatuo = 1 自动生单 $MisSystemDataRoamingModel = D("MisSystemDataRoaming"); //第一个参数为类型,3是子流程类型;第二个参数为来源模型,对应$info['tablename'];第三个参数为来源模型主键,对应$info['tableid']; //第四个参数为来源操作类型,这里可以扩展,初始指定为来源模型的修改动作为2;第五个参数为子流程对应的目标模型,这里对应$info['isauditmodel']; $MisSystemDataRoamingModel->main(3, $info['issourcemodel'], $issourceid, 2, $info['isauditmodel']); //这里查询目标model最大值 $isaudittableid = D($info['isauditmodel'])->max('id'); M('process_relation_form')->where('id=' . $info['id'])->setField('isaudittableid', $isaudittableid); } else { return false; } } else { if ($info['parallel'] == 2) { //多批次审核人串并混搭 $process_relation_parallelDao = M("process_relation_parallel"); $map = array(); $map['tablename'] = $tablename; $map['tableid'] = $tableid; $map['relation_formid'] = $info['id']; $map['parentid'] = 0; $relation_parallellist = $process_relation_parallelDao->where($map)->select(); foreach ($relation_parallellist as $pk => $pv) { if ($pv['auditState'] == 0 && $pv['parentid'] == 0) { //单批次审核人串行 $data = array(); $data['tablename'] = $tablename; // 单据对应表名称 $data['tableid'] = $tableid; // 单据对应表ID $data['title'] = $list[$info['title']]; //存储标题大概 $data['orderno'] = $list['orderno']; // 单据对应表编号 $data['ptmptid'] = $list['ptmptid']; // 流程ID $data['auditState'] = $list['auditState']; //表单状态 $data['relationname'] = $info['name']; //审核节点名称 $data['bactchname'] = $pv['bactchname']; //批次名称 $data['bactchid'] = $pv['id']; //批次id $data['typeid'] = $info['typeid']; //流程分类 //验证流程转授 $relatinfo = $this->setZhuanShouCurAuditUser($pv['curAuditUser'], $tablename); $data['curAuditUser'] = $relatinfo['curAuditUser']; //节点可审核人清单 $data['miaoshu'] = $relatinfo['zhuanmiaoshu']; //流程转授信息 $data['zhuanshou'] = $relatinfo['zhuanshou'] ? 1 : 0; //转授标记 $data['ostatus'] = $info['id']; //可以审核节点 $data['parallel'] = $info['parallel']; ////单批次审核人串行 $data['ismobile'] = $info['ismobile']; //是否可以手机审批 $data['createid'] = $list['createid']; // 创建人 $data['createtime'] = time(); // 创建时间 //$data ['updateid'] = $list ['updateid']; // 更新人 //$data ['updatetime'] = $list ['updatetime']; // 更新时间 $data['companyid'] = $list['companyid']; // 所属公司 $data['departmentid'] = $list['departmentid']; // 所属部门 $data['projectid'] = $list['projectid']; // 项目id $data['projectworkid'] = $list['projectworkid']; // 项目任务id //通过POST 插入一条心的工作任务 $result = $this->add($data); if ($result == false) { return false; } else { $process_relation_parallelDao->where("id = " . $pv['id'])->setField("auditState", 1); } } if ($pv['auditState'] == 2) { //完成的批次 $diguivo = $this->diguiList($pv['id']); if ($diguivo) { //单批次审核人串行 $data = array(); $data['tablename'] = $tablename; // 单据对应表名称 $data['tableid'] = $tableid; // 单据对应表ID $data['title'] = $list[$info['title']]; //存储标题大概 $data['orderno'] = $list['orderno']; // 单据对应表编号 $data['ptmptid'] = $list['ptmptid']; // 流程ID $data['auditState'] = $list['auditState']; //表单状态 $data['relationname'] = $info['name']; //审核节点名称 $data['bactchname'] = $diguivo['bactchname']; //批次名称 $data['bactchid'] = $diguivo['id']; //批次ID $data['typeid'] = $info['typeid']; //流程分类 //$data ['curAuditUser'] = $diguivo['curAuditUser']; //节点可审核人清单 //验证流程转授 //$data ['curAuditUser'] = $this->setZhuanShouCurAuditUser($diguivo['curAuditUser'],$tablename); //验证流程转授 $relatinfo = $this->setZhuanShouCurAuditUser($diguivo['curAuditUser'], $tablename); $data['curAuditUser'] = $relatinfo['curAuditUser']; //节点可审核人清单 $data['miaoshu'] = $relatinfo['zhuanmiaoshu']; //流程转授信息 $data['zhuanshou'] = $relatinfo['zhuanshou'] ? 1 : 0; //转授标记 $data['ostatus'] = $info['id']; //可以审核节点 $data['parallel'] = $info['parallel']; //单批次审核人串行 $data['ismobile'] = $info['ismobile']; //是否可以手机审批 $data['createid'] = $list['createid']; // 创建人 $data['createtime'] = time(); // 创建时间 //$data ['updateid'] = $list ['updateid']; // 更新人 //$data ['updatetime'] = $list ['updatetime']; // 更新时间 $data['companyid'] = $list['companyid']; // 所属公司 $data['departmentid'] = $list['departmentid']; // 所属部门 $data['projectid'] = $list['projectid']; // 项目id $data['projectworkid'] = $list['projectworkid']; // 项目任务id //通过POST 插入一条心的工作任务 $result = $this->add($data); if ($result == false) { return false; } else { $process_relation_parallelDao->where("id = " . $diguivo['id'])->setField("auditState", 1); //进入推送信息 $this->pushInfo($relatinfo['curAuditUser'], $modelname, $data['title']); } } } } } else { if ($info['parallel'] == 1) { //单批次并行没人审核时才推送 $alreadyAuditUser = array_filter(explode(",", $info['alreadyAuditUser'])); if (count($alreadyAuditUser) == 0) { $userstr = ""; //单批次审核人并行 $curAuditUser = explode(",", $info['curAuditUser']); $dataAll = array(); foreach ($curAuditUser as $key => $val) { $data = array(); $data['tablename'] = $tablename; // 单据对应表名称 $data['tableid'] = $tableid; // 单据对应表ID $data['title'] = $list[$info['title']]; //存储标题大概 $data['orderno'] = $list['orderno']; // 单据对应表编号 $data['ptmptid'] = $list['ptmptid']; // 流程ID $data['auditState'] = $list['auditState']; //表单状态 $data['typeid'] = $info['typeid']; //流程分类 $data['relationname'] = $info['name']; //审核节点名称 //验证流程转授 $relatinfo = $this->setZhuanShouCurAuditUser($val, $tablename); //组合推送用户信息 $userstr .= "," . $relatinfo; $data['curAuditUser'] = $relatinfo['curAuditUser']; //节点可审核人清单 $data['miaoshu'] = $relatinfo['zhuanmiaoshu']; //流程转授信息 $data['zhuanshou'] = $relatinfo['zhuanshou'] ? 1 : 0; //转授标记 $data['ostatus'] = $info['id']; //可以审核节点 $data['parallel'] = $info['parallel']; //单批次审核人并行 $data['ismobile'] = $info['ismobile']; //是否可以手机审批 $data['createid'] = $list['createid']; // 创建人 $data['createtime'] = time(); // 创建时间 //$data ['updateid'] = $list ['updateid']; // 更新人 //$data ['updatetime'] = $list ['updatetime']; // 更新时间 $data['companyid'] = $list['companyid']; // 所属公司 $data['departmentid'] = $list['departmentid']; // 所属部门 $data['projectid'] = $list['projectid']; // 项目id $data['projectworkid'] = $list['projectworkid']; // 项目任务id $dataAll[] = $data; } if ($dataAll) { //通过POST 插入一条心的工作任务 $result = $this->addAll($dataAll); if ($result == false) { return false; } $userarr = array_unique(array_filter(explode(",", $userstr))); $pushcurAuditUser = implode(",", $userarr); //进入推送信息 $this->pushInfo($pushcurAuditUser, $modelname, $data['title']); } } } else { //单批次审核人串行 $data = array(); $data['tablename'] = $tablename; // 单据对应表名称 $data['tableid'] = $tableid; // 单据对应表ID $data['title'] = $list[$info['title']]; //存储标题大概 $data['orderno'] = $list['orderno']; // 单据对应表编号 $data['ptmptid'] = $list['ptmptid']; // 流程ID $data['auditState'] = $list['auditState']; //表单状态 $data['relationname'] = $info['name']; //审核节点名称 $data['typeid'] = $info['typeid']; //流程分类 //验证流程转授 $relatinfo = $this->setZhuanShouCurAuditUser($info['curAuditUser'], $tablename); $data['curAuditUser'] = $relatinfo['curAuditUser']; //节点可审核人清单 $data['miaoshu'] = $relatinfo['zhuanmiaoshu']; //流程转授信息 $data['zhuanshou'] = $relatinfo['zhuanshou'] ? 1 : 0; //转授标记 //$data ['curAuditUser'] = $info['curAuditUser']; //节点可审核人清单 $data['ostatus'] = $info['id']; //可以审核节点 $data['parallel'] = $info['parallel']; ////单批次审核人串行 $data['ismobile'] = $info['ismobile']; //是否可以手机审批 $data['createid'] = $list['createid']; // 创建人 $data['createtime'] = time(); // 创建时间 //$data ['updateid'] = $list ['updateid']; // 更新人 //$data ['updatetime'] = $list ['updatetime']; // 更新时间 $data['companyid'] = $list['companyid']; // 所属公司 $data['departmentid'] = $list['departmentid']; // 所属部门 $data['projectid'] = $list['projectid']; // 项目id $data['projectworkid'] = $list['projectworkid']; // 项目任务id //通过POST 插入一条心的工作任务 $result = $this->add($data); if ($result == false) { return false; } //进入推送信息 $this->pushInfo($relatinfo['curAuditUser'], $modelname, $data['title']); } } } //推送成功,将process_relation_form表可以进行干预的节点标记出来 $setbool = M("process_relation_form")->where("id = " . $info['id'])->setField("ganyustate", 1); if ($setbool == false) { return false; } } } return true; } else { return false; } }
/** * $data[0] $controllType 组件类型 lookup , lookupsuper * $data[1] $vo 页面vo数据 * $data[2] $controllProperty 当前组件的属性ID或属性数组 * $data[3] $isedit 是否为修改操作页面 * $data[4] $isreturnvalue 是否为view操作页面 * $data[5] $ganshe 干涉页面 状态归0 * @see Widget::render() */ public function render($data) { /** 数据收集 */ unset($vo); $controllType = $data[0]; //组件类型 lookup , lookupsuper $vo = $data[1]; //页面vo数据 $controllProperty = $data[2]; //当前组件的属性ID或属性数组 $isedit = $data[3]; //是否为修改操作页面 $isreturnvalue = $data[4]; //是否为view操作页面 $ganshe = $data[5]; //干涉页面 状态归0 $ismuchchoice = $data[6]; //是否多选 1是0否 /** 数据处理 */ $dir = CONF_PATH; $controlls = (require $dir . 'controlls.php'); require $dir . 'property.php'; $privateProperty = array(); foreach ($controlls as $key => $val) { if ($val['property']) { $privateProperty[$key] = array_merge($NBM_COMMON_PROPERTY, $val['property']); } else { $privateProperty[$key] = $NBM_COMMON_PROPERTY; } } $property = $privateProperty['lookup']; switch ($controllType) { case 1: $controllType = 'lookup'; break; case 2: $controllType = 'lookupsuper'; default: $controllType = 'lookup'; break; } if (!is_array($controllProperty)) { $obj = M('mis_dynamic_form_propery'); $controllProperty = $obj->where('id=' . $controllProperty)->find(); if ($ganshe == '1') { $controllProperty[$property['islock']['dbfield']] = 1; $controllProperty[$property['requiredfield']['dbfield']] = 1; $controllProperty[$property['isshow']['dbfield']] = 0; } } if (!is_array($controllProperty)) { return '<error>Lookup组件配置错误/没有属性<error>'; } /** 开始lookup属性解析 */ if (!$isreturnvalue) { $chtml = ''; if ($controllProperty[$property['checkfunc']['dbfield']]) { $chtml = $controllProperty[$property['checkfunc']['dbfield']]; } $required = ''; // 必填验证 if ($controllProperty[$property['requiredfield']['dbfield']] && $ganshe != '1') { $required = 'required'; } $chtml = $required . 'nbm ' . $chtml; //获取lookup key值 动态加载lookup配置 $lookupchoice = $controllProperty[$property['lookupchoice']['dbfield']]; $lookupObj = D('LookupObj'); $lookupDetail = $lookupObj->GetLookupDetail($lookupchoice); //var_dump($lookupDetail['condition']); $defaultLookupCondition = $lookupDetail['condition']; // lookup配置时生成的过滤条件。 $model = $lookupDetail['mode']; $urls = $lookupDetail['url']; $lookupgroup = $controllProperty[$property['lookupgroup']['dbfield']]; //视图特殊处理 if ($lookupDetail["viewname"]) { $viewname = $lookupDetail["viewname"]; //视图名称 $viewsavefield = $lookupDetail["val"]; //视图显示字段 $viewshowfield = $lookupDetail["filed"]; //视图存储字段 $dataViewModel = M("mis_system_dataview_mas"); $viewsql = "SELECT s.field FROM mis_system_dataview_mas AS m LEFT JOIN mis_system_dataview_sub AS s ON m.id=s.masid WHERE m.status=1 and s.status=1 and m.`name`='{$viewname}' AND s.otherfield="; //存储字段 $savefieldviewsql = $viewsql . "'{$viewsavefield}' limit 1"; $savefieldviewfieldarr = $dataViewModel->query($savefieldviewsql); $savefieldviewfieldexplode = explode(".", $savefieldviewfieldarr[0]['field']); $savefieldviewtable = $savefieldviewfieldexplode[0]; //存储字段所在的真实表名 $orgval = $savefieldviewfieldexplode[1]; //存储字段真实字段名 //显示字段 $showfieldviewsql = $viewsql . "'{$viewshowfield}' limit 1"; $showfieldviewfieldarr = $dataViewModel->query($showfieldviewsql); $showfieldviewfieldexplode = explode(".", $showfieldviewfieldarr[0]['field']); $showfieldviewtable = $showfieldviewfieldexplode[0]; //显示字段所在的真实表名 $orgchar = $showfieldviewfieldexplode[1]; //显示字段真实字段名 } else { $orgval = $lookupDetail['val'] ? $lookupDetail['val'] : 'id'; $orgchar = $lookupDetail['filed'] ? $lookupDetail['filed'] : 'name'; } $orgLookuoVal = $controllProperty[$property['org']['dbfield']]; // 值 value $orgLookupText = $controllProperty[$property['org1']['dbfield']]; // 显示内容 text $readonly = $controllProperty[$property['islock']['dbfield']] == 1 ? false : true; $view = ''; if ($lookupDetail['viewname']) { $view = '&viewname=' . $lookupDetail['viewname']; } if ($lookupDetail['dt']) { $dtcon = '&lookuptodatatable=2'; } $muchchoice = ''; if ($ismuchchoice == 1) { $muchchoice = '&ismuchchoice=' . $ismuchchoice; } // lookup的值反写 $textCounterCheck = ''; // 显示文本的反写 text $valCounterCheck = ''; // 值的反写 value // lporder 从外部lookup中取值字段 // lpkey 当前lookup的key // lpfor 往哪个东西里写值 // lpself 当前项的字段名称 if ($orgLookuoVal) { unset($temp); $temp = explode('.', $orgLookuoVal); $valCounterCheck = "callback=\"lookup_counter_check\" lpkey=\"{$lookupchoice}\" lpfor=\"{$lookupgroup}.{$orgchar}\" lpself=\"{$orgval}\" lporder=\"{$temp[1]}\""; } if ($orgLookupText) { unset($temp); $temp = explode('.', $orgLookupText); $textCounterCheck = "callback=\"lookup_counter_check\" lpkey=\"{$lookupchoice}\" lpfor=\"{$lookupgroup}.{$orgval}\" lpself=\"{$orgchar}\" lporder=\"{$temp[1]}\""; } // lookup附加条件处理 $appendCondtionArr = array(); $appendCondtion = $controllProperty[$property['additionalconditions']['name']]; // 附加条件设置信息 if ($appendCondtion) { $appendCondtion = unserialize(base64_decode($appendCondtion)); // proexp 表单字段列表 // sysexp 系统字段列表 $formFiledList = $appendCondtion['proexp']; $sysFieldList = $appendCondtion['sysexp']; // $formFiledFmt=array(); // $sysFieldFmt = array(); $sysFieldFmt = unserialize($sysFieldList) or array(); // 获取真实的表单字段名。 if ($formFiledList) { $formFiledListArr = unserialize($formFiledList) or array(); if (is_array($formFiledListArr) && count($formFiledListArr)) { $formFiledKey = array_keys($formFiledListArr); $properModel = M('mis_dynamic_form_propery'); $properMap['id'] = array('in', $formFiledKey); $fd = $properModel->where($properMap)->field('fieldname,id')->select(); if ($fd) { foreach ($fd as $k => $v) { // $fieldArr[] = $v['fieldname']; if ($formFiledListArr[$v['id']] == -1) { $formFiledFmt[$v['fieldname']] = $v['fieldname']; } else { $formFiledFmt[$v['fieldname']] = $formFiledListArr[$v['id']]; //$formFiledFmt[$formFiledListArr[$v['id']]] = $v['fieldname']; } } } } } if (is_array($sysFieldFmt) && is_array($formFiledFmt)) { $appendCondtionArr = array_merge($sysFieldFmt, $formFiledFmt); } elseif (is_array($sysFieldFmt) && !is_array($formFiledFmt)) { $appendCondtionArr = $sysFieldFmt; } elseif (!is_array($sysFieldFmt) && is_array($formFiledFmt)) { $appendCondtionArr = $formFiledFmt; } else { $appendCondtionArr = array(); } $conditions = getAppendCondition($vo, $formFiledFmt); $systemconditionsTemp = getAppendCondition($vo, $sysFieldFmt); // if($defaultLookupCondition){ // $systemconditions = $defaultLookupCondition; // if($systemconditionsTemp){ // $systemconditions .= ' and '.$systemconditionsTemp; // } // }else{ // $systemconditions = $systemconditionsTemp; // } $systemconditions = $systemconditionsTemp; } $val = ''; $tempModel = D($model); $temptable = ''; //视图时取字段对应的真实字段所在真实表名 if ($lookupDetail["viewname"]) { $temptable = $savefieldviewtable; } else { $temptable = $tempModel->getTableName(); } $map = ''; $value = $vo[$controllProperty[$property['fields']['dbfield']]]; if ($value) { if (strpos($value, ',')) { $valueStr = explode(',', $value); $map = $orgval . " in ('" . join("','", $valueStr) . "')"; } else { $map = $orgval . "='" . $value . "'"; } } //$viewval = $isedit ?(getFieldBy($value , $orgval , $orgchar , $tempModel->getTableName())):''; // if(!$map){ // $viewval=''; // }else{ // $viewval = $isedit ?(getFieldData($orgchar , $temptable , $map , true , 1000)):''; // } //多做了个分支,主要是应付视图里储存字段不唯一的情况 /** *当储存字段(以orderno=06为例)查询结果有n条记录,显示字段(以type为例)可以和储存字段保证一致性(当orderno=06时,查出的type全部都是“请假”) */ if (!$map) { $viewval = ''; } else { if (strpos($value, ',')) { $viewval = $isedit ? getFieldData($orgchar, $temptable, $map, true, 1000) : ''; } else { $viewval = $isedit ? getFieldBy($value, $orgval, $orgchar, $temptable) : ''; // } } $html = "<div class=\"tml-input-lookup\">"; $paramsEcho = arr2string($map); $controllPropertyEcho = '字段名:' . $controllProperty[$property['fields']['dbfield']] . '__表名:' . $tempModel->getTableName(); // $html.=<<<EOF // <script> // console.log("lookup查询条件:{$controllPropertyEcho}--{$orgchar}--查询条件:{$paramsEcho} 修改状态:{$isedit}"); // </script> // EOF; $readonlyCls = 'active_lookup'; if ($readonly) { $readonlyCls = ''; } $html .= "<input type=\"text\" {$textCounterCheck} class=\"{$lookupgroup}.{$orgchar} {$chtml} input_new half_angle_input {$orgLookupText} {$readonlyCls} \" autocomplete=\"off\" readonly=\"readonly\" value=\"" . $viewval . "\" />"; $html .= "<input type=\"hidden\" {$valCounterCheck} class=\"{$required} {$lookupgroup}.{$orgval} {$orgLookuoVal}\" name=\"" . $controllProperty[$property['fields']['dbfield']] . "\" value=\"" . $vo[$controllProperty[$property['fields']['dbfield']]] . "\" />"; if ($readonly) { // 只读情况 // lookup 触发按钮 $html .= "<a class=\"icon_elm mid_icon_elm icon-plus\"></a>"; // $title // 清空 lookup 按钮 $html .= "<a title=\"清空信息-只读\" class=\"icon_elm icon-trash\" href=\"javascript:void(0);\"></a>"; } else { $formFiledFmt = array_flip($formFiledFmt); $conditionOprateString = "condition=\"\""; if (is_array($formFiledFmt)) { $conditionOprateString = "condition=" . json_encode($formFiledFmt); } // lookup 触发按钮 $html .= "<a class=\"icon_elm mid_icon_elm icon-plus\" syscondition=\"{$systemconditions}\" newconditions=\"{$conditions}\" ismuchchoice=\"{$ismuchchoice}\" {$conditionOprateString} param=\"lookupchoice={$lookupchoice}{$muchchoice}&newconditions={$view}{$dtcon}\" href=\"__URL__/{$urls}\" lookupGroup=\"{$lookupgroup}\" ></a>"; //$title // 清空 lookup 按钮 $html .= "<a title=\"清空信息-可读写\" class=\"icon_elm icon-trash\" href=\"javascript:void(0);\" onclick=\"clearOrg('{$lookupgroup}');\"></a>"; } $html .= "</div>"; } else { $func = ""; $parmFunc = array(); // 处理子表及主表的lookup值转换 , modify by nbmxkj at 20150127 20 // *****注意:func 与 funcdata 数组项一定要个数对应。**** $scdmodel = D('SystemConfigDetail'); $detailList = $scdmodel->getDetail(MODULE_NAME, '', '', '', 'status'); $dval = $detailList[$controllProperty[$property['fields']['dbfield']]]; if (is_array($dval)) { if (count($dval['func']) > 0) { $varchar = ""; foreach ($dval['func'] as $k3 => $v3) { //开始html字符 if (isset($dval['extention_html_start'][$k3])) { $varchar = $dval['extention_html_start'][$k3]; } //中间内容 $varchar .= getConfigFunction($vo[$dval['name']], $v3, $dval['funcdata'][$k3], $vo); if (isset($dval['extention_html_end'][$k3])) { $varchar .= $dval['extention_html_end'][$k3]; } //结束html字符 } $html = $varchar; } else { $viewval = $vo[$controllProperty[$property['fields']['dbfield']]]; $html = $viewval; } } } return $html; }
/** * @Title: getNeiQianDetail * @Description: todo(内嵌表行数据详情信息) * @param 返回的数据格式类型 $returnType * @return Ambigous <array, unknown> * @author liminggang * @date 2015-7-24 上午9:45:23 * @throws */ public function getNeiQianDetail($returnType = 'json') { /* * 这里有3个参数 * * 参数一:tablename 是当前模型名称(上面方法中数据中的tablename) * 参数二:tableid 是当前模型名称(上面方法中数据中的tableid) * 参数三:zhumodelname 是当前内嵌表的主模型(为了查找内嵌表的配置文件list.inc.php) */ //主模型名称 $zhumodelname = $_REQUEST['zhumodelname']; //获取传递过来的模型名称 $modelName = $_REQUEST['tablename']; //获取传递过来的模型数据ID $tableid = $_REQUEST['tableid']; if (!$_REQUEST['tablename']) { return $this->getReturnData(array(), 'json', 0, "模型名称必须"); } if (!$_REQUEST['tableid']) { return $this->getReturnData(array(), 'json', 0, "数据ID值必须"); } if (!$zhumodelname) { return $this->getReturnData(array(), 'json', 0, "主模型名称必须"); } // 获取list.inc.php配置文件内容的模型 $scdmodel = D('SystemConfigDetail'); // 获取内嵌表的配置文件 $detailList = $scdmodel->getEmbedDetail($zhumodelname, $modelName); $map['id'] = $tableid; //查询数据库取得详细信息记录 $list = D($modelName)->where($map)->find(); //定义返回值 $returnData = array(); //首先循环动态配置的详细信息 foreach ($detailList as $detailListKey => $detailListVal) { //根据动态配置某个标识过滤多余的数据 if ($detailListVal["shows"] == 1) { //将动态配置名称与数据库返回记录里的字段主键做比较,存在时执行 if (array_key_exists($detailListVal['name'], $list)) { //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } else { //将动态配置名称与数据库返回记录里的字段主键做比较,不存在时,通过配置函数函数获取到值 //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } } } //message信息拼装 $message = array(); $index = 0; foreach ($returnData as $key => $val) { //初始化一个字符串容器 foreach ($val as $subkey => $subval) { $message[$index] = array('name' => $subkey, 'value' => $subval); $index++; } } $returnData = array(); //将值赋予返回数据 $returnData['list'] = $message; // print_r($returnData); // exit; // logs($returnData,'list'); return $this->getReturnData($returnData, $returnType, 1000, "详情获取成功"); }
/** * * @Title: sysremind * @Description: todo(单据提示) * @param unknown $modelname * @param unknown $pkey * @author renling * @date 2015年8月28日 上午10:55:41 * @throws */ public function sysremind($modelname, $pkey) { $map = array(); $map['isreminds'] = 1; $map['actionname'] = $modelname; $model = M("mis_dynamic_form_manage"); $resultlist = $model->where($map)->find(); //单据需要提示 if ($resultlist) { $contentstr = ""; //读取单据配置 $configModel = M("mis_system_remind_config"); $remindModel = M("mis_system_sysremind"); $cfMap = array(); $cfMap['actionname'] = $modelname; $configList = $configModel->where($cfMap)->select(); //替换类容如果包含字段,需要查看字段配置信息是否有转换函数 by xyz $scdmodel = D('SystemConfigDetail'); $detailList = $scdmodel->getDetail($modelname, false); $detailListNew = array(); foreach ($detailList as $dk => $dv) { $detailListNew[$dv['name']] = $dv; } if ($configList) { foreach ($configList as $key => $val) { $length = $val['fieldlegth']; if ($_POST[$val['field']]) { //替换类容如果包含字段,需要查看字段配置信息是否有转换函数 by xyz if (count($detailListNew[$val['field']]['func']) > 0) { //函数循环层 foreach ($detailListNew[$val['field']]['func'] as $fk => $fv) { $_POST[$val['field']] = getConfigFunction($_POST[$val['field']], $fv, $detailListNew[$val['field']]['funcdata'][$fk]); } } $contentstr .= cut_str($_POST[$val['field']], $length); } } } $remindDate = array(); $remindDate['modelname'] = $modelname; $remindDate['content'] = $contentstr; $remindDate['remindcreateid'] = $_SESSION[C('USER_AUTH_KEY')]; //$remindDate['remindcreatetime']=time(); $remindDate['pkey'] = $pkey; $remindDate['isread'] = 0; $remindDate['createid'] = $_SESSION[C('USER_AUTH_KEY')]; $remindDate['createtime'] = time(); if ($_POST['auditUser']) { //查询当前单据是否带有字段提示人 $fieldModel = M("mis_system_remind_config_userfield"); $fieldMap = array(); $fieldMap['actionname'] = $modelname; $fieldMap['status'] = 1; $fieldList = $fieldModel->where($fieldMap)->getField("id,userfield"); if ($fieldList) { $fuserArr = array(); foreach ($fieldList as $fkey => $fval) { if ($_POST[$fval]) { $fuserArr[] = $_POST[$fval]; } } $_POST['auditUser'] = $_POST['auditUser'] . "," . explode(',', $fuserArr); } $userList = explode(',', $_POST['auditUser']); foreach ($userList as $ukey => $uval) { $remindDate['userid'] = $uval; $remindModel->add($remindDate); } } else { //通知所有人 $userModel = D("User"); $userMap = array(); $userMap['status'] = 1; $userMap['account'] = array('not in', 'admin'); $userMap['usertype'] = 1; $userList = $userModel->where($userMap)->getField("id,account"); foreach ($userList as $ulkey => $ulval) { $remindDate['userid'] = $ulkey; $remindModel->add($remindDate); } } } }
/** * @Title: getDateListData * @Description: todo(根据配置文件list.inc.php,转换数据格式) * @param 模型名称 $modelname * @param 数据二维数组 $volist * @param 字段前缀名 $extend * @author 黎明刚 * @return 返回转换后的二维数组 * @date 2015年1月13日 下午3:04:47 * @throws */ protected function getDateListData($modelname, $volist) { //begin $scdmodel = D('SystemConfigDetail'); //读取列名称数据(按照规则,应该在index方法里面) $detailList = $scdmodel->getDetail($modelname, false, '', 'sortnum', 'status'); foreach ($volist as $key => $val) { foreach ($detailList as $k1 => $v1) { if ($v1['name'] == "action" || $v1['name'] == "auditState" || strpos(strtolower($v1['name']), "datatable") !== false) { continue; } //下面这个if会过滤掉一批字段中不存在的转换目标值。这里取消这种判断 //if($val[$v1['name']]){ if (count($v1['func']) > 0) { $varchar = ""; foreach ($v1['func'] as $k2 => $v2) { //开始html字符 if (isset($v1['extention_html_start'][$k2])) { $varchar = $v1['extention_html_start'][$k2]; } //中间内容 $varchar .= getConfigFunction($val[$v1['name']], $v2, $v1['funcdata'][$k2], $val); if (isset($v1['extention_html_end'][$k2])) { $varchar .= $v1['extention_html_end'][$k2]; } //结束html字符 } $volist[$key][$v1['name']] = $varchar; $volist[$key][$v1['name'] . '_souce'] = $val[$v1['name']]; } //} } } return $volist; }
/** * @Title: GetDynamicconfData * @Description: todo(获取动态配置的单行返回值) * @param $model string 模型对象名称 * @param $id int 模型对象的记录(表主键) * @param $mapType string 匹配类型,只支持boolean型的 * @return $returnData array 返回数组 * @author 杨希 * @date 2014-4-15 上午10:00:00 * @throws */ public function GetDynamicconfData($modelname, $id, $mapType = "message", $field = "id", $isallshow = false) { $model = D($modelname); $detailList = $this->getDetail($modelname, false); $map[$field] = $id; $map['status'] = 1; //查询数据库取得详细信息记录 $list = $model->where($map)->find(); //定义返回值 $returnData = array(); //首先循环动态配置的详细信息 foreach ($detailList as $detailListKey => $detailListVal) { if ($isallshow) { if ($detailListVal['name'] != 'action') { if (array_key_exists($detailListVal['name'], $list)) { //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); if ($funcVal[0] == 'richtext2str') { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = htmlspecialchars_decode($list[$detailListVal['name']]); } else { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = $list[$detailListVal['name']]; } } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } else { //将动态配置名称与数据库返回记录里的字段主键做比较,不存在时,通过配置函数函数获取到值 //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); if ($funcVal[0] == 'richtext2str') { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = htmlspecialchars_decode($list[$detailListVal['name']]); } else { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = $list[$detailListVal['name']]; } } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } } } else { //根据动态配置某个标识过滤多余的数据 if ($detailListVal[$mapType] == 1) { //将动态配置名称与数据库返回记录里的字段主键做比较,存在时执行 if (array_key_exists($detailListVal['name'], $list)) { //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); if (${$funcVal}[0] = 'richtext2str') { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = htmlspecialchars_decode($list[$detailListVal['name']]); } else { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = $list[$detailListVal['name']]; } } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } else { //将动态配置名称与数据库返回记录里的字段主键做比较,不存在时,通过配置函数函数获取到值 //存在函数时 if ($detailListVal['func']) { foreach ($detailListVal['func'] as $funcKey => $funcVal) { $returnData[$detailListVal['name']][$detailListVal['showname']] = getConfigFunction($list[$detailListVal['name']], $funcVal, $detailListVal['funcdata'][$funcKey], $list); if ($funcVal[0] == 'richtext2str') { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = htmlspecialchars_decode($list[$detailListVal['name']]); } else { $returnData[$detailListVal['name'] . '_souce'][$detailListVal['showname'] . '_souce'] = $list[$detailListVal['name']]; } } } else { $returnData[$detailListVal['name']][$detailListVal['showname']] = $list[$detailListVal['name']]; } } } } } return $returnData; }
/** * ajax获取文本框的固定显示-动态取值功能 * @Title: lookupAjaxAppendCondtionData * @Description: todo(动态取值功能) * @author quqiang * @date 2015年4月28日 上午11:06:46 * @throws */ function lookupAjaxAppendCondtionData() { $table = $_POST['table']; // 数据检索表名 $field = $_POST['field']; // 数据检索字段名 $action = $_POST['action']; // 当前操作action名 $key = $_POST['key']; // 当前操作的字段名 $condition = html_entity_decode($_POST['condition']); $condition = str_replace(''', "'", $condition); if ($table && $field) { $obj = D($table); if (!$condition) { $condition = '1=1'; } $fieldVal = $obj->where($condition)->getField($field, 1); // 配置文件数据转换 if ($fieldVal && $action && $key) { $data['debug_3'] = '进入格式换算!'; $scdmodel = D('SystemConfigDetail'); //读取列名称数据(按照规则,应该在index方法里面) $detailList = $scdmodel->getDetail($action, false); $data['debug_5'] = '测试配置:' . arr2string($detailList); if (is_array($detailList) && $detailList[$key]) { $data['debug_4'] = '允许格式换算!'; $funcName = $detailList[$key]['func']; $funcDataSouce = $detailList[$key]['funcdata']; // 排除子表时的特殊处理。直接取得数据中的最后一项 $funcName = $funcName[count($funcName) - 1]; $funcData = $funcDataSouce[count($funcDataSouce) - 1]; switch ($funcName[0]) { case 'unitExchange': $funcData[0][3] = '2'; break; } $fieldVal = getConfigFunction($fieldVal, $funcName, $funcData); $data['debug_0'] = arr2string($funcName) . '_' . arr2string($funcData); } } $data['debug_1'] = $action . '_' . $key . '_' . $fieldVal; $data[$field] = $fieldVal; $data['sql'] = $obj->getLastSql(); echo json_encode($data); } }
public function view() { $name = $this->getActionName(); $model = D($name); $rs = $model->where("id=" . $_REQUEST['id'])->find(); $rs['modelnameChina'] = getFieldBy($rs['modelname'], "actionname", "actiontitle", "mis_dynamic_form_manage"); //表中文名 $rs['tablenameChina'] = ''; if ($rs['tabletype'] == 2) { $tablenameChina = $this->getInlineTableName($rs['tablename']); } else { $tablenameChina = getFieldBy($rs['modelname'], "actionname", "actiontitle", "mis_dynamic_form_manage"); } $rs['tablenameChina'] = $tablenameChina; //配置文件 $scdmodel = D('SystemConfigDetail'); if ($rs['tabletype'] == 1) { $detailList = $scdmodel->getDetail($rs['modelname'], false); } else { $detailList = $scdmodel->getSubDetail($rs['modelname'], false); } $detaillists = array(); foreach ($detailList as $dk => $dv) { $detaillists[$dv['name']] = $dv; } //表字段中文名 $dModel = D("Dynamicconf"); $fields = $dModel->getTableInfo($rs['tablename']); $updateinfo = unserialize($rs['updateinfo']); foreach ($updateinfo as $key => $val) { if ($rs['tabletype'] == 2) { foreach ($val as $k => $v) { if (count($detaillists[$k]['func']) > 0) { foreach ($detaillists[$k]['func'] as $fk => $fv) { $v['beforeupdate'] = getConfigFunction($v['beforeupdate'], $fv, $detaillists[$k]['funcdata'][$fk]); $v['afterupdate'] = getConfigFunction($v['afterupdate'], $fv, $detaillists[$k]['funcdata'][$fk]); } } else { $v = $v; } foreach ($v as $k1 => $v1) { if ($k1 == 'beforeupdate') { $rs['beforeupdata'][$key][$k]['fieldname'] = $k; $rs['beforeupdata'][$key][$k]['fieldnameChina'] = $fields[$k]['COLUMN_COMMENT']; $rs['beforeupdata'][$key][$k]['data'] = $v1; } else { $rs['afterupdata'][$key][$k]['fieldname'] = $k; $rs['afterupdata'][$key][$k]['fieldnameChina'] = $fields[$k]['COLUMN_COMMENT']; $rs['afterupdata'][$key][$k]['data'] = $v1; } } } } else { if (count($detaillists[$key]['func']) > 0) { foreach ($detaillists[$key]['func'] as $fk => $fv) { $val['beforeupdate'] = getConfigFunction($val['beforeupdate'], $fv, $detaillists[$key]['funcdata'][$fk]); $val['afterupdate'] = getConfigFunction($val['afterupdate'], $fv, $detaillists[$key]['funcdata'][$fk]); } } else { $val = $val; } $rs['beforeupdata'][$rs['tabledataid']][$key]['fieldname'] = $key; $rs['beforeupdata'][$rs['tabledataid']][$key]['fieldnameChina'] = $fields[$key]['COLUMN_COMMENT']; $rs['beforeupdata'][$rs['tabledataid']][$key]['data'] = $val['beforeupdate']; $rs['afterupdata'][$rs['tabledataid']][$key]['fieldname'] = $key; $rs['afterupdata'][$rs['tabledataid']][$key]['fieldnameChina'] = $fields[$key]['COLUMN_COMMENT']; $rs['afterupdata'][$rs['tabledataid']][$key]['data'] = $val['afterupdate']; } } $tabletypec = array("1" => "主表", "2" => "内嵌表"); $this->assign("tabletypec", $tabletypec); $this->assign("vo", $rs); $this->display(); exit; //获取修改的主表id $map['tabledataid'] = $rs['tabledataid']; $map['createtime'] = $rs['createtime']; $map['createid'] = $rs['createid']; $list = $model->where($map)->select(); $tablearr = array(); $tablenameChina = array(); //表中文名 foreach ($list as $key => $val) { $list[$key]['updateinfo'] = unserialize($val['updateinfo']); $tablearr[] = $val['tablename']; //表名集合 if ($val['tabletye'] == 2) { $tablenameChina[$val['tablename']] = $this->getInlineTableName($val['tablename']); } else { $tablenameChina[$val['tablename']] = getFieldBy($val['modelname'], "actionname", "actiontitle", "mis_dynamic_form_manage"); } } //表字段中文名 $dModel = D("Dynamicconf"); $tablefieldsChina = array(); foreach ($tablearr as $v) { $tablefield = $dModel->getTableInfo($v); $newfield = array(); foreach ($tablefield as $key => $val) { $newfield[$key] = $val['COLUMN_COMMENT']; } $tablefieldsChina[$v] = $newfield; } //配置文件 $scdmodel = D('SystemConfigDetail'); if ($rs['tabletype'] == 1) { $detailList = $scdmodel->getDetail($rs['modelname'], false); } else { $detailList = $scdmodel->getSubDetail($rs['modelname'], false); } $detaillists = array(); foreach ($detailList as $dk => $dv) { $detaillists[$dv['name']] = $dv; } print_r($detailList); //修改记录数据处理为中文显示 $clist = array(); $tabletypec = array("1" => "主表", "2" => "内嵌表"); foreach ($list as $key => $val) { $updateinfo = unserialize($val['updateinfo']); $clist[$key]['modelname'] = getFieldBy($val['modelname'], 'name', 'title', 'node'); $clist[$key]['tablename'] = $tablenameChina[$val['tablename']]; $clist[$key]['tabletype'] = $tabletypec[$val['tabletype']]; $clist[$key]['masid'] = $val['id']; foreach ($updateinfo as $k => $v) { if ($val['tabletype'] == 1) { $clist[$key]['data']; } else { foreach ($v as $k1 => $v1) { $clist[$key]['data']['id'] = $k1; foreach ($v1 as $k2 => $v2) { foreach ($v2 as $k3 => $v3) { if (count($detaillists[$k2]['func']) > 0) { $clist[$key]['data']['id'][$k2][$k3] = getConfigFunction($v3, $nam, $detaillists[$k2]['funcdata'][$key]); } else { $clist[$key]['data']['id'][$k2][$k3] = $v3; } } } } } } } ${$this}->display(); exit; }
/** * @Title: commonimportAction * @Description: todo(真实导入数据方法) * @param unknown_type $fieldlist * @param unknown_type $datalist * @param unknown_type $volist * @param unknown_type $excel * @author liminggang * @date 2013-6-1 上午11:19:23 * @throws */ private function commonimportAction($fieldlist, $datalist1, $volist, $excel, $filename = "", $yuan_fileName = "", $import_field, $modelname) { $table = $volist['tableobj']; $errorStr = ""; $scdmodel = D('SystemConfigDetail'); $detailList = $scdmodel->importDataGetDetail($modelname, 1); $ifmustArr = array(); $ifmustNameArr = array(); $datalist = array(); foreach ($datalist1 as $k => $v) { $datalist[] = $v; } foreach ($detailList as $k => $v) { if ($v["required"]) { $ifmustArr[] = array("name" => $v["name"], "showname" => $v["showname"]); $ifmustNameArr[] = $v["name"]; } } $msg = array(); foreach ($ifmustArr as $k => $v) { $isGo = false; foreach ($import_field as $kk => $vv) { if ($vv == $v["name"]) { $isGo = true; break; } } if (!$isGo) { $msg[] = $v["showname"]; } } if (count($msg)) { $this->error(implode("、", $msg) . " 为导入必选字段"); } $d = $datalist; $i = 0; $m = M($modelname); $sql = ""; foreach ($datalist as $k => $v) { foreach ($v as $k2 => $v2) { if (in_array($import_field[$k2], $ifmustNameArr) && empty($v2)) { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据不能为空", "columnIndex" => $k2); //$this->error("第".($k)."行数据中的第".($k2+1)."列数据不能为空"); } if (!empty($detailList[$import_field[$k2]]["unfunc"])) { //判断数据是否需要转换 $unfunc = $detailList[$import_field[$k2]]["unfunc"][0]; $unfuncdata = $detailList[$import_field[$k2]]["unfuncdata"][0]; $dd = array(); foreach ($v as $kk => $vv) { $dd[$import_field[$kk]] = $vv; unset($dd[$kk]); } $value = getConfigFunction($v2, $unfunc, $unfuncdata, $dd); if (empty($value)) { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据不存在", "columnIndex" => $k2); } else { $d[$i][$k2] = $value; } } if (!empty($v2) && !empty($detailList[$import_field[$k2]]["validate"])) { $validate = $detailList[$import_field[$k2]]["validate"]; $bool = importValidate($validate, $v2); if (empty($value)) { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据不存在", "columnIndex" => $k2); } } if ($_POST["catalog"] == 1) { if ($v2["unique"] == "1") { //判断数据是否允许重复 $map = array(); $map[$newImportField[$k2]] = $v2; $c = $m->where($map)->count("*"); if ($c > 0) { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据已存在", "columnIndex" => $k2); } } } else { if ($_POST["catalog"] == 2) { if (!isset($d[$i]["id"])) { $map = array(); $map[$f['fieldname']] = $d[$i][$f['fieldname']]; $id = $m->where($map)->getField("id"); if ($id) { $d[$i]["id"] = $id; } else { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据不存在", "columnIndex" => $k2); } } } else { if ($_POST["catalog"] == 3) { $map = array(); $map[$f['fieldname']] = $d[$i][$f['fieldname']]; $id = $m->where($map)->getField("id"); if ($id) { $d[$i]["id"] = $id; } } } } if (false) { unset($d[$k]); $errorStr[] = array("rowId" => $k, "msg" => "{columnIndex}" . $k . "中的数据与上传的文件中数据重复", "columnIndex" => $k2); //$this->error("第".($k)."行数据中的第".($k2+1)."列与上传的文件中数据重复"); } } $i++; } $model = D($modelname); $model->startTrans(); $d2 = array(); foreach ($d as $k => $v) { foreach ($v as $kk => $vv) { $d2[$k][$import_field[$kk]] = $vv; unset($d2[$k][$kk]); } } $fg_str = "\n"; $max_count = 1000; $tableName = $model->getTableName(); $sql = $this->getbatchSql($tableName, $import_field, $d2, $fg_str); $str = explode($fg_str, $sql); $sqlCount = 0; foreach ($str as $k => $v) { if (!empty($v)) { $query = $model->query($v); $sqlCount++; } } $model->commit(); if (count($errorStr) > 1) { $this->ajaxReturn(array("errorStr" => $errorStr, "filename" => $filename, "yuan_fileName" => $yuan_fileName, "sqlCount" => $sqlCount)); } $this->success(L('_SUCCESS_')); }
/** * @Title: getFilterAudit * @Description: todo(获取对应流程的对应节点上面过滤的用户) * * @author wangcheng * @param eter $pid * 流程id * @param eter $tid * 节点id * @param eter $useridarr * 当前节点可审核人员 * @param eter $vo * 当前数据 * @date 2013-11-26 上午15:52 * @throws error */ public function getFilterAudit($pid, $tid, $useridarr, $vo = array()) { if (is_array($useridarr)) { $useridarr = implode(",", $useridarr); } if ($pid != "" && $tid != "" && $useridarr != "") { $model = M("process_relation"); $map = array(); $map["pid"] = $pid; $map["tid"] = $tid; $nodeinfo = $model->where($map)->find(); if ($nodeinfo["filteruid"]) { $arr = unserialize($nodeinfo["filteruid"]); // 获取当前审核人员 和 对应流程节点 的过滤用户条件 取交集 $data = array(); foreach ($arr['func'] as $k3 => $v3) { $filter_userid = getConfigFunction(array(), $v3, $arr['funcdata'][$k3], $vo, false); } if ($filter_userid) { if (!is_array($filter_userid)) { $filter_userid = explode(",", $filter_userid); } $userarr2 = explode(",", $useridarr); $useridarr = array_intersect($userarr2, $filter_userid); if (count($useridarr) == 0) { $this->error("流程的第 " . ($nodeinfo["sort"] + 1) . " 个节点在获取交集用户时为空"); } /* * else{ * $useridarr = implode(",",$useridarr); * } */ } else { $this->error("流程的第 " . ($nodeinfo["sort"] + 1) . " 个节点在查询过滤用户时为空"); } } } if (!is_array($useridarr)) { $useridarr = explode(",", $useridarr); } return $useridarr; }
/** * @Title: lookupprint * @Description: todo(我总算晓得这个方法意思了,配置文件调用的打印模板) * @author liminggang * @date 2013-6-1 上午9:37:10 * @throws */ public function lookupprint() { $modulename = $_GET["modulename"]; $id = $_GET["id"]; $model = D($modulename); $list = $model->find($id); if ($list) { $scdmodel = D('SystemConfigDetail'); $detailList = $scdmodel->getDetail($modulename, false); //获取当前配置文件的动态配置 $model2 = M("mis_system_print"); $shipping = $model2->where("modulename ='" . $modulename . "'")->find(); //标签替换 $temp_config_lable = explode('||,||', $shipping['config_lable']); if ($temp_config_lable) { foreach ($temp_config_lable as $temp_key => $temp_lable) { $temp_info = explode(',', $temp_lable); if (is_array($temp_info)) { foreach ($detailList as $k => $v) { if ($v['name'] == $temp_info[0]) { if (count($v['func']) > 0) { foreach ($v['func'] as $k1 => $v1) { $s = ""; if (!empty($v['extention_html_start'][$k1])) { $s .= $v['extention_html_start'][$k1]; } $s .= getConfigFunction($list[$v['name']], $v['func'][$k1], $v['funcdata'][$k1], $v); if (!empty($v['extention_html_end'][$k1])) { $s .= $v['extention_html_end'][$k1]; } } $temp_info[1] = $s; } else { $temp_info[1] = $list[$v['name']]; } $temp_config_lable[$temp_key] = implode(',', $temp_info); break; } } } } $shipping['config_lable'] = implode('||,||', $temp_config_lable); /* 取快递单背景宽高 */ if (!empty($shipping['print_bg'])) { $_size = @getimagesize($shipping['print_bg']); if ($_size != false) { $shipping['print_bg_size'] = array('width' => $_size[0], 'height' => $_size[1]); } } if (empty($shipping['print_bg_size'])) { $shipping['print_bg_size'] = array('width' => '1000', 'height' => '900'); } $this->assign('shipping', $shipping); $this->display(); } } else { echo "非法操作"; exit; } }