2024-07-13 12:53:20 +08:00
|
|
|
|
<?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;*/
|
|
|
|
|
|
|
2024-07-13 22:25:18 +08:00
|
|
|
|
$isAdmin = in_array('1',explode(',',$this->user['group_id']))?true:false;
|
|
|
|
|
|
$result =['code' =>200,'data' =>$data,'isAdmin'=>$isAdmin,'group_id'=>$this->user['group_id']] ;
|
2024-07-13 12:53:20 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|