123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- <?php
- namespace app\common\service;
- use app\common\model\CarApprove;
- use app\common\model\CarInfo;
- use app\common\model\LeaveInfo;
- use app\common\model\LeaveApprove;
- use app\common\model\EvectionInfo;
- use app\common\model\EvectionApprove;
- use app\common\model\OfferInfo;
- use app\common\model\OfferApprove;
- use app\common\model\MaintainApprove;
- use app\common\model\MaintainInfo;
- use app\common\model\DocumentInfo;
- use app\common\model\DocumentApprove;
- use app\common\model\ContractInfo;
- use app\common\model\ContractApprove;
- use think\Db;
- use think\Exception;
- /**
- * 审批
- * Class ApproveService
- */
- class ApproveService
- {
- protected static $ret_val = true;
- protected static $msg = '';
- /**
- * 请假审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveLeave($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info = LeaveInfo::where('id',$apply_id)->find()->toArray();
- $approve_info = LeaveApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- LeaveApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $leave_data = [];
- // 审批流程数 + 1
- $leave_data['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- LeaveApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $leave_data['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $leave_data['status'] = $status;
- }
- LeaveInfo::where('id',$apply_info['id'])->update($leave_data);// 更新请假状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 用车申请审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveCar($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info = CarInfo::where('id',$apply_id)->find()->toArray();
- $approve_info = CarApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- CarApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $car_data = [];
- // 审批流程数 + 1
- $car_data['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- CarApprove::where(['car_id'=>$approve_info['car_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $car_data['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $car_data['status'] = $status;
- }
- CarInfo::where('id',$apply_info['id'])->update($car_data);// 更新用车申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 出差申请审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveEvection($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info = EvectionInfo::where('id',$apply_id)->find()->toArray();
- $approve_info =EvectionApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- EvectionApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $Info_up = [];
- // 审批流程数 + 1
- $Info_up['cur_num'] = $approve_info['cur_num'] + 1;
- if($approve_info['flow'] < $approve_info['approve_num']){
- // 更新下一级审批记录状态
- EvectionApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $Info_up['status'] = 3;
- } else if($approve_info['flow'] == $approve_info['approve_num']) {
- $Info_up['status'] = $status;
- }
- EvectionInfo::where('id',$approve_info['id'])->update($Info_up);// 更新用车申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 呈批申请审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveOffer($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info = OfferInfo::where('id',$apply_id)->find()->toArray();
- $approve_info =OfferApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- OfferApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $Info_up = [];
- // 审批流程数 + 1
- $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- OfferApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $Info_up['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $Info_up['status'] = $status;
- }
- OfferInfo::where('id',$apply_info['id'])->update($Info_up);// 更新用车申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 维修申请审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveMaintain($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info = MaintainInfo::where('id',$apply_id)->find()->toArray();
- $approve_info =MaintainApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- MaintainApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $Info_up = [];
- // 审批流程数 + 1
- $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- MaintainApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $Info_up['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $Info_up['status'] = $status;
- }
- MaintainInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 学校文件
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveDocument($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info =DocumentInfo::where('id',$apply_id)->find()->toArray();
- $approve_info =DocumentApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- DocumentApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $Info_up = [];
- // 审批流程数 + 1
- $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- DocumentApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $Info_up['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $Info_up['status'] = $status;
- }
- DocumentInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 合同审批
- * @param $apply_id 申请记录id
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveContract($apply_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- $apply_info =ContractInfo::where('id',$apply_id)->find()->toArray();
- $approve_info =ContractApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
- if(empty($approve_info)) throw new Exception('没有审核权限');
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = $approve_info->toArray();
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该记录已审核');
- if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- $approve_update['time_desc'] = get_stay_time($approve_time);
- ContractApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
- $Info_up = [];
- // 审批流程数 + 1
- $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
- if($approve_info['flow'] < $apply_info['approve_num']){
- // 更新下一级审批记录状态
- ContractApprove::where(['info_id'=>$approve_info['info_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
- if($status == 3) $Info_up['status'] = 3;
- } else if($approve_info['flow'] == $apply_info['approve_num']) {
- $Info_up['status'] = $status;
- }
- ContractInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- }
|