/**
  * @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;
     }
 }
Example #2
0
 /**
  * $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);
             }
         }
     }
 }
Example #5
0
 /**
  * @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;
 }
Example #7
0
 /**
  * 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('&#39;', "'", $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_'));
 }
Example #10
0
 /**
  * @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;
     }
 }