364 lines
14 KiB
PHP
364 lines
14 KiB
PHP
<?php
|
||
declare (strict_types = 1);
|
||
namespace app\admin\controller\easyflow;
|
||
|
||
use app\AdminController;
|
||
use Exception;
|
||
use think\facade\Db;
|
||
use Throwable;
|
||
/**
|
||
* flow_group
|
||
* 分组
|
||
*/
|
||
class FlowBase extends AdminController
|
||
{
|
||
/**
|
||
* FlowGroup模型对象
|
||
* @var \app\admin\model\FlowGroup
|
||
*/
|
||
|
||
public $tplsharing = 'add';
|
||
public $user = null;
|
||
|
||
public $noNeedAuth = ['*'];
|
||
public function __construct()
|
||
{
|
||
$this->user = get_admin_info();
|
||
parent::__construct();
|
||
//$this->user = Session::get('AdminLogin');
|
||
//debugger
|
||
|
||
}
|
||
|
||
/**
|
||
* 默认生成的方法为index/add/edit/del/status 五个方法
|
||
* 当创建CURD的时候,DIY的函数体和模板为空,请自行编写代码
|
||
*/
|
||
|
||
|
||
/***
|
||
* 获取组织架构
|
||
*/
|
||
public function getOrgTree(){
|
||
$deptId = request()->input('deptId');
|
||
if(!$deptId){
|
||
$deptId = 1;
|
||
}
|
||
$list = Db::name('department')->where(['pid'=>$deptId,'status'=>1])->select();
|
||
$data = [];
|
||
foreach($list as $row =>$key){
|
||
$data[] = ['id'=>$key['id'],'name'=>$key['title'],"select"=>false,"type"=>"dept",'sex'=>null,'avatar'=>null];
|
||
$userlist = Db::name('admin')->where(['department_id'=>$key['id']])->select();
|
||
foreach($userlist as $row =>$user){
|
||
$data[] = ['id'=>$user['id'],'name'=>$user['nickname'],"select"=>false,"type"=>"user",'sex'=>null,'avatar'=>null];
|
||
}
|
||
}
|
||
$result =['code' =>200,'data' =>$data] ;
|
||
return json($result);
|
||
}
|
||
|
||
|
||
/***
|
||
* 获取组织架构
|
||
*/
|
||
public function search($userName){
|
||
$data = [];
|
||
$list = Db::name('admin')->field('id,nickname as name')->where(['status'=>1])->where('nickname','like',"%$userName%")->select();
|
||
foreach($list as $row =>$key){
|
||
$data[] = ['id'=>$key['id'],'name'=>$key['title'],"select"=>false,"type"=>"role",'sex'=>null,'avatar'=>null];
|
||
}
|
||
$result =['code' =>200,'data' =>$data] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function getRole(){
|
||
$data = [];
|
||
$list = Db::name('jobs')->field('id,title')->where(['status'=>1])->select();
|
||
foreach($list as $row =>$key){
|
||
$data[] = ['id'=>$key['id'],'name'=>$key['title'],"select"=>false,"type"=>"role",'sex'=>null,'avatar'=>null];
|
||
}
|
||
$result =['code' =>200,'data' =>$data] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function getFlowGroup()
|
||
{
|
||
$groupList = Db::name('flow_group')->field('id,name')->select();
|
||
$data = [];
|
||
|
||
foreach($groupList as $row =>$group){
|
||
$data1 = ['id'=>$group['id'],'label'=>$group['name'],'type'=>'group'];
|
||
$flowList = Db::name('flow_scheme')->where(['group'=>$group['id']])->select();
|
||
$dataFlow=[];
|
||
foreach($flowList as $row =>$flow){
|
||
$dataFlow[]=['id'=>$flow['id'],'icon'=>$flow['icon'],'isstop'=>$flow['isstop']==1?true:false,'type'=>'scheme',
|
||
'label'=>$flow['name'],'remark'=>$flow['remark'],'tgId'=>$flow['tgId'],'updated'=>$flow['updatetime'],
|
||
'background'=>$flow['background'],'group'=>$flow['group']];
|
||
}
|
||
$data1['children'] = $dataFlow;
|
||
$data[] = $data1;
|
||
}
|
||
//停用的流程
|
||
/*$data2 = ['id'=>0,'label'=>'已停用','type'=>'group'];
|
||
$flowList = Db::name('flow_scheme')->where(['isstop'=>0])->select();
|
||
$dataFlowDisable=[];
|
||
foreach($flowList as $row =>$flow){
|
||
$dataFlowDisable[]=['id'=>$flow['id'],'icon'=>$flow['icon'],'isstop'=>true,'type'=>'scheme',
|
||
'label'=>$flow['name'],'remark'=>$flow['remark'],'tgId'=>$flow['tgId'],'updated'=>$flow['updatetime'],
|
||
'background'=>$flow['background'],'group'=>$flow['group']];
|
||
}
|
||
$data2['children'] = $dataFlowDisable;
|
||
$data[] = $data2;*/
|
||
|
||
$isAdmin = in_array('1',explode(',',$this->user['group_id']))?true:false;
|
||
$result =['code' =>200,'data' =>$data,'isAdmin'=>$isAdmin,'group_id'=>$this->user['group_id']] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function updateFlowGroup()
|
||
{
|
||
$method = request()->method();
|
||
$params = \request()->all();
|
||
$result =null;
|
||
$msg = null;
|
||
try{
|
||
switch ($method)
|
||
{
|
||
case 'POST':
|
||
$name = $params['name'];
|
||
$data = ['name'=>$name];
|
||
|
||
Db::name('flow_group')->insertGetId($data);
|
||
$result = "添加$name 分组成功";
|
||
break;
|
||
case 'DELETE':
|
||
$id = $params['id'];
|
||
$isexist = Db::name('flow_scheme')->where('group',$id)->find();
|
||
if($isexist){
|
||
throw new Exception('分组有流程无法删除');
|
||
}
|
||
Db::name('flow_group')->delete($id);
|
||
$msg = "删除成功";
|
||
break;
|
||
case 'PUT':
|
||
Db::name('flow_group')->save($params);
|
||
$msg='修改成功';
|
||
break;
|
||
}
|
||
$result =['code' =>200,'data' =>$result,'msg'=>$msg ] ;
|
||
}
|
||
catch(Throwable $th){
|
||
$result =['code' =>500,'msg' =>$th->getMessage() ] ;
|
||
}
|
||
|
||
return json($result);
|
||
}
|
||
|
||
public function updateFlowForm()
|
||
{
|
||
$method = request()->method();
|
||
$params = \request()->all();
|
||
$result =null;
|
||
$msg = null;
|
||
switch ($method)
|
||
{
|
||
case 'GET':
|
||
$id = $params['formId'];
|
||
$result = Db::name('flow_scheme')->where('id', $id)->find();
|
||
break;
|
||
case 'DELETE':
|
||
$id = $params['id'];
|
||
$msg = "删除成功";
|
||
break;
|
||
case 'PUT':
|
||
$params['id']= $params['formId'];
|
||
$params['isstop'] = isset($params['isstop'])?$params['isstop']: 0;
|
||
Db::name('flow_scheme')->strict(false)->save($params);
|
||
$msg='修改成功';
|
||
break;
|
||
}
|
||
$result =['code' =>200,'data' =>$result,'msg'=>$msg] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function getSysTable()
|
||
{
|
||
$database = function_exists('get_env') ? get_env('DATABASE_DATABASE') : getenv('DATABASE_DATABASE');
|
||
$sql = "SELECT
|
||
table_name as tablebame ,table_name as name
|
||
FROM
|
||
information_schema.tables
|
||
WHERE table_schema = '$database' AND table_type = 'BASE TABLE'";
|
||
$result = Db::query($sql);
|
||
$result =['code' =>200,'data' =>$result] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function updateTemplate()
|
||
{
|
||
|
||
$result =['code' =>200,'data' =>'保存成功'] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function getWorkItemList()
|
||
{
|
||
$params = request()->post();
|
||
$currentPage = $params['currentPage'];
|
||
$pageSize = $params['pageSize'];
|
||
$group=$params['group'];
|
||
$where = ['status'=>'0','receiveid'=>$this->user['id']];
|
||
$whereIn = '';
|
||
$totalResult = 0;
|
||
|
||
if($group){
|
||
|
||
if($group['type'] == 'scheme'){
|
||
$where['scheme'] = $group['id'];
|
||
$data = Db::name('flow_workitem_view')->order('createtime', 'desc')->where($where)->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}else{
|
||
$groupId = $group['id'];
|
||
$shemes = Db::name('flow_scheme')->where('group',$groupId)->select();
|
||
$wherescheme = [];
|
||
foreach($shemes as $sheme){
|
||
array_unshift($wherescheme,$sheme['id']);
|
||
}
|
||
|
||
$data = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
}
|
||
else{
|
||
$data = Db::name('flow_workitem_view')->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
|
||
$result =['code' =>200,'data' =>$data,'input'=>$group,'total'=>$totalResult] ;
|
||
return json($result);
|
||
}
|
||
|
||
|
||
public function getInstanceList()
|
||
{
|
||
$params = request()->post();
|
||
$currentPage = $params['currentPage'];
|
||
$pageSize = $params['pageSize'];
|
||
$group=$params['group'];
|
||
$where = [];
|
||
$whereIn = '';
|
||
$totalResult = 0;
|
||
|
||
if($group){
|
||
|
||
if($group['type'] == 'scheme'){
|
||
$where['scheme'] = $group['id'];
|
||
$data = Db::name('flow_workitem_view')->order('createtime', 'desc')->where($where)->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}else{
|
||
$groupId = $group['id'];
|
||
$shemes = Db::name('flow_scheme')->where('group',$groupId)->select();
|
||
$wherescheme = [];
|
||
foreach($shemes as $sheme){
|
||
array_unshift($wherescheme,$sheme['id']);
|
||
}
|
||
|
||
$data = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
}
|
||
else{
|
||
$data = Db::name('flow_workitem_view')->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
|
||
$result =['code' =>200,'data' =>$data,'input'=>$group,'total'=>$totalResult] ;
|
||
return json($result);
|
||
}
|
||
|
||
|
||
public function getFinishList()
|
||
{
|
||
$params = request()->post();
|
||
$currentPage = $params['currentPage'];
|
||
$pageSize = $params['pageSize'];
|
||
$group=$params['group'];
|
||
$where = ['status'=>'2','receiveid'=>$this->user['id']];
|
||
$whereIn = '';
|
||
$totalResult = 0;
|
||
if($group){
|
||
if($group['type'] == 'scheme'){
|
||
$where['scheme'] = $group['id'];
|
||
$data = Db::name('flow_workitem_view')->where($where)->order('completedtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}else{
|
||
$groupId = $group['id'];
|
||
$shemes = Db::name('flow_scheme')->where('group',$groupId)->select();
|
||
$wherescheme = [];
|
||
foreach($shemes as $sheme){
|
||
array_unshift($wherescheme,$sheme['id']);
|
||
}
|
||
|
||
$data = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->order('completedtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
}
|
||
else{
|
||
$data = Db::name('flow_workitem_view')->where($where)->order('completedtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_workitem_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
|
||
$result =['code' =>200,'data' =>$data,'input'=>$group,'total'=>$totalResult] ;
|
||
return json($result);
|
||
}
|
||
|
||
|
||
public function getMyList()
|
||
{
|
||
$params = request()->post();
|
||
$currentPage = $params['currentPage'];
|
||
$pageSize = $params['pageSize'];
|
||
$group=$params['group'];
|
||
$where = ['originator'=>$this->user['id']];
|
||
$whereIn = '';
|
||
$totalResult = 0;
|
||
if($group){
|
||
if($group['type'] == 'scheme'){
|
||
$where['scheme'] = $group['id'];
|
||
$data = Db::name('flow_instace_view')
|
||
->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_instace_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}else{
|
||
$groupId = $group['id'];
|
||
$shemes = Db::name('flow_scheme')->where('group',$groupId)->select();
|
||
$wherescheme = [];
|
||
foreach($shemes as $sheme){
|
||
array_unshift($wherescheme,$sheme['id']);
|
||
}
|
||
|
||
$data = Db::name('flow_instace_view')
|
||
->whereIn('scheme',implode(',',$wherescheme))->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_instace_view')->whereIn('scheme',implode(',',$wherescheme))->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
}
|
||
else{
|
||
$data = Db::name('flow_instace_view')
|
||
->where($where)->order('createtime', 'desc')->page($currentPage,$pageSize)->select();
|
||
$totalResult = Db::name('flow_instace_view')->where($where)->page($currentPage,$pageSize)->count();
|
||
}
|
||
|
||
$result =['code' =>200,'data' =>$data,'input'=>$group,'total'=>$totalResult] ;
|
||
return json($result);
|
||
}
|
||
|
||
public function getFieldList()
|
||
{
|
||
$formId = request()->input('formId');
|
||
//$result = Db::name('flow_scheme')->where('id', $formId)->find();
|
||
$database = function_exists('get_env') ? get_env('DATABASE_DATABASE') : getenv('DATABASE_DATABASE');
|
||
$fieldListAll = Db::name('flow_field_view')->where(['table_name'=>$formId,'TABLE_SCHEMA'=>$database])->select();
|
||
//$result =['code' =>200,'data' =>$fieldListAll] ;
|
||
return json($fieldListAll);
|
||
}
|
||
}
|