fmtRequest($request); $map = $request['map'] ?: []; if (isset($map['search'])) { //普通筛选 $map['title'] = ['like', '%' . $map['search'] . '%']; unset($map['search']); } $map['is_deleted'] = 0; $list = $this ->where($map) ->page($request['page'], $request['limit']) ->order('status desc , update_time asc') ->select(); foreach ($list as $k => $v) { $flowInfo = []; $flowInfo = $examineFlowModel->getDataById($v['flow_id']); $list[$k]['config'] = !empty($flowInfo['config']) ? 1 : 0; $stepList = []; $stepList = $examineStepModel->getDataList($v['flow_id']); $list[$k]['stepList'] = $stepList ?: []; $list[$k]['user_ids_info'] = $userModel->getListByStr($v['user_ids']); $list[$k]['update_time'] = date('Y-m-d H:i:s',$v['update_time']); } $dataCount = $this->where($map)->count('category_id'); $data = []; $data['list'] = $list; $data['dataCount'] = $dataCount ?: 0; return $data; } /** * 创建审批类型信息 * @param * @return * @author Michael_xu */ public function createData($param) { $fieldModel = new \app\admin\model\Field(); //验证 $validate = validate($this->name); if (!$validate->check($param)) { $this->error = $validate->getError(); return false; } $param['is_sys'] = 0; $param['user_ids'] = $param['user_ids'] ? arrayToString($param['user_ids']) : ''; //处理user_id $param['structure_ids'] = $param['structure_ids'] ? arrayToString($param['structure_ids']) : ''; //处理structure_id $examineStep = $param['step']; //审批步骤 $config = $param['config'] ? 1 : 0; //审批流程类型 1固定审批0授权审批 if ($this->data($param)->allowField(true)->save()) { //添加基础自定义字段 $fieldData = []; $fieldData[0]['types'] = 'oa_examine'; $fieldData[0]['types_id'] = $this->category_id; $fieldData[0]['field'] = 'content'; $fieldData[0]['name'] = '审批事由'; $fieldData[0]['form_type'] = 'textarea'; $fieldData[0]['is_null'] = '1'; $fieldData[0]['order_id'] = '1'; $fieldData[0]['operating'] = '1'; $fieldData[0]['create_time'] = time(); $fieldData[0]['update_time'] = time(); $fieldData[1]['types'] = 'oa_examine'; $fieldData[1]['types_id'] = $this->category_id; $fieldData[1]['field'] = 'remark'; $fieldData[1]['name'] = '备注'; $fieldData[1]['form_type'] = 'textarea'; $fieldData[1]['is_null'] = '0'; $fieldData[1]['order_id'] = '1'; $fieldData[1]['operating'] = '1'; $fieldData[1]['create_time'] = time(); $fieldData[1]['update_time'] = time(); if (!$fieldModel->createData('oa_examine', $fieldData)) { db('oa_examine_category')->where(['category_id' => $this->category_id])->delete(); $this->error = '程序出错,请重试'; return false; } $data = []; $data['category_id'] = $this->category_id; //创建审批流 if (is_array($examineStep) && $examineStep) { $examineFlowModel = new \app\admin\model\ExamineFlow(); $examineStepModel = new \app\admin\model\ExamineStep(); $examineFlow = []; $examineFlow['name'] = $param['title'] . '流程'; $examineFlow['config'] = $config; $examineFlow['types'] = 'oa_examine'; $examineFlow['types_id'] = $this->category_id; $examineFlow['user_ids'] = arrayToString($param['user_ids']); $examineFlow['structure_ids'] = arrayToString($param['structure_ids']); $examineFlow['update_user_id'] = $param['create_user_id']; $examineFlow['status'] = 1; $res = $examineFlowModel->createData($examineFlow); if ($res) { if ((int)$config == 1) { $resUpdate = db('oa_examine_category')->where(['category_id' => $this->category_id])->update(['flow_id' => $res['flow_id']]); //固定审批流 $resStep = $examineStepModel->createStepData($examineStep, $res['flow_id']); if ($resStep) { return $data; } else { db('admin_examine_flow')->where(['flow_id' => $res['flow_id']])->delete(); $this->error = $examineStepModel->getError(); return false; } } else { return $data; } } else { $this->error = $examineFlowModel->getError(); return false; } } else { $this->error = '请添加审批步骤'; return false; } } else { $this->error = '添加失败'; return false; } } /** * 编辑审批类型信息 * @param * @return * @author Michael_xu */ public function updateDataById($param, $category_id = '') { $category_id = intval($category_id); unset($param['id']); //过滤不能修改的字段 $unUpdateField = ['create_user_id', 'is_deleted', 'delete_user_id', 'delete_time', 'is_sys']; foreach ($unUpdateField as $v) { unset($param[$v]); } //验证 $validate = validate($this->name); if (!$validate->check($param)) { $this->error = $validate->getError(); return false; } $param['user_ids'] = is_array($param['user_ids']) ? arrayToString($param['user_ids']) : $param['user_ids']; //处理user_id $param['structure_ids'] = is_array($param['structure_ids']) ? arrayToString($param['structure_ids']) : $param['structure_ids']; //处理structure_id $examineStep = $param['step']; //审批步骤 $config = $param['config'] ? 1 : 0; //审批流程类型 1固定审批0授权审批 unset($param['update_time']); unset($param['step']); unset($param['config']); unset($param['name']); unset($param['types']); unset($param['types_id']); unset($param['update_user_id']); if (db('oa_examine_category')->where(['category_id' => $category_id])->update($param)) { $data = []; $data['category_id'] = $category_id; return $data; } else { $this->error = '编辑失败'; return false; } } /** * 审批类型数据 * @param $id 审批ID * @return */ public function getDataById($id = '') { $map['category_id'] = $id; $dataInfo = db('oa_examine_category')->where($map)->find(); return $dataInfo ?: []; } /** * 逻辑删除,将数据标记为删除状态 * @author Michael_xu */ public function signDelById($id, $user_id) { if (!$id) { $this->error = '删除失败'; return false; } $info = $this->get($id); if ($info['is_sys'] == 1) { $this->error = '系统类型,不能删除'; return false; } //是否被使用 $resCategory = db('oa_examine')->where(['category_id' => $info['category_id']])->find(); if ($resCategory) { $this->error = '已有审批,不能删除'; return false; } $this->startTrans(); try { $data['is_deleted'] = 1; $data['delete_time'] = time(); $data['delete_user_id'] = $user_id; $this->allowField(true)->save($data, ['category_id' => $id]); # 系统操作记录 SystemActionLog($user_id,'oa_examine', 'approval', $id, 'delete',$info['title'] , '', '','删除了:'.$info['title']); $this->commit(); return true; } catch (\Exception $e) { $this->error = '删除失败'; $this->rollback(); return false; } } }