12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067 |
- <?php
- namespace app\common\validate;
- use think\Db;
- use think\Validate;
- class Apply extends Validate{
- protected $rule = [
- 'approval_id' => 'require|gt:0',
- 'org_id' => 'require|gt:0',
- 'user_id' => 'require|gt:0',
- 'title' => 'require',
- 'approval_required' => 'require|in:0,1',
- 'approval_visible' => 'require|in:0,1',
- 'form_json' => 'require|checkFormJson',
- 'flow_json' => 'require|checkFlowJson',
- ];
- protected $message = [
- 'approval_id.require' => '参数错误',
- 'approval_id.gt' => '参数错误',
- 'org_id.require' => '参数错误',
- 'org_id.gt' => '参数错误',
- 'user_id.require' => '参数错误',
- 'user_id.gt' => '参数错误',
- 'title.require' => '参数错误',
- ];
- protected $scene = [
- ];
- protected function checkFlowJson($value,$rule,$data=[])
- {
- $flowjson = json_decode($value,true);
- if(!$flowjson){
- return '参数错误';
- }
- // 检查是否有审批人
- $except = [1,5,9];
- foreach ($flowjson as $k=>$v){
- if(!in_array($v['type'],$except) && empty($v['userList'])){
- if($v['type'] == 3){
- return $v['name'].'没有抄送人员';
- }else{
- return $v['name'].'没有审批人员';
- }
- }
- }
- return true;
- }
- protected function checkFormJson($value,$rule,$data=[])
- {
- $formjson = json_decode($value,true);
- if(!$formjson){
- return '参数错误';
- }
- // 检查必填参数
- foreach ($formjson as $k=>$v){
- if(isset($v['defaultImportant']) && $v['defaultImportant']){
- if(empty($v['values']) && empty($v['values2']) && !empty($data['unique'])){
- return $v['defaultLable'].'必填';
- }else if(!empty($data['unique']) && !empty($v['components'])){
- foreach ($v['components'] as $kk=>$vv){
- if(empty($vv['values']) && empty($vv['values2'])){
- return $vv['defaultLable'].'必填';
- }
- }
- }
- }
- if($v['componentName'] == 'tableareafield' && !empty($v['components'])){ // 区域
- foreach ($v['components'] as $kk=>$vv){
- if(isset($v['defaultImportant']) && $v['defaultImportant'] && empty($vv['values']) && empty($vv['values2'])){
- return $vv['defaultLable'].'必填';
- }
- }
- } else if($v['componentName'] == 'tablefield'){ // 明细
- if($v['values2']){
- foreach ($v['values2'] as $kk=>$vv){
- foreach ($vv as $key=>$val){
- if(isset($v['defaultImportant']) && $v['defaultImportant'] && empty($vv['values']) && empty($vv['values2'])){
- return $vv['defaultLable'].'必填';
- }
- }
- }
- }
- }
- }
- // 高级组件条件检查
- switch ($data['advanced']){
- case 1: // 请假
- return $this->checkLeave($data,$formjson);
- break;
- case 3: // 合同会签
- return $this->checkContract($data,$formjson);
- break;
- case 4: // 追加合同
- return $this->checkContractAppend($data,$formjson);
- break;
- case 5: // 合同支付,只能处理一个
- return $this->checkContractPay($data,$formjson);
- break;
- case 6: // 会议室预定
- return $this->checkMeetingRoom($data,$formjson);
- break;
- case 7: // 合同收款,只能处理一个
- return $this->checkContractGet($data,$formjson);
- break;
- case 8: // 销假
- return $this->checkLeaveTerminate($data,$formjson);
- break;
- case 9: // 离京报告
- return $this->checkLeaveBj($data,$formjson);
- break;
- case 10: // 办公物品
- return $this->checkOffice($data,$formjson);
- break;
- case 11: // 车辆
- // return $this->checkCar($data,$formjson);
- return true;
- break;
- case 12: // 离职/退休
- return $this->checkDeparture($data,$formjson);
- break;
- case 13: // 资产领取
- return $this->checkAsset($data,$formjson);
- break;
- case 14: // 资产退库
- return $this->checkAssetWithdraw($data,$formjson);
- break;
- case 15: // 资产维修
- return $this->checkAssetRepair($data,$formjson);
- break;
- case 16: // 资产处置
- return $this->checkAssetDisposal($data,$formjson);
- break;
- case 17: // 预算
- return $this->checkBudget($data,$formjson);
- break;
- case 18: // 用印
- return true;
- break;
- case 19: // 中心发文
- return $this->checkPost($data,$formjson);
- break;
- case 20: // 因私出国
- return true;
- case 21: // 日常开支
- return $this->checkOverhead($data,$formjson);
- break;
- default:
- return true;
- break;
- }
- }
- private function checkOverhead($data,$formjson){
- $type = 0;
- $bdid = 0;
- $money = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddoverheadfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $money = isset($val['money'])&&!empty($money)?$val['money']:0;
- break;
- case '1':
- $typetext = isset($val['values'])?$val['values']:'预算内';
- $type = $typetext == '预算内'?1:2;
- break;
- case '2':
- $val['values'] = isset($val['values'])?$val['values']:'';
- if($val['values']){
- $d = json_decode($val['values'],true);
- $bdid = $d['id'];
- }else{
- $bdid = 0;
- }
- break;
- }
- }
- break;
- }
- }
- if($type == 1){ //预算内
- $bdinfo = Db::name('budget_dep')->where('id',$bdid)->find();
- if(!$bdinfo){
- return '预算项记录不存在';
- }
- if($bdinfo['dep_id'] != $data['dep_id']){
- return '预算部门与预算项不一致';
- }
- if($bdinfo['real_money'] < $money){
- return '预算剩余小于支出金额';
- }
- $info = Db::name('budget_pay')
- ->where('del',0)
- ->where('status',0)
- ->where('type',1)
- ->where('dep_id',$data['dep_id'])
- ->where('apply_status','<>',2)
- ->where('bdid',$bdid)
- ->find();
- if($info){
- return '该部门有未处理的请款单';
- }
- }
- return true;
- }
- private function checkPost($data,$formjson){
- $values = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddpostfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $values = isset($val['values'])?$val['values']:'';
- break;
- }
- }
- break;
- }
- }
- if($values == '发改基建' || $values == '发改基人'){
- return true;
- }
- $val = explode('[',$values);
- $type = $val[0];
- $val2 = explode(']',$val[1]);
- $sn = $val2[0];
- // 检查该编号是否可以申请
- $ret = Db::name('post_apply')
- ->where('year',date('Y'))
- ->where('type',$type)
- ->where('sn',$sn)
- ->where('status','in','0,1')
- ->find();
- if($ret){
- return '该编号正在审核中,不能提交申请';
- }
- return true;
- }
- private function checkBudget($data,$formjson){
- $values = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddbudgetfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $values = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $values = json_decode($values,true);
- $items = $values['items'];
- $budgetId = $items[0]['budgetId'];
- $depId = $data['dep_id'];
- $companyId = $items[0]['companyId'];
- //检查是否有权限提交
- // $budget = Db::name('budget_auth')
- // ->alias('bd')
- // ->join('budget b','b.id = bd.budget_id')
- // ->where('b.del',0)
- // ->where('bd.dep_id',$depId)
- // ->where('bd.budget_id',$budgetId)
- // ->field('b.*')
- // ->order('b.id desc')
- // ->find();
- //检查是否有预算
- $budget = Db::name('budget')->where('id',$budgetId)->where('del',0)->find();
- if(!$budget){
- return '预算不存在';
- }
- if($budget['enable'] == 0){
- return '预算未发布,不能申请';
- }
- $curTime = date('Y-m-d');
- if($budget['start_time'] > $curTime || $budget['end_time'] < $curTime){
- return '预算申请不在要求时间范围内';
- }
- // 检查是否有权限提交
- $baret = Db::name('budget_auth')
- ->where('type',2)
- ->where('dep_id',$data['user_id'])
- ->where('budget_id',$budgetId)
- ->find();
- $badret = Db::name('budget_auth')
- ->where('type',0)
- ->where('dep_id',$depId)
- ->where('budget_id',$budgetId)
- ->find();
- if(!$baret && !$badret){
- return '无权限申请预算';
- }
- // 检查本人是否已经提交过申请
- $ret = Db::name('budget_apply')
- ->where('budget_id',$budgetId)
- ->where('company_id',$companyId)
- ->where('user_id',$data['user_id'])
- ->where('status','in','0,1')
- ->find();
- if($ret){
- return '您已提交过该类型的预算申请';
- }
- return true;
- }
- private function checkAssetDisposal($data,$formjson){
- $items = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddassetdisposalfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $items = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $ids = [];
- $items = json_decode($items,true);
- $useids = model('AssetItems')->itemsuse($data['org_id']);
- foreach ($items as $k=>$v){
- if(in_array($v['id'],$useids)){
- return '编号:'.$v['sn'].'的资产已被使用';
- }else{
- $ids[] = $v['id'];
- $info = Db::name('asset_items')->where('id',$v['id'])->find();
- if(!$info || !in_array($info['enable'],[1,2])){
- return '编号:'.$v['sn'].'的资产不存在或已被使用';
- }
- }
- }
- return true;
- }
- private function checkAssetRepair($data,$formjson){
- $items = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddassetrepairfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $items = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $ids = [];
- $items = json_decode($items,true);
- $useids = model('AssetItems')->itemsuse($data['org_id']);
- foreach ($items as $k=>$v){
- if(in_array($v['id'],$useids)){
- return '编号:'.$v['sn'].'的资产已被使用';
- }else{
- $ids[] = $v['id'];
- $info = Db::name('asset_items')->where('id',$v['id'])->find();
- if(!$info || !in_array($info['enable'],[1,2])){
- return '编号:'.$v['sn'].'的资产不存在或已被使用';
- }
- }
- }
- return true;
- }
- private function checkAssetWithdraw($data,$formjson){
- $items = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddassetwithdrawfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $items = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $ids = [];
- $items = json_decode($items,true);
- $useids = model('AssetItems')->itemsuse($data['org_id']);
- foreach ($items as $k=>$v){
- if(in_array($v['id'],$useids)){
- return '编号:'.$v['sn'].'的资产已被使用';
- }else{
- $ids[] = $v['id'];
- $info = Db::name('asset_items')->where('id',$v['id'])->find();
- if(!$info || $info['enable'] != 2){
- return '编号:'.$v['sn'].'的资产不存在或已被使用';
- }
- if($info['user_id'] != $data['user_id']){
- return '编号:'.$v['sn'].'的资产不是您名下的资产,不能退库';
- }
- }
- }
- return true;
- }
- private function checkAsset($data,$formjson){
- $items = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddassetfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $items = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $ids = [];
- $items = json_decode($items,true);
- $useids = model('AssetItems')->itemsuse($data['org_id']);
- foreach ($items as $k=>$v){
- if(in_array($v['id'],$useids)){
- return '编号:'.$v['sn'].'的资产已被使用';
- }else{
- $ids[] = $v['id'];
- $info = Db::name('asset_items')->where('id',$v['id'])->find();
- if(!$info || $info['enable'] != 1){
- return '编号:'.$v['sn'].'的资产不存在或已被使用';
- }
- }
- }
- return true;
- }
- private function checkDeparture($data,$formjson){
- // 检查用户状态
- $userinfo = Db::name('user_info')->where('user_id',$data['user_id'])->field('is_working')->find();
- if(!$userinfo){
- return '用户不存在';
- }
- if(in_array($userinfo['is_working'],[3,4])){
- return '用户此状态不能提交此申请单';
- }
- // 检查是否已提交过还未处理的审批单
- $ret = Db::name('apply')
- ->where('user_id',$data['user_id'])
- ->where('status',1)
- ->where('advanced',12)
- ->where('org_id',$data['org_id'])
- ->find();
- if($ret){
- return '你曾经的审批还未处理,请勿重复提交';
- }
- return true;
- }
- // 弃用,不用再验证
- private function checkCar($data,$formjson){
- $start = '';
- $end = '';
- $carId = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddcarfield'){
- foreach ($v['components'] as $key=>$val){
- $val['values2'] = isset($val['values2'])?$val['values2']:[];
- $val['values'] = isset($val['values'])?$val['values']:'';
- switch ($val['idx']){
- case '2':
- $start = $val['values2'][0];
- $end = $val['values2'][1];
- break;
- case '4':
- if($val['values']){
- $d = json_decode($val['values'],true);
- $carId = $d['id'];
- }
- break;
- }
- }
- break;
- }
- }
- if($carId > 0){
- // 检查当前时间段内该车辆是否有预定
- $ret = Db::name('car_record')
- ->where('start_time','<=',$end)
- ->where('end_time','>=',$start)
- ->where('car_id',$carId)
- ->where('status','in','0,1')
- ->where('org_id',$data['org_id'])
- ->find();
- if($ret){
- return '该时间段与别的预约时间上有冲突';
- }
- }
- return true;
- }
- private function checkOffice($data,$formjson){
- $items = [];
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddofficefield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $items = !empty($val['values'])?json_decode($val['values'],true):[];
- break;
- }
- }
- break;
- }
- }
- if(!$items){
- return '未选择办公物品';
- }
- foreach ($items as $k=>$v){ // 检查库存
- $info = Db::name('office_items')
- ->where('enable',1)
- ->where('del',0)
- ->where('id',$v['id'])
- ->find();
- if(!$info){
- return $v['title']."不存在或已下架";
- }
- if($info['last_nums'] < $v['snums']){
- return $v['title']."库存不足";
- }
- }
- return true;
- }
- private function checkLeave($data,$formjson){
- $start = '';
- $end = '';
- $leavetype = 0;
- $isleavebj = '否'; // 默认不离京
- $lbjstart = '';
- $lbjend = '';
- $address = '';
- $type = 1; // 1=减去节假日 0=不减节假日
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddleavefield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $leave = json_decode($val['values'],true);
- $leavetype = $leave['id'];
- break;
- case '1':
- $start = $val['values'];
- break;
- case '2':
- $end = $val['values'];
- break;
- case '3':
- $isleavebj = isset($val['values'])?$val['values']:'否';
- break;
- case '4':
- $lbjstart = isset($val['values'])?$val['values']:'';
- break;
- case '5':
- $lbjend = isset($val['values'])?$val['values']:'';
- break;
- case '6':
- $address = isset($val['values'])?$val['values']:'';
- break;
- }
- }
- break;
- }
- }
- $info = Db::name('attendance_leave_type')
- ->where('id',$leavetype)
- ->where('enable',1)
- ->where('del',0)
- ->find();
- if(!$info){
- return '请假类型不存在';
- }
- if($leavetype == 6){ // 产假,不减节假日
- $type = 0;
- }
- // 计算请假天数
- $days = calculate_leave($start,$end,$type);
- if($days <= 0){
- return '请假日期不正确';
- }
- if($leavetype == 3){ // 年假,暂时只有年假限制天数
- $userleave = Db::name('user_info')->where('user_id',$data['user_id'])->value('annual_leave');
- if($days > $userleave){
- return '年假余额不足';
- }
- }
- // if($leavetype == 1 && time() >= strtotime('2022-01-01')){ // 自2022-01-01日期事假也扣除年假
- // $userleave = Db::name('user_info')->where('user_id',$data['user_id'])->value('annual_leave');
- // if($days > $userleave){
- // return '年假余额不足';
- // }
- // }
- if($isleavebj == '是'){
- if(!$lbjstart || !$lbjend){
- return '离京必须填写离京及返京日期';
- } else if(!$address){
- return '离京必须填写目的地';
- }
- // 计算请假天数
- $ljdays = calculate_leave($lbjstart,$lbjend,0);
- if($ljdays <= 0){
- return '离京日期不正确';
- }
- }
- //检查该时间范围是否已有请假记录
- $starts = explode(' ',$start);
- $ends = explode(' ',$end);
- if($starts[1] == '上午'){
- $startTime = $starts[0].' 00:00:00';
- }else{
- $startTime = $starts[0].' 12:00:00';
- }
- if($ends[1] == '上午'){
- $endTime = $ends[0].' 11:59:59';
- }else{
- $endTime = $ends[0].' 23:59:59';
- }
- $map1 = [
- ['cur_days','>',0],
- ['status','in','0,1'],
- ['org_id','=',$data['org_id']],
- ['user_id','=',$data['user_id']],
- ['start_time','>=',$startTime],
- ['start_time','<=',$endTime]
- ];
- $map2 = [
- ['cur_days','>',0],
- ['status','in','0,1'],
- ['org_id','=',$data['org_id']],
- ['user_id','=',$data['user_id']],
- ['end_time','>=',$startTime],
- ['end_time','<=',$endTime]
- ];
- $ret = Db::name('attendance_leave')
- ->whereOr([ $map1, $map2])
- ->find();
- if($ret){
- return '该时间段内已有请假记录';
- }
- return true;
- }
- private function checkLeaveBj($data,$formjson){
- $start = '';
- $end = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddleavebjfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $start = $val['values'];
- break;
- case '1':
- $end = $val['values'];
- break;
- }
- }
- break;
- }
- }
- // 计算请假天数
- $days = calculate_leave($start,$end,0);
- if($days <= 0){
- return '离京日期不正确';
- }
- //检查该时间范围是否已有请假记录
- $starts = explode(' ',$start);
- $ends = explode(' ',$end);
- if($starts[1] == '上午'){
- $startTime = $starts[0].' 00:00:00';
- }else{
- $startTime = $starts[0].' 12:00:00';
- }
- if($ends[1] == '上午'){
- $endTime = $ends[0].' 11:59:59';
- }else{
- $endTime = $ends[0].' 23:59:59';
- }
- $map1 = [
- ['status','in','0,1'],
- ['org_id','=',$data['org_id']],
- ['user_id','=',$data['user_id']],
- ['start_time','>=',$startTime],
- ['start_time','<=',$endTime]
- ];
- $map2 = [
- ['status','in','0,1'],
- ['org_id','=',$data['org_id']],
- ['user_id','=',$data['user_id']],
- ['end_time','>=',$startTime],
- ['end_time','<=',$endTime]
- ];
- $ret = Db::name('leave_bj')
- ->whereOr([ $map1, $map2])
- ->find();
- if($ret){
- return '该时间段内已有离京报告记录';
- }
- return true;
- }
- private function checkContractAppend($data,$formjson){
- //获取关联合同
- $parent_apply_id = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddaddcontractfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '10':
- $parent_apply_id = $val['values2'][0]['id'];
- break;
- }
- }
- break;
- }
- }
- $info = Db::name('contract')
- ->where('apply_id',$parent_apply_id)
- ->where('status',1)
- ->where('type',0)
- ->find();
- if(!$info){
- return '关联的审批单不是合同';
- }
- return true;
- }
- private function checkContract($data,$formjson){
- //获取关联合同
- $companyId = 0;
- $programId = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddjjcontractfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $company = json_decode($val['values'],true);
- $companyId = $company['id'];
- break;
- case '1':
- $program = json_decode($val['values'],true);
- $programId = $program['id'];
- break;
- }
- }
- break;
- }
- }
- $info = Db::name('program')
- ->where('id',$programId)
- ->find();
- if(!$info){
- return '项目不存在';
- }
- if($info['company_id'] != $companyId){
- return '项目与单位不关联,请重新选择';
- }
- return true;
- }
- private function checkContractPay($data,$formjson){
- //获取关联合同
- $pay_apply_id = 0;
- $money = 0;
- $last = 0;
- $attachment = 0;
- $completion = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddpaycontractfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $pay_apply_id = $val['values2'][0]['id'];
- break;
- case '1':
- $money = $val['values'];
- break;
- case '3':
- $last = $val['values'] == '是'?1:0;
- break;
- case '5':
- $attachment = empty($val['values'])?0:1;
- break;
- case '6':
- $completion = isset($val['values'])?$val['values']:0;
- break;
- }
- }
- break;
- }
- }
- if($completion > 0 && !$attachment){
- return '填写竣工结算金额,必须上传附件说明';
- }
- $info = Db::name('contract')
- ->where('apply_id',$pay_apply_id)
- ->where('status',1)
- ->where('ispay',1)
- ->find();
- if(!$info){
- return '关联的审批单不是付款合同';
- }
- if($info['finish'] == 1){
- return '合同已结清';
- }
- $paymoney = $info['pay_money'] + $money;
- if($last == 1 && $paymoney != $info['money'] && $attachment != 1){ // 是尾款
- return '结算价与合同价不同,必须上传附件说明';
- }
- $ret = Db::name('contract_pay')
- ->where('ispay',1)
- ->where('status',0)
- ->where('pay_apply_id',$pay_apply_id)
- ->find();
- if($ret){
- return '本合同还有未处理的付款,请处理后再提交';
- }
- return true;
- }
- private function checkContractGet($data,$formjson){
- $pay_apply_id = 0;
- $money = 0;
- $last = 0;
- $attachment = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddgetcontractfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $pay_apply_id = $val['values2'][0]['id'];
- break;
- case '1':
- $money = $val['values'];
- break;
- case '3':
- $last = $val['values'] == '是'?1:0;
- break;
- case '5':
- $attachment = empty($val['values'])?0:1;
- break;
- }
- }
- break;
- }
- }
- $info = Db::name('contract')
- ->where('apply_id',$pay_apply_id)
- ->where('status',1)
- ->where('ispay',2)
- ->find();
- if(!$info){
- return '关联的审批单不是收款合同';
- }
- if($info['finish'] == 1){
- return '合同已结清';
- }
- $paymoney = $info['pay_money'] + $money;
- if($last == 1 && $paymoney != $info['money'] && $attachment != 1){ // 是尾款
- return '结算价与合同价不同,必须上传附件说明';
- }
- $ret = Db::name('contract_pay')
- ->where('status',0)
- ->where('ispay',2)
- ->where('pay_apply_id',$pay_apply_id)
- ->find();
- if($ret){
- return '本合同还有未处理的收款,请处理后再提交';
- }
- return true;
- }
- private function checkLeaveTerminate($data,$formjson){
- $parent_apply_id = 0;
- $days = 0;
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddleaveterminatefield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $parent_apply_id = $val['values2'][0]['id'];
- break;
- case '1':
- $days = $val['values'];
- break;
- }
- }
- break;
- }
- }
- if($days <= 0){
- return '销假天数必须大于0';
- }
- $info = Db::name('attendance_leave')
- ->where('apply_id',$parent_apply_id)
- ->where('status',1)
- ->find();
- if(!$info){
- return '关联的审批单不是请假单';
- }
- if($info['user_id'] != $data['user_id']){
- return '只能选择自己申请的请假单';
- }
- if($info['cur_days'] < $days){
- return '销假天数不能大于请假天数';
- }
- $ret = Db::name('attendance_leave_terminate')
- ->where('status',0)
- ->where('parent_apply_id',$parent_apply_id)
- ->find();
- if($ret){
- return '还有未处理的销假申请,请处理后再提交';
- }
- return true;
- }
- private function checkMeetingRoom($data,$formjson){
- $start = '';
- $end = '';
- $meetingRoomId = 0;
- $sn = '';
- $options = [];
- $ty = '';
- $hf = '';
- foreach ($formjson as $k=>$v){
- if($v['componentName'] == 'ddmeetingroomfield'){
- foreach ($v['components'] as $key=>$val){
- $val['values2'] = isset($val['values2'])?$val['values2']:[];
- $val['values'] = isset($val['values'])?$val['values']:'';
- switch ($val['idx']){
- case '2':
- $start = $val['values2'][0];
- $end = $val['values2'][1];
- break;
- case '1':
- $d = json_decode($val['values'],true);
- $meetingRoomId = $d['id'];
- break;
- case '0':
- $sn = isset($val['values'])?$val['values']:'';
- break;
- case '6':
- $options = $val['values2'];
- break;
- case '9':
- $ty = isset($val['values'])?$val['values']:'';
- break;
- case '7':
- $hf = isset($val['values'])?$val['values']:'';
- break;
- }
- }
- break;
- }
- }
- if($sn){ // sn不为空,需要检查,是否已存在
- $ret = Db::name('meeting_room_book')
- ->where('sn',$sn)
- ->find();
- if($ret){
- return '编号已存在,请修改后提交';
- }
- }
- if(in_array('投影',$options)&&!$ty){
- return '未输入会议议题';
- }
- if(in_array('横幅',$options)&&!$hf){
- return '未输入横幅文字';
- }
- $start = date('Y-m-d H:i:s',strtotime($start));
- $end = date('Y-m-d H:i:s',strtotime($end));
- // 检查时间是否有冲突
- $ret = Db::name('meeting_room_book')
- ->where('meeting_room_id',$meetingRoomId)
- ->where('status','in','0,1')
- ->where('enable',1)
- ->where('start_time','<=',$end)
- ->where('end_time','>=',$start)
- ->find();
- if($ret){
- return '该时间段与别的预约时间上有冲突';
- }
- return true;
- }
- }
|