Files
swiftadmin/app/admin/controller/easyflow/FlowBase.php

364 lines
14 KiB
PHP
Raw Normal View History

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;*/
$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);
}
}