ApproveService.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <?php
  2. namespace app\common\service;
  3. use app\common\model\CarApprove;
  4. use app\common\model\CarInfo;
  5. use app\common\model\LeaveInfo;
  6. use app\common\model\LeaveApprove;
  7. use app\common\model\EvectionInfo;
  8. use app\common\model\EvectionApprove;
  9. use app\common\model\OfferInfo;
  10. use app\common\model\OfferApprove;
  11. use app\common\model\MaintainApprove;
  12. use app\common\model\MaintainInfo;
  13. use app\common\model\DocumentInfo;
  14. use app\common\model\DocumentApprove;
  15. use app\common\model\ContractInfo;
  16. use app\common\model\ContractApprove;
  17. use think\Db;
  18. use think\Exception;
  19. /**
  20. * 审批
  21. * Class ApproveService
  22. */
  23. class ApproveService
  24. {
  25. protected static $ret_val = true;
  26. protected static $msg = '';
  27. /**
  28. * 请假审批
  29. * @param $apply_id 申请记录id
  30. * @param $user_id 审批会员
  31. * @param $status 审批状态
  32. * @param $remark 审批备注
  33. * @return array
  34. */
  35. public static function approveLeave($apply_id,$user_id,$status,$remark)
  36. {
  37. Db::startTrans();
  38. try {
  39. $apply_info = LeaveInfo::where('id',$apply_id)->find()->toArray();
  40. $approve_info = LeaveApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  41. if(empty($approve_info)) throw new Exception('没有审核权限');
  42. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  43. $approve_info = $approve_info->toArray();
  44. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  45. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  46. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  47. $approve_update = [];
  48. $approve_update['status'] = $status;
  49. $approve_update['remark'] = $remark;
  50. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  51. $approve_time = time() - strtotime($approve_info['start_time']);
  52. $approve_update['time'] = $approve_time;
  53. $approve_update['time_desc'] = get_stay_time($approve_time);
  54. LeaveApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  55. $leave_data = [];
  56. // 审批流程数 + 1
  57. $leave_data['cur_num'] = $apply_info['cur_num'] + 1;
  58. if($approve_info['flow'] < $apply_info['approve_num']){
  59. // 更新下一级审批记录状态
  60. 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')]);
  61. if($status == 3) $leave_data['status'] = 3;
  62. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  63. $leave_data['status'] = $status;
  64. }
  65. LeaveInfo::where('id',$apply_info['id'])->update($leave_data);// 更新请假状态
  66. Db::commit();
  67. }catch (\Exception $e) {
  68. Db::rollback();
  69. static::$ret_val = false;
  70. static::$msg = $e->getMessage();
  71. }
  72. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  73. }
  74. /**
  75. * 用车申请审批
  76. * @param $apply_id 申请记录id
  77. * @param $user_id 审批会员
  78. * @param $status 审批状态
  79. * @param $remark 审批备注
  80. * @return array
  81. */
  82. public static function approveCar($apply_id,$user_id,$status,$remark)
  83. {
  84. Db::startTrans();
  85. try {
  86. $apply_info = CarInfo::where('id',$apply_id)->find()->toArray();
  87. $approve_info = CarApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  88. if(empty($approve_info)) throw new Exception('没有审核权限');
  89. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  90. $approve_info = $approve_info->toArray();
  91. if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
  92. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  93. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  94. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  95. $approve_update = [];
  96. $approve_update['status'] = $status;
  97. $approve_update['remark'] = $remark;
  98. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  99. $approve_time = time() - strtotime($approve_info['start_time']);
  100. $approve_update['time'] = $approve_time;
  101. $approve_update['time_desc'] = get_stay_time($approve_time);
  102. CarApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  103. $car_data = [];
  104. // 审批流程数 + 1
  105. $car_data['cur_num'] = $apply_info['cur_num'] + 1;
  106. if($approve_info['flow'] < $apply_info['approve_num']){
  107. // 更新下一级审批记录状态
  108. 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')]);
  109. if($status == 3) $car_data['status'] = 3;
  110. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  111. $car_data['status'] = $status;
  112. }
  113. CarInfo::where('id',$apply_info['id'])->update($car_data);// 更新用车申请状态
  114. Db::commit();
  115. }catch (\Exception $e) {
  116. Db::rollback();
  117. static::$ret_val = false;
  118. static::$msg = $e->getMessage();
  119. }
  120. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  121. }
  122. /**
  123. * 出差申请审批
  124. * @param $apply_id 申请记录id
  125. * @param $user_id 审批会员
  126. * @param $status 审批状态
  127. * @param $remark 审批备注
  128. * @return array
  129. */
  130. public static function approveEvection($apply_id,$user_id,$status,$remark)
  131. {
  132. Db::startTrans();
  133. try {
  134. $apply_info = EvectionInfo::where('id',$apply_id)->find()->toArray();
  135. $approve_info =EvectionApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  136. if(empty($approve_info)) throw new Exception('没有审核权限');
  137. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  138. $approve_info = $approve_info->toArray();
  139. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  140. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  141. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  142. $approve_update = [];
  143. $approve_update['status'] = $status;
  144. $approve_update['remark'] = $remark;
  145. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  146. $approve_time = time() - strtotime($approve_info['start_time']);
  147. $approve_update['time'] = $approve_time;
  148. $approve_update['time_desc'] = get_stay_time($approve_time);
  149. EvectionApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  150. $Info_up = [];
  151. // 审批流程数 + 1
  152. $Info_up['cur_num'] = $approve_info['cur_num'] + 1;
  153. if($approve_info['flow'] < $approve_info['approve_num']){
  154. // 更新下一级审批记录状态
  155. 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')]);
  156. if($status == 3) $Info_up['status'] = 3;
  157. } else if($approve_info['flow'] == $approve_info['approve_num']) {
  158. $Info_up['status'] = $status;
  159. }
  160. EvectionInfo::where('id',$approve_info['id'])->update($Info_up);// 更新用车申请状态
  161. Db::commit();
  162. }catch (\Exception $e) {
  163. Db::rollback();
  164. static::$ret_val = false;
  165. static::$msg = $e->getMessage();
  166. }
  167. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  168. }
  169. /**
  170. * 呈批申请审批
  171. * @param $apply_id 申请记录id
  172. * @param $user_id 审批会员
  173. * @param $status 审批状态
  174. * @param $remark 审批备注
  175. * @return array
  176. */
  177. public static function approveOffer($apply_id,$user_id,$status,$remark)
  178. {
  179. Db::startTrans();
  180. try {
  181. $apply_info = OfferInfo::where('id',$apply_id)->find()->toArray();
  182. $approve_info =OfferApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  183. if(empty($approve_info)) throw new Exception('没有审核权限');
  184. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  185. $approve_info = $approve_info->toArray();
  186. if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
  187. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  188. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  189. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  190. $approve_update = [];
  191. $approve_update['status'] = $status;
  192. $approve_update['remark'] = $remark;
  193. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  194. $approve_time = time() - strtotime($approve_info['start_time']);
  195. $approve_update['time'] = $approve_time;
  196. $approve_update['time_desc'] = get_stay_time($approve_time);
  197. OfferApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  198. $Info_up = [];
  199. // 审批流程数 + 1
  200. $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
  201. if($approve_info['flow'] < $apply_info['approve_num']){
  202. // 更新下一级审批记录状态
  203. 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')]);
  204. if($status == 3) $Info_up['status'] = 3;
  205. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  206. $Info_up['status'] = $status;
  207. }
  208. OfferInfo::where('id',$apply_info['id'])->update($Info_up);// 更新用车申请状态
  209. Db::commit();
  210. }catch (\Exception $e) {
  211. Db::rollback();
  212. static::$ret_val = false;
  213. static::$msg = $e->getMessage();
  214. }
  215. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  216. }
  217. /**
  218. * 维修申请审批
  219. * @param $apply_id 申请记录id
  220. * @param $user_id 审批会员
  221. * @param $status 审批状态
  222. * @param $remark 审批备注
  223. * @return array
  224. */
  225. public static function approveMaintain($apply_id,$user_id,$status,$remark)
  226. {
  227. Db::startTrans();
  228. try {
  229. $apply_info = MaintainInfo::where('id',$apply_id)->find()->toArray();
  230. $approve_info =MaintainApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  231. if(empty($approve_info)) throw new Exception('没有审核权限');
  232. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  233. $approve_info = $approve_info->toArray();
  234. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  235. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  236. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  237. $approve_update = [];
  238. $approve_update['status'] = $status;
  239. $approve_update['remark'] = $remark;
  240. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  241. $approve_time = time() - strtotime($approve_info['start_time']);
  242. $approve_update['time'] = $approve_time;
  243. $approve_update['time_desc'] = get_stay_time($approve_time);
  244. MaintainApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  245. $Info_up = [];
  246. // 审批流程数 + 1
  247. $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
  248. if($approve_info['flow'] < $apply_info['approve_num']){
  249. // 更新下一级审批记录状态
  250. 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')]);
  251. if($status == 3) $Info_up['status'] = 3;
  252. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  253. $Info_up['status'] = $status;
  254. }
  255. MaintainInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
  256. Db::commit();
  257. }catch (\Exception $e) {
  258. Db::rollback();
  259. static::$ret_val = false;
  260. static::$msg = $e->getMessage();
  261. }
  262. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  263. }
  264. /**
  265. * 学校文件
  266. * @param $apply_id 申请记录id
  267. * @param $user_id 审批会员
  268. * @param $status 审批状态
  269. * @param $remark 审批备注
  270. * @return array
  271. */
  272. public static function approveDocument($apply_id,$user_id,$status,$remark)
  273. {
  274. Db::startTrans();
  275. try {
  276. $apply_info =DocumentInfo::where('id',$apply_id)->find()->toArray();
  277. $approve_info =DocumentApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  278. if(empty($approve_info)) throw new Exception('没有审核权限');
  279. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  280. $approve_info = $approve_info->toArray();
  281. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  282. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  283. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  284. $approve_update = [];
  285. $approve_update['status'] = $status;
  286. $approve_update['remark'] = $remark;
  287. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  288. $approve_time = time() - strtotime($approve_info['start_time']);
  289. $approve_update['time'] = $approve_time;
  290. $approve_update['time_desc'] = get_stay_time($approve_time);
  291. DocumentApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  292. $Info_up = [];
  293. // 审批流程数 + 1
  294. $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
  295. if($approve_info['flow'] < $apply_info['approve_num']){
  296. // 更新下一级审批记录状态
  297. 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')]);
  298. if($status == 3) $Info_up['status'] = 3;
  299. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  300. $Info_up['status'] = $status;
  301. }
  302. DocumentInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
  303. Db::commit();
  304. }catch (\Exception $e) {
  305. Db::rollback();
  306. static::$ret_val = false;
  307. static::$msg = $e->getMessage();
  308. }
  309. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  310. }
  311. /**
  312. * 合同审批
  313. * @param $apply_id 申请记录id
  314. * @param $user_id 审批会员
  315. * @param $status 审批状态
  316. * @param $remark 审批备注
  317. * @return array
  318. */
  319. public static function approveContract($apply_id,$user_id,$status,$remark)
  320. {
  321. Db::startTrans();
  322. try {
  323. $apply_info =ContractInfo::where('id',$apply_id)->find()->toArray();
  324. $approve_info =ContractApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->find();
  325. if(empty($approve_info)) throw new Exception('没有审核权限');
  326. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  327. $approve_info = $approve_info->toArray();
  328. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  329. if($approve_info['status'] != 1) throw new Exception('该记录已审核');
  330. if($apply_info['status'] != 1) throw new Exception('该记录已审核或已取消');
  331. $approve_update = [];
  332. $approve_update['status'] = $status;
  333. $approve_update['remark'] = $remark;
  334. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  335. $approve_time = time() - strtotime($approve_info['start_time']);
  336. $approve_update['time'] = $approve_time;
  337. $approve_update['time_desc'] = get_stay_time($approve_time);
  338. ContractApprove::where('info_id',$apply_id)->where('approve_user',$user_id)->where('approve_type',1)->update($approve_update);// 更新审批记录
  339. $Info_up = [];
  340. // 审批流程数 + 1
  341. $Info_up['cur_num'] = $apply_info['cur_num'] + 1;
  342. if($approve_info['flow'] < $apply_info['approve_num']){
  343. // 更新下一级审批记录状态
  344. 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')]);
  345. if($status == 3) $Info_up['status'] = 3;
  346. } else if($approve_info['flow'] == $apply_info['approve_num']) {
  347. $Info_up['status'] = $status;
  348. }
  349. ContractInfo::where('id',$apply_info['id'])->update($Info_up);// 更新申请状态
  350. Db::commit();
  351. }catch (\Exception $e) {
  352. Db::rollback();
  353. static::$ret_val = false;
  354. static::$msg = $e->getMessage();
  355. }
  356. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  357. }
  358. }