Files
swiftadmin/app/admin/controller/easyflow/FlowBase.php
2024-07-13 22:25:18 +08:00

364 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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);
}
}